@@ -42,6 +42,7 @@
#include "libavutil/aes_ctr.h"
#include "libavutil/sha.h"
#include "libavutil/timecode.h"
+#include "libavutil/parseutils.h"
#include "libavcodec/ac3tab.h"
#include "libavcodec/mpegaudiodecheader.h"
#include "avformat.h"
@@ -476,6 +477,28 @@ retry:
return ret;
}
str[str_size] = 0;
+ if (!strcmp(key, "com.apple.quicktime.creationdate")) {
+ struct tm *ptm, tmbuf;
+ int64_t timeval;
+ if (av_parse_time(&timeval, str, 0) >= 0) {
+ time_t timet = timeval / 1000000;
+ if (ptm = gmtime_r(&timet, &tmbuf)) {
+ if (str_size < 29) {
+ av_free(str);
+ str = av_malloc(29);
+ if (!str)
+ return AVERROR(ENOMEM);
+ }
+ strftime(str, str_size, "%Y-%m-%dT%H:%M:%S", ptm);
+ av_strlcatf(str, str_size, ".%06dZ", (int)(timeval % 1000000));
+ key = "creation_time";
+ }
+ }
+ } else if (!strcmp(key, "com.apple.quicktime.location.ISO6709")) {
+ key = "location";
+ } else if (!strncmp(key, "com.apple.quicktime.", 20)) {
+ key += 20;
+ }
}
c->fc->event_flags |= AVFMT_EVENT_FLAG_METADATA_UPDATED;
av_dict_set(&c->fc->metadata, key, str, 0);