From 7923aa0fba6b7b55ebbe1af8b7620060f36a1133 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Thu, 24 Jul 2014 18:19:50 +0200 Subject: avformat/matroskaenc: Start new cluster if relative timestamp could not otherwise be stored Signed-off-by: Michael Niedermayer --- libavformat/matroskaenc.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'libavformat/matroskaenc.c') diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 4d3ffcdaa4..bf917c66f4 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) { -- cgit v1.2.3