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

James Almer jamrial at gmail.com
Tue Sep 28 22:55:36 EEST 2021


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.


More information about the ffmpeg-devel mailing list