diff options
author | Marton Balint <cus@passwd.hu> | 2018-12-22 20:02:09 +0100 |
---|---|---|
committer | Marton Balint <cus@passwd.hu> | 2018-12-25 20:16:29 +0100 |
commit | 70c86deb8efe0749ba2b2ddfb709ba1409195cb4 (patch) | |
tree | 98092a164b45657f4b71b040a5e12674d4a88412 | |
parent | 02935c2c93e8e1691c1d903ef96b00b3facb454a (diff) | |
download | ffmpeg-70c86deb8efe0749ba2b2ddfb709ba1409195cb4.tar.gz |
avformat/mxfenc: support writing subsecond precision timestamps
Signed-off-by: Marton Balint <cus@passwd.hu>
-rw-r--r-- | libavformat/mxfenc.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c index 5e7bd212dc..032ee3bf3d 100644 --- a/libavformat/mxfenc.c +++ b/libavformat/mxfenc.c @@ -2332,8 +2332,9 @@ static int mxf_parse_mpeg2_frame(AVFormatContext *s, AVStream *st, return !!sc->codec_ul; } -static uint64_t mxf_parse_timestamp(time_t timestamp) +static uint64_t mxf_parse_timestamp(int64_t timestamp64) { + time_t timestamp = timestamp64 / 1000000; struct tm tmbuf; struct tm *time = gmtime_r(×tamp, &tmbuf); if (!time) @@ -2343,7 +2344,8 @@ static uint64_t mxf_parse_timestamp(time_t timestamp) (uint64_t) time->tm_mday << 32 | time->tm_hour << 24 | time->tm_min << 16 | - time->tm_sec << 8; + time->tm_sec << 8 | + (timestamp64 % 1000000) / 4000; } static void mxf_gen_umid(AVFormatContext *s) @@ -2580,7 +2582,7 @@ static int mxf_write_header(AVFormatContext *s) sc->order = AV_RB32(sc->track_essence_element_key+12); } - if (ff_parse_creation_time_metadata(s, ×tamp, 1) > 0) + if (ff_parse_creation_time_metadata(s, ×tamp, 0) > 0) mxf->timestamp = mxf_parse_timestamp(timestamp); mxf->duration = -1; |