diff options
author | Jean-Michel Trivi <jmtrivi@google.com> | 2013-08-27 16:17:45 -0700 |
---|---|---|
committer | Jean-Michel Trivi <jmtrivi@google.com> | 2013-08-27 16:17:45 -0700 |
commit | 2ddc922da87bb675b8ab8c305566436e806df0d9 (patch) | |
tree | 37bc76089aabffd8f8d71f2fe2c87b2ae1a2dc13 /libMpegTPDec/src/tpdec_asc.cpp | |
parent | 3a0a695565d1d360f9a82173469c8ef858bc08a0 (diff) | |
download | ODR-AudioEnc-2ddc922da87bb675b8ab8c305566436e806df0d9.tar.gz ODR-AudioEnc-2ddc922da87bb675b8ab8c305566436e806df0d9.tar.bz2 ODR-AudioEnc-2ddc922da87bb675b8ab8c305566436e806df0d9.zip |
Decode parametric stereo even with invalid channel config
AAC decoder: Allow decoding of Parametric Stereo (AOT 29) bitstreams
with invalid channel config 2.
Bug 9428126
Change-Id: I1e8b801dfc0e6b1706421342d4985512e83f0dbe
Diffstat (limited to 'libMpegTPDec/src/tpdec_asc.cpp')
-rw-r--r-- | libMpegTPDec/src/tpdec_asc.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/libMpegTPDec/src/tpdec_asc.cpp b/libMpegTPDec/src/tpdec_asc.cpp index 679808d..e6278d6 100644 --- a/libMpegTPDec/src/tpdec_asc.cpp +++ b/libMpegTPDec/src/tpdec_asc.cpp @@ -267,7 +267,7 @@ void getImplicitAudioChannelTypeAndIndex( int CProgramConfig_LookupElement( CProgramConfig *pPce, - const UINT channelConfig, + UINT channelConfig, const UINT tag, const UINT channelIdx, UCHAR chMapping[], @@ -289,7 +289,13 @@ int CProgramConfig_LookupElement( *elMapping = pPce->elCounter; if (elList[pPce->elCounter] != elType) { /* Not in the list */ - return 0; + if ( (channelConfig == 2) && (elType == ID_SCE) ) + { /* This scenario occurs with HE-AAC v2 streams of buggy encoders. + Due to other decoder implementations decoding of these kind of streams is desired. */ + channelConfig = 1; + } else { + return 0; + } } /* Assume all front channels */ getImplicitAudioChannelTypeAndIndex(&chType[channelIdx], &chIndex[channelIdx], channelConfig, channelIdx); |