summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Michel Trivi <jmtrivi@google.com>2016-04-05 12:38:32 -0700
committerMichael Bestas <mikeioannina@cyanogenmod.org>2016-06-07 16:57:16 +0300
commitfaadf2bae979b7bcc5484e47a8a5dbc973f5f255 (patch)
treefa1b15b19a2c73a20a5468779bdccbd8aae689ed
parent7cc9e58444efafc8183e57d36606527fcddba0d2 (diff)
downloadandroid_external_aac-faadf2bae979b7bcc5484e47a8a5dbc973f5f255.tar.gz
android_external_aac-faadf2bae979b7bcc5484e47a8a5dbc973f5f255.tar.bz2
android_external_aac-faadf2bae979b7bcc5484e47a8a5dbc973f5f255.zip
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 (cherry picked from commit 97a1b8140d410ed3942006aa22b40ccb322f747b)
-rw-r--r--libAACdec/src/aacdec_drc.cpp10
1 files changed, 1 insertions, 9 deletions
diff --git a/libAACdec/src/aacdec_drc.cpp b/libAACdec/src/aacdec_drc.cpp
index f939a1a..b836746 100644
--- a/libAACdec/src/aacdec_drc.cpp
+++ b/libAACdec/src/aacdec_drc.cpp
@@ -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];