[FFmpeg-cvslog] avformat/aacdec: enable probesize-sized resyncs mid-stream
Jan Ekström
git at videolan.org
Tue Sep 28 23:03:35 EEST 2021
ffmpeg | branch: master | Jan Ekström <jeebjp at gmail.com> | Tue Sep 28 00:12:42 2021 +0300| [c20577806f0a161c6867e72f884d020a253de10a] | committer: Jan Ekström
avformat/aacdec: enable probesize-sized resyncs mid-stream
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
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c20577806f0a161c6867e72f884d020a253de10a
---
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;
More information about the ffmpeg-cvslog
mailing list