From d50470bc7db942105c3bd774ea08a836b842d58c Mon Sep 17 00:00:00 2001 From: Roman Artiukhin Date: Wed, 3 Jan 2024 17:30:18 +0200 Subject: Codecs: aac: Improve ADTS stream detection Captured ADTS streams might start from some garbage data from previous frame. We should check for sync errors even for first frame. Change-Id: I70171298b79713aeedf9fa2e6098a03063487649 --- lib/rbcodec/codecs/libfaad/decoder.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'lib/rbcodec/codecs/libfaad/decoder.c') diff --git a/lib/rbcodec/codecs/libfaad/decoder.c b/lib/rbcodec/codecs/libfaad/decoder.c index d68d093b0b..533de50d5b 100644 --- a/lib/rbcodec/codecs/libfaad/decoder.c +++ b/lib/rbcodec/codecs/libfaad/decoder.c @@ -247,6 +247,7 @@ int32_t NEAACDECAPI NeAACDecInit(NeAACDecHandle hDecoder, uint8_t *buffer, if ((hDecoder == NULL) || (samplerate == NULL) || (channels == NULL)) return -1; + adts.old_format = hDecoder->config.useOldADTSFormat; hDecoder->sf_index = get_sr_index(hDecoder->config.defSampleRate); hDecoder->object_type = hDecoder->config.defObjectType; *samplerate = get_sample_rate(hDecoder->sf_index); @@ -277,12 +278,9 @@ int32_t NEAACDECAPI NeAACDecInit(NeAACDecHandle hDecoder, uint8_t *buffer, bits = bit2byte(faad_get_processed_bits(&ld)); /* Check if an ADTS header is present */ - } else if (faad_showbits(&ld, 12) == 0xfff) { + } else if (adts_frame(&adts, &ld) == 0) { hDecoder->adts_header_present = 1; - adts.old_format = hDecoder->config.useOldADTSFormat; - adts_frame(&adts, &ld); - hDecoder->sf_index = adts.sf_index; hDecoder->object_type = adts.profile + 1; -- cgit v1.2.3