[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