Introduce aacDecoder_drcDisable() and always disable legacy DRC for USAC.

Bug: 176246647
Test: atest DecoderTestXheAac DecoderTestAacDrc
Change-Id: I75edf24b18e1f5392b6eb179d5574cb93fcbc7c2
This commit is contained in:
Fraunhofer IIS FDK 2020-04-09 17:55:38 +02:00 committed by Ray Essick
parent 702d914e1a
commit 3ebe6ffe95
3 changed files with 24 additions and 8 deletions

View File

@ -1,7 +1,7 @@
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
Software License for The Fraunhofer FDK AAC Codec Library for Android Software License for The Fraunhofer FDK AAC Codec Library for Android
© Copyright 1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten © Copyright 1995 - 2020 Fraunhofer-Gesellschaft zur Förderung der angewandten
Forschung e.V. All rights reserved. Forschung e.V. All rights reserved.
1. INTRODUCTION 1. INTRODUCTION
@ -149,6 +149,19 @@ static INT convert_drcParam(FIXP_DBL param_dbl) {
return (INT)param_long; return (INT)param_long;
} }
/*!
\brief Disable DRC
\self Handle of DRC info
\return none
*/
void aacDecoder_drcDisable(HANDLE_AAC_DRC self) {
self->enable = 0;
self->applyExtGain = 0;
self->progRefLevelPresent = 0;
}
/*! /*!
\brief Reset DRC information \brief Reset DRC information

View File

@ -1,7 +1,7 @@
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
Software License for The Fraunhofer FDK AAC Codec Library for Android Software License for The Fraunhofer FDK AAC Codec Library for Android
© Copyright 1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten © Copyright 1995 - 2020 Fraunhofer-Gesellschaft zur Förderung der angewandten
Forschung e.V. All rights reserved. Forschung e.V. All rights reserved.
1. INTRODUCTION 1. INTRODUCTION
@ -140,6 +140,8 @@ typedef enum {
/** /**
* \brief DRC module interface functions * \brief DRC module interface functions
*/ */
void aacDecoder_drcDisable(HANDLE_AAC_DRC self);
void aacDecoder_drcReset(HANDLE_AAC_DRC self); void aacDecoder_drcReset(HANDLE_AAC_DRC self);
void aacDecoder_drcInit(HANDLE_AAC_DRC self); void aacDecoder_drcInit(HANDLE_AAC_DRC self);

View File

@ -2414,8 +2414,7 @@ CAacDecoder_Init(HANDLE_AACDECODER self, const CSAudioSpecificConfig *asc,
if (*configChanged) { if (*configChanged) {
if (asc->m_aot == AOT_USAC) { if (asc->m_aot == AOT_USAC) {
self->hDrcInfo->enable = 0; aacDecoder_drcDisable(self->hDrcInfo);
self->hDrcInfo->progRefLevelPresent = 0;
} }
} }
@ -3231,11 +3230,12 @@ LINKSPEC_CPP AAC_DECODER_ERROR CAacDecoder_DecodeFrame(
* data in the bitstream. */ * data in the bitstream. */
self->flags[streamIndex] |= AC_DRC_PRESENT; self->flags[streamIndex] |= AC_DRC_PRESENT;
} else { } else {
self->hDrcInfo->enable = 0;
self->hDrcInfo->progRefLevelPresent = 0;
ErrorStatus = AAC_DEC_UNSUPPORTED_FORMAT; ErrorStatus = AAC_DEC_UNSUPPORTED_FORMAT;
} }
} }
if (self->flags[streamIndex] & (AC_USAC | AC_RSV603DA)) {
aacDecoder_drcDisable(self->hDrcInfo);
}
/* Create a reverse mapping table */ /* Create a reverse mapping table */
UCHAR Reverse_chMapping[((8) * 2)]; UCHAR Reverse_chMapping[((8) * 2)];
@ -3478,11 +3478,12 @@ LINKSPEC_CPP AAC_DECODER_ERROR CAacDecoder_DecodeFrame(
* data in the bitstream. */ * data in the bitstream. */
self->flags[streamIndex] |= AC_DRC_PRESENT; self->flags[streamIndex] |= AC_DRC_PRESENT;
} else { } else {
self->hDrcInfo->enable = 0;
self->hDrcInfo->progRefLevelPresent = 0;
ErrorStatus = AAC_DEC_UNSUPPORTED_FORMAT; ErrorStatus = AAC_DEC_UNSUPPORTED_FORMAT;
} }
} }
if (self->flags[streamIndex] & (AC_USAC | AC_RSV603DA)) {
aacDecoder_drcDisable(self->hDrcInfo);
}
} }
/* Add additional concealment delay */ /* Add additional concealment delay */