]> granicus.if.org Git - handbrake/commitdiff
libav: fix mkv timestamps when initial_padding is set
authorJohn Stebbins <jstebbins.hb@gmail.com>
Wed, 15 Feb 2017 22:43:48 +0000 (15:43 -0700)
committerJohn Stebbins <jstebbins.hb@gmail.com>
Wed, 15 Feb 2017 22:43:48 +0000 (15:43 -0700)
initial_padding is used to inform libav muxers of initial encoder delay
duration.  When set for mkv it can be used to remove the silence samples
during playback.

contrib/ffmpeg/A09-mkv-block-ts-offset.patch [new file with mode: 0644]

diff --git a/contrib/ffmpeg/A09-mkv-block-ts-offset.patch b/contrib/ffmpeg/A09-mkv-block-ts-offset.patch
new file mode 100644 (file)
index 0000000..fdf8834
--- /dev/null
@@ -0,0 +1,12 @@
+diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
+index e951a0f..2fe6e0e 100644
+--- a/libavformat/matroskaenc.c
++++ b/libavformat/matroskaenc.c
+@@ -1461,6 +1461,7 @@ static void mkv_write_block(AVFormatContext *s, AVIOContext *pb,
+     uint8_t *data = NULL;
+     int offset = 0, size = pkt->size;
+     int64_t ts = mkv->tracks[pkt->stream_index].write_dts ? pkt->dts : pkt->pts;
++    ts += mkv->tracks[pkt->stream_index].ts_offset;
+     av_log(s, AV_LOG_DEBUG, "Writing block at offset %" PRIu64 ", size %d, "
+            "pts %" PRId64 ", dts %" PRId64 ", duration %" PRId64 ", flags %d\n",