From: Michael Niedermayer Date: Mon, 9 Mar 2015 19:16:07 +0000 (+0100) Subject: Merge commit '9f25a109922da43c1f81273a431d3b40cb5a785a' X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=2e8020c66ccb51ca8dab47cd4fcb15f5c0277bbf;p=ffmpeg Merge commit '9f25a109922da43c1f81273a431d3b40cb5a785a' * commit '9f25a109922da43c1f81273a431d3b40cb5a785a': matroskaenc: Also validate chapter end time Merged-by: Michael Niedermayer --- 2e8020c66ccb51ca8dab47cd4fcb15f5c0277bbf diff --cc libavformat/matroskaenc.c index 0051b9f509d,f4d2665c2bf..1c0e3abee82 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@@ -1074,14 -917,17 +1074,17 @@@ static int mkv_write_chapters(AVFormatC for (i = 0; i < s->nb_chapters; i++) { ebml_master chapteratom, chapterdisplay; AVChapter *c = s->chapters[i]; - int chapterstart = av_rescale_q(c->start, c->time_base, scale); - int chapterend = av_rescale_q(c->end, c->time_base, scale); + int64_t chapterstart = av_rescale_q(c->start, c->time_base, scale); + int64_t chapterend = av_rescale_q(c->end, c->time_base, scale); AVDictionaryEntry *t = NULL; - if (chapterstart < 0 || chapterstart > chapterend) + if (chapterstart < 0 || chapterstart > chapterend || chapterend < 0) { - av_log(s, AV_LOG_ERROR, "Invalid chapter start (%d) or end (%d).\n", ++ av_log(s, AV_LOG_ERROR, "Invalid chapter start (%"PRId64") or end (%"PRId64").\n", + chapterstart, chapterend); return AVERROR_INVALIDDATA; + } chapteratom = start_ebml_master(pb, MATROSKA_ID_CHAPTERATOM, 0); - put_ebml_uint(pb, MATROSKA_ID_CHAPTERUID, c->id); + put_ebml_uint(pb, MATROSKA_ID_CHAPTERUID, c->id + mkv->chapter_id_offset); put_ebml_uint(pb, MATROSKA_ID_CHAPTERTIMESTART, chapterstart); put_ebml_uint(pb, MATROSKA_ID_CHAPTERTIMEEND, chapterend); put_ebml_uint(pb, MATROSKA_ID_CHAPTERFLAGHIDDEN , 0);