aboutsummaryrefslogtreecommitdiffstats
path: root/libAACdec
diff options
context:
space:
mode:
authorFraunhofer IIS FDK <audio-fdk@iis.fraunhofer.de>2018-05-04 15:51:23 +0200
committerJean-Michel Trivi <jmtrivi@google.com>2018-05-04 11:05:58 -0700
commit9ab67882eca7454dc001e158bc1e6e2219d6650b (patch)
tree8bf6f33f28355cd7dd6c4f5a01c5324a43ec66bc /libAACdec
parent6cfabd35363c3ef5e3b209b867169a500b3ccc3c (diff)
downloadfdk-aac-9ab67882eca7454dc001e158bc1e6e2219d6650b.tar.gz
fdk-aac-9ab67882eca7454dc001e158bc1e6e2219d6650b.tar.bz2
fdk-aac-9ab67882eca7454dc001e158bc1e6e2219d6650b.zip
FDKv2 additional fixes
Bug: 71430241 Bug: 79220129 Test: cts-tradefed run commandAndExit cts-dev -m CtsMediaTestCases -t android.media.cts.DecoderTestXheAac cts-tradefed run commandAndExit cts-dev -m CtsMediaTestCases -t android.media.cts.DecoderTestAacDrc Add restriction to call intensity stereo tool only for applicable configurations Change-Id: I30ec6640bd484c56cc9d5b8b35186fc1c875e021 Fix high band energy calculation in sbr encoder Change-Id: I964dd46fab2ed797c440a983512bbab7e1aff98a Fix out-of-bounds read access in noiseless coder Change-Id: I9a669435dbdca421ff9e4affec57811002d75b3b Use temporary buffer for dummy parsing to check presence of audioPreroll data Change-Id: I2d42c5c8deddde34351c3d2858b9fe196b3a0906 Set applyAsc to 1 in case that the ASC parsing fails Change-Id: I552a8b960270bc18cae459ad28a3ba241035668e Parametric stereo together with mps not supported Change-Id: Icde14a2774a4303bb0c41046861a59d04b624365 Align ssc callback error path for drm Change-Id: Ie8ecbfa42c702e6df81c1aec532a9ff1e653dac9 Ensure that the bit counter starts at a multiple of TPDEC_SYNCSKIP Change-Id: I08d69ec361b2e2ed800282e333fd248b4b3ca245 Allow flushing only when audioPreroll is enabled in current and new config Change-Id: I52e95d75de4bbed692be922a59a23bda58870625 Omit reverse channel mapping in pass through mode Change-Id: I335e209c29a700cc091be069f1d08e4288b40793
Diffstat (limited to 'libAACdec')
-rw-r--r--libAACdec/src/aacdecoder_lib.cpp11
-rw-r--r--libAACdec/src/channel.cpp21
-rw-r--r--libAACdec/src/channelinfo.h4
-rw-r--r--libAACdec/src/stereo.cpp5
4 files changed, 21 insertions, 20 deletions
diff --git a/libAACdec/src/aacdecoder_lib.cpp b/libAACdec/src/aacdecoder_lib.cpp
index b7ea8df..e62d187 100644
--- a/libAACdec/src/aacdecoder_lib.cpp
+++ b/libAACdec/src/aacdecoder_lib.cpp
@@ -396,7 +396,8 @@ static INT aacDecoder_SscCallback(void *handle, HANDLE_FDK_BITSTREAM hBs,
/* MPS found but invalid or not decodable by this instance */
hAacDecoder->mpsEnableCurr = 0;
hAacDecoder->mpsApplicable = 0;
- if ((coreCodec == AOT_USAC) || IS_LOWDELAY(coreCodec)) {
+ if ((coreCodec == AOT_USAC) || (coreCodec == AOT_DRM_USAC) ||
+ IS_LOWDELAY(coreCodec)) {
errTp = TRANSPORTDEC_PARSE_ERROR;
} else {
errTp = TRANSPORTDEC_OK;
@@ -1654,14 +1655,14 @@ aacDecoder_DecodeFrame(HANDLE_AACDECODER self, INT_PCM *pTimeData_extern,
self->streamInfo.frameSize;
for (ch = 0; ch < self->streamInfo.numChannels; ch++) {
- int mapValue = FDK_chMapDescr_getMapValue(
+ UCHAR mapValue = FDK_chMapDescr_getMapValue(
&self->mapDescr, (UCHAR)ch, self->chMapIndex);
- reverseInChannelMap[mapValue] = ch;
+ if (mapValue < (8)) reverseInChannelMap[mapValue] = ch;
}
for (ch = 0; ch < (int)numDrcOutChannels; ch++) {
- int mapValue = FDK_chMapDescr_getMapValue(
+ UCHAR mapValue = FDK_chMapDescr_getMapValue(
&self->mapDescr, (UCHAR)ch, numDrcOutChannels);
- reverseOutChannelMap[mapValue] = ch;
+ if (mapValue < (8)) reverseOutChannelMap[mapValue] = ch;
}
/* The output of SBR and MPS is interleaved. Deinterleaving may be
diff --git a/libAACdec/src/channel.cpp b/libAACdec/src/channel.cpp
index dbbf58a..cfffd57 100644
--- a/libAACdec/src/channel.cpp
+++ b/libAACdec/src/channel.cpp
@@ -225,15 +225,18 @@ void CChannelElement_Decode(
/* apply intensity stereo */ /* modifies pAacDecoderChannelInfo[]->aSpecSfb
*/
if (!(flags & (AC_USAC | AC_RSVD50 | AC_RSV603DA))) {
- CJointStereo_ApplyIS(
- pAacDecoderChannelInfo,
- GetScaleFactorBandOffsets(&pAacDecoderChannelInfo[L]->icsInfo,
- pSamplingRateInfo),
- GetWindowGroupLengthTable(&pAacDecoderChannelInfo[L]->icsInfo),
- GetWindowGroups(&pAacDecoderChannelInfo[L]->icsInfo),
- GetScaleFactorBandsTransmitted(&pAacDecoderChannelInfo[L]->icsInfo),
- pAacDecoderChannelInfo[L]->pDynData->RawDataInfo.CommonWindow ? 1
- : 0);
+ if ((pAacDecoderChannelInfo[L]->pDynData->RawDataInfo.CommonWindow ==
+ 1) &&
+ (el_channels == 2)) {
+ CJointStereo_ApplyIS(
+ pAacDecoderChannelInfo,
+ GetScaleFactorBandOffsets(&pAacDecoderChannelInfo[L]->icsInfo,
+ pSamplingRateInfo),
+ GetWindowGroupLengthTable(&pAacDecoderChannelInfo[L]->icsInfo),
+ GetWindowGroups(&pAacDecoderChannelInfo[L]->icsInfo),
+ GetScaleFactorBandsTransmitted(
+ &pAacDecoderChannelInfo[L]->icsInfo));
+ }
}
} /* maybe_stereo */
diff --git a/libAACdec/src/channelinfo.h b/libAACdec/src/channelinfo.h
index 7c95e12..45a288f 100644
--- a/libAACdec/src/channelinfo.h
+++ b/libAACdec/src/channelinfo.h
@@ -478,15 +478,13 @@ void CJointStereo_ApplyMS(
\param pWindowGroupLength pointer to window group length array.
\param windowGroups number of window groups.
\param scaleFactorBandsTransmitted number of transmitted scalefactor bands.
- \param CommonWindow common window bit.
\return none
*/
void CJointStereo_ApplyIS(CAacDecoderChannelInfo *pAacDecoderChannelInfo[2],
const short *pScaleFactorBandOffsets,
const UCHAR *pWindowGroupLength,
const int windowGroups,
- const int scaleFactorBandsTransmitted,
- const UINT CommonWindow);
+ const int scaleFactorBandsTransmitted);
/* aacdec_pns.cpp */
int CPns_IsPnsUsed(const CPnsData *pPnsData, const int group, const int band);
diff --git a/libAACdec/src/stereo.cpp b/libAACdec/src/stereo.cpp
index bb4f050..eed826b 100644
--- a/libAACdec/src/stereo.cpp
+++ b/libAACdec/src/stereo.cpp
@@ -1177,8 +1177,7 @@ void CJointStereo_ApplyIS(CAacDecoderChannelInfo *pAacDecoderChannelInfo[2],
const SHORT *pScaleFactorBandOffsets,
const UCHAR *pWindowGroupLength,
const int windowGroups,
- const int scaleFactorBandsTransmitted,
- const UINT CommonWindow) {
+ const int scaleFactorBandsTransmitted) {
CJointStereoData *pJointStereoData =
&pAacDecoderChannelInfo[L]->pComData->jointStereoData;
@@ -1228,7 +1227,7 @@ void CJointStereo_ApplyIS(CAacDecoderChannelInfo *pAacDecoderChannelInfo[2],
rightScale[band] = leftScale[band] + msb + 1;
- if (CommonWindow && (pJointStereoData->MsUsed[band] & groupMask)) {
+ if (pJointStereoData->MsUsed[band] & groupMask) {
if (CodeBook[band] == INTENSITY_HCB) /* _NOT_ in-phase */
{
scale = -scale;