[3/3] avformat: Accept the ISO8601 separate format as input, too

Message ID 1320704369-97079-3-git-send-email-martin@martin.st
State Committed
Commit 18579f08e73d8b072952b7e388c55ab407db0ec7
Headers show

Commit Message

Martin Storsjö Nov. 7, 2011, 10:19 p.m.
This makes the function accept the format of creation_time
as output by demuxers (e.g. the mov demuxer), fixing keeping
the creation timestamp intact if transcoding.
---
 libavformat/utils.c |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)

Comments

Anton Khirnov Nov. 16, 2011, 9:17 a.m. | #1
On Tue,  8 Nov 2011 00:19:29 +0200, Martin Storsjö <martin@martin.st> wrote:
> This makes the function accept the format of creation_time
> as output by demuxers (e.g. the mov demuxer), fixing keeping
> the creation timestamp intact if transcoding.
> ---

Ok.

Patch

diff --git a/libavformat/utils.c b/libavformat/utils.c
index 0acbc59..dcd06e1 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -3941,9 +3941,14 @@  void ff_make_absolute_url(char *buf, int size, const char *base,
 int64_t ff_iso8601_to_unix_time(const char *datestr)
 {
 #if HAVE_STRPTIME
-    struct tm time = {0};
-    strptime(datestr, "%Y - %m - %dT%T", &time);
-    return av_timegm(&time);
+    struct tm time1 = {0}, time2 = {0};
+    char *ret1, *ret2;
+    ret1 = strptime(datestr, "%Y - %m - %d %T", &time1);
+    ret2 = strptime(datestr, "%Y - %m - %dT%T", &time2);
+    if (ret2 && !ret1)
+        return av_timegm(&time2);
+    else
+        return av_timegm(&time1);
 #else
     av_log(NULL, AV_LOG_WARNING, "strptime() unavailable on this system, cannot convert "
                                  "the date string.\n");