[SCM] libav/experimental: Write the creation time

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 16:06:28 UTC 2013


The following commit has been merged in the experimental branch:
commit 80380a0f712aeedd84ee6be913307253b58012dd
Author: David Conrad <lessen42 at gmail.com>
Date:   Wed Sep 5 00:24:01 2007 +0000

    Write the creation time
    
    Originally committed as revision 10336 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
index 03302ec..703a05d 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

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list