From 573334da8242a9d1e80572b7bf0979200899565f Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Fri, 23 Oct 2015 03:22:43 +0200 Subject: [PATCH] avformat/mov: Autodetect mp3s which need parsing mp3 packets all have the same duration and number of samples if their duration indicated in the container varies then thats an indication that they are not 1 mp3 packet each. If this autodetection fails for some case then please contact us and provide a testcase. Fixes Ticket4938 --- libavformat/mov.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libavformat/mov.c b/libavformat/mov.c index 7c90d40f20..487fe0cbe7 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -3105,6 +3105,13 @@ static int mov_read_trak(MOVContext *c, AVIOContext *pb, MOVAtom atom) break; } + // If the duration of the mp3 packets is not constant, then they could need a parser + if (st->codec->codec_id == AV_CODEC_ID_MP3 + && sc->stts_count > 3 + && sc->stts_count*10 > st->nb_frames + && sc->time_scale == st->codec->sample_rate) { + st->need_parsing = AVSTREAM_PARSE_FULL; + } /* Do not need those anymore. */ av_freep(&sc->chunk_offsets); av_freep(&sc->stsc_data); -- GitLab