avformat/matroskaenc: Start new cluster if relative timestamp could not otherwise...
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 24 Jul 2014 16:19:50 +0000 (18:19 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 24 Jul 2014 16:19:50 +0000 (18:19 +0200)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/matroskaenc.c

index 4d3ffcd..bf917c6 100644 (file)
@@ -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) {