OSDN Git Service

avformat: Accept the ISO8601 separate format as input, too
authorMartin Storsjö <martin@martin.st>
Mon, 7 Nov 2011 22:12:09 +0000 (00:12 +0200)
committerMartin Storsjö <martin@martin.st>
Wed, 16 Nov 2011 09:22:43 +0000 (11:22 +0200)
This makes the function accept the format of creation_time
as output by demuxers (e.g. the mov demuxer), making the
creation timestamp stay intact if transcoding.

Signed-off-by: Martin Storsjö <martin@martin.st>
libavformat/utils.c

index dfcac20..b8262ec 100644 (file)
@@ -3943,9 +3943,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");