diff options
author | Jean-Michel Trivi <jmtrivi@google.com> | 2016-04-05 12:38:32 -0700 |
---|---|---|
committer | The Android Automerger <android-build@google.com> | 2016-04-21 19:09:47 -0700 |
commit | d99efb715cee295ce97ac7329f72f30f4bc6df2d (patch) | |
tree | 459cd88bd1541423d377b1e05fcc80472381823b /libAACdec/src | |
parent | 5d4405f601fa11a8955fd7611532c982420e4206 (diff) | |
download | android_external_aac-d99efb715cee295ce97ac7329f72f30f4bc6df2d.tar.gz android_external_aac-d99efb715cee295ce97ac7329f72f30f4bc6df2d.tar.bz2 android_external_aac-d99efb715cee295ce97ac7329f72f30f4bc6df2d.zip |
Fix aacDecoder_drcExtractAndMap()android-6.0.1_r79android-6.0.1_r78android-6.0.1_r77android-6.0.1_r74android-6.0.1_r72android-6.0.1_r70android-6.0.1_r66android-6.0.1_r61android-6.0.1_r60android-6.0.1_r59android-6.0.1_r58android-6.0.1_r52android-6.0.1_r51android-6.0.1_r50android-6.0.1_r49android-6.0.1_r46
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
Diffstat (limited to 'libAACdec/src')
-rw-r--r-- | libAACdec/src/aacdec_drc.cpp | 10 |
1 files changed, 1 insertions, 9 deletions
diff --git a/libAACdec/src/aacdec_drc.cpp b/libAACdec/src/aacdec_drc.cpp index 9cfc5d5..eb8e410 100644 --- a/libAACdec/src/aacdec_drc.cpp +++ b/libAACdec/src/aacdec_drc.cpp @@ -705,11 +705,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; @@ -735,10 +731,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]; |