[FFmpeg-cvslog] r10336 - trunk/libavformat/matroskaenc.c

conrad subversion
Wed Sep 5 02:24:01 CEST 2007


Author: conrad
Date: Wed Sep  5 02:24:01 2007
New Revision: 10336

Log:
Write the creation time


Modified:
   trunk/libavformat/matroskaenc.c

Modified: trunk/libavformat/matroskaenc.c
==============================================================================
--- trunk/libavformat/matroskaenc.c	(original)
+++ trunk/libavformat/matroskaenc.c	Wed Sep  5 02:24:01 2007
@@ -127,6 +127,18 @@ static void put_ebml_string(ByteIOContex
     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(AVFormatCont
     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




More information about the ffmpeg-cvslog mailing list