Fix aacDecoder_drcExtractAndMap()

Parse DVB DRC data only when numThreads is below
 MAX_DRC_THREADS. The post-increment is necessary as
 it is used in fill element DRC data section.
This solution parses as many DRC payloads as allowed by
 MAX_DRC_THREADS and skips all remaining DRC elements in the stream.

Bug 27792766
Bug 26751339

Change-Id: Ie1641888bac1757c4d1491119f977fc5d436eaea
This commit is contained in:
Jean-Michel Trivi 2016-04-05 12:38:32 -07:00 committed by Marco Nelissen
parent a06d1c2b9a
commit 97a1b8140d

View File

@ -680,11 +680,7 @@ static int aacDecoder_drcExtractAndMap (
}
self->numPayloads = 0;
if (self->numThreads >= MAX_DRC_THREADS) {
self->numThreads = MAX_DRC_THREADS - 1;
}
if (self->dvbAncDataAvailable)
if (self->dvbAncDataAvailable && self->numThreads < MAX_DRC_THREADS)
{ /* Append a DVB heavy compression payload thread if available. */
int bitsParsed;
@ -710,10 +706,6 @@ static int aacDecoder_drcExtractAndMap (
/* coupling channels not supported */
if (self->numThreads >= MAX_DRC_THREADS) {
self->numThreads = MAX_DRC_THREADS - 1;
}
/* check for valid threads */
for (thread = 0; thread < self->numThreads; thread++) {
CDrcPayload *pThreadBs = &threadBs[thread];