[FFmpeg-devel] [PATCH v2] avformat/aacdec: enable probesize-sized resyncs mid-stream

Jan Ekström jeebjp at gmail.com
Tue Sep 28 23:04:27 EEST 2021


On Tue, Sep 28, 2021 at 10:55 PM James Almer <jamrial at gmail.com> wrote:
>
> On 9/27/2021 7:47 PM, Jan Ekström wrote:
> > Before adts_aac_resync would always bail out after probesize amount
> > of bytes had been progressed from the start of the input.
> >
> > Now just query the current position when entering resync, and at most
> > advance probesize amount of data from that start position.
> >
> > Fixes #9433
> > ---
> >   libavformat/aacdec.c | 4 +++-
> >   1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/libavformat/aacdec.c b/libavformat/aacdec.c
> > index ab97be60b5..a476640904 100644
> > --- a/libavformat/aacdec.c
> > +++ b/libavformat/aacdec.c
> > @@ -83,10 +83,12 @@ static int adts_aac_probe(const AVProbeData *p)
> >   static int adts_aac_resync(AVFormatContext *s)
> >   {
> >       uint16_t state;
> > +    int64_t start_pos = avio_tell(s->pb);
> >
> >       // skip data until an ADTS frame is found
> >       state = avio_r8(s->pb);
> > -    while (!avio_feof(s->pb) && avio_tell(s->pb) < s->probesize) {
> > +    while (!avio_feof(s->pb) &&
> > +           (avio_tell(s->pb) - start_pos) < s->probesize) {
> >           state = (state << 8) | avio_r8(s->pb);
> >           if ((state >> 4) != 0xFFF)
> >               continue;
>
> LGTM.

Thanks.

Applied as c20577806f0a161c6867e72f884d020a253de10a .

Jan


More information about the ffmpeg-devel mailing list