diff --git a/libavformat/demux.c b/libavformat/demux.c index 55085210de..516f286e19 100644 --- a/libavformat/demux.c +++ b/libavformat/demux.c @@ -1536,7 +1536,7 @@ static int read_frame_internal(AVFormatContext *s, AVPacket *pkt) if (sti->first_discard_sample && pkt->pts != AV_NOPTS_VALUE) { int64_t pts = pkt->pts - (is_relative(pkt->pts) ? RELATIVE_TS_BASE : 0); int64_t sample = ts_to_samples(st, pts); - int64_t duration = ts_to_samples(st, pkt->duration); + int64_t duration = FFMAX(st->codecpar->frame_size, ts_to_samples(st, pkt->duration)); int64_t end_sample = sample + duration; if (duration > 0 && end_sample >= sti->first_discard_sample && sample < sti->last_discard_sample)