diff options
author | David Conrad <lessen42@gmail.com> | 2007-09-05 00:24:01 +0000 |
---|---|---|
committer | David Conrad <lessen42@gmail.com> | 2007-09-05 00:24:01 +0000 |
commit | 80380a0f712aeedd84ee6be913307253b58012dd (patch) | |
tree | e5ddeb508c19f66fd006e47a2b2eaab1acced852 /libavformat/matroskaenc.c | |
parent | 5fd35c6e001b01695bb1b2c39f60fd66dea78260 (diff) | |
download | ffmpeg-80380a0f712aeedd84ee6be913307253b58012dd.tar.gz |
Write the creation time
Originally committed as revision 10336 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/matroskaenc.c')
-rw-r--r-- | libavformat/matroskaenc.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 03302ecf3f..703a05d734 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -127,6 +127,18 @@ static void put_ebml_string(ByteIOContext *pb, unsigned int elementid, const cha put_ebml_binary(pb, elementid, str, strlen(str)); } +// avtime is POSIX time, microseconds +static void put_ebml_date(ByteIOContext *pb, unsigned int elementid, int64_t avtime) +{ + // midnight Jan 1, 1970 in UNIX epoch, microseconds + const int64_t ebmlDateStart = 978307200ULL * 1000000; + int64_t ebmlTime = (avtime - ebmlDateStart) * 1000; + + put_ebml_id(pb, elementid); + put_ebml_size(pb, 8, 0); + put_be64(pb, ebmlTime); +} + // this reserves exactly the amount of space specified by size, which must be at least 2 static void put_ebml_void(ByteIOContext *pb, uint64_t size) { @@ -526,6 +538,7 @@ static int mkv_write_header(AVFormatContext *s) if (!(s->streams[0]->codec->flags & CODEC_FLAG_BITEXACT)) { put_ebml_string(pb, MATROSKA_ID_MUXINGAPP , LIBAVFORMAT_IDENT); put_ebml_string(pb, MATROSKA_ID_WRITINGAPP, LIBAVFORMAT_IDENT); + put_ebml_date (pb, MATROSKA_ID_DATEUTC , av_gettime() ); } // XXX: segment UID // reserve space for the duration |