[FFmpeg-cvslog] avformat/matroskaenc: Start new cluster if relative timestamp could not otherwise be stored

Michael Niedermayer git at videolan.org
Thu Jul 24 18:26:47 CEST 2014


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Thu Jul 24 18:19:50 2014 +0200| [7923aa0fba6b7b55ebbe1af8b7620060f36a1133] | committer: Michael Niedermayer

avformat/matroskaenc: Start new cluster if relative timestamp could not otherwise be stored

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7923aa0fba6b7b55ebbe1af8b7620060f36a1133
---

 libavformat/matroskaenc.c |    8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
index 4d3ffcd..bf917c6 100644
--- a/libavformat/matroskaenc.c
+++ b/libavformat/matroskaenc.c
@@ -1709,6 +1709,14 @@ static int mkv_write_packet_internal(AVFormatContext *s, AVPacket *pkt, int add_
     }
     ts += mkv->tracks[pkt->stream_index].ts_offset;
 
+    if (mkv->cluster_pos != -1) {
+        int64_t cluster_time = ts - mkv->cluster_pts + mkv->tracks[pkt->stream_index].ts_offset;
+        if ((int16_t)cluster_time != cluster_time) {
+            av_log(s, AV_LOG_DEBUG, "Starting new cluster due to timestamp\n");
+            mkv_start_new_cluster(s, pkt);
+        }
+    }
+
     if (!s->pb->seekable) {
         if (!mkv->dyn_bc) {
             if ((ret = avio_open_dyn_buf(&mkv->dyn_bc)) < 0) {



More information about the ffmpeg-cvslog mailing list