[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