Remove obsolete uni drc precedence handling

Bug: 241391733
Test: see bug
Change-Id: I0ddc479626fb6a89d04bc989256ad1d8ec4275a3
This commit is contained in:
Fraunhofer IIS FDK 2023-04-21 16:06:29 +02:00 committed by Jean-Michel Trivi
parent 2f4c595c4a
commit 4c41b05b6c
5 changed files with 11 additions and 48 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 - 2020 Fraunhofer-Gesellschaft zur Förderung der angewandten © Copyright 1995 - 2023 Fraunhofer-Gesellschaft zur Förderung der angewandten
Forschung e.V. All rights reserved. Forschung e.V. All rights reserved.
1. INTRODUCTION 1. INTRODUCTION
@ -217,7 +217,6 @@ void aacDecoder_drcInit(HANDLE_AAC_DRC self) {
self->progRefLevel = pParams->targetRefLevel; self->progRefLevel = pParams->targetRefLevel;
self->progRefLevelPresent = 0; self->progRefLevelPresent = 0;
self->presMode = -1; self->presMode = -1;
self->uniDrcPrecedence = 0;
aacDecoder_drcReset(self); aacDecoder_drcReset(self);
} }
@ -353,12 +352,6 @@ AAC_DECODER_ERROR aacDecoder_drcSetParam(HANDLE_AAC_DRC self,
self->numOutChannels = (INT)value; self->numOutChannels = (INT)value;
self->update = 1; self->update = 1;
break; break;
case UNIDRC_PRECEDENCE:
if (self == NULL) {
return AAC_DEC_INVALID_HANDLE;
}
self->uniDrcPrecedence = (UCHAR)value;
break;
default: default:
return AAC_DEC_SET_PARAM_FAIL; return AAC_DEC_SET_PARAM_FAIL;
} /* switch(param) */ } /* switch(param) */
@ -1258,7 +1251,6 @@ static void aacDecoder_drcParameterHandling(HANDLE_AAC_DRC self,
/* switch on/off processing */ /* switch on/off processing */
self->enable = ((p->boost > (FIXP_DBL)0) || (p->cut > (FIXP_DBL)0) || self->enable = ((p->boost > (FIXP_DBL)0) || (p->cut > (FIXP_DBL)0) ||
(p->applyHeavyCompression == ON) || (p->targetRefLevel >= 0)); (p->applyHeavyCompression == ON) || (p->targetRefLevel >= 0));
self->enable = (self->enable && !self->uniDrcPrecedence);
self->prevAacNumChannels = aacNumChannels; self->prevAacNumChannels = aacNumChannels;
self->update = 0; self->update = 0;

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 - 2020 Fraunhofer-Gesellschaft zur Förderung der angewandten © Copyright 1995 - 2023 Fraunhofer-Gesellschaft zur Förderung der angewandten
Forschung e.V. All rights reserved. Forschung e.V. All rights reserved.
1. INTRODUCTION 1. INTRODUCTION
@ -133,8 +133,7 @@ typedef enum {
APPLY_HEAVY_COMPRESSION, APPLY_HEAVY_COMPRESSION,
DEFAULT_PRESENTATION_MODE, DEFAULT_PRESENTATION_MODE,
ENCODER_TARGET_LEVEL, ENCODER_TARGET_LEVEL,
MAX_OUTPUT_CHANNELS, MAX_OUTPUT_CHANNELS
UNIDRC_PRECEDENCE
} AACDEC_DRC_PARAM; } AACDEC_DRC_PARAM;
/** /**

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 - 2023 Fraunhofer-Gesellschaft zur Förderung der angewandten
Forschung e.V. All rights reserved. Forschung e.V. All rights reserved.
1. INTRODUCTION 1. INTRODUCTION
@ -207,11 +207,6 @@ typedef struct {
position in the bitstream (only one per frame) */ position in the bitstream (only one per frame) */
UINT drcPayloadPosition[MAX_DRC_THREADS]; /* Used to store the DRC payload UINT drcPayloadPosition[MAX_DRC_THREADS]; /* Used to store the DRC payload
positions in the bitstream */ positions in the bitstream */
UCHAR
uniDrcPrecedence; /* Flag for signalling that uniDrc is active and takes
precedence over legacy DRC */
UCHAR applyExtGain; /* Flag is 1 if extGain has to be applied, otherwise 0. */ UCHAR applyExtGain; /* Flag is 1 if extGain has to be applied, otherwise 0. */
FIXP_DBL additionalGainPrev; /* Gain of previous frame to be applied to the FIXP_DBL additionalGainPrev; /* Gain of previous frame to be applied to the

View File

@ -3273,12 +3273,6 @@ LINKSPEC_CPP AAC_DECODER_ERROR CAacDecoder_DecodeFrame(
FDKmemcpy(drcChMap, self->chMapping, (8) * sizeof(UCHAR)); FDKmemcpy(drcChMap, self->chMapping, (8) * sizeof(UCHAR));
} }
/* deactivate legacy DRC in case uniDrc is active, i.e. uniDrc payload is
* present and one of DRC or Loudness Normalization is switched on */
aacDecoder_drcSetParam(
self->hDrcInfo, UNIDRC_PRECEDENCE,
FDK_drcDec_GetParam(self->hUniDrcDecoder, DRC_DEC_IS_ACTIVE));
/* Extract DRC control data and map it to channels (without bitstream delay) /* Extract DRC control data and map it to channels (without bitstream delay)
*/ */
mapped = aacDecoder_drcProlog( mapped = aacDecoder_drcProlog(

View File

@ -1689,8 +1689,6 @@ LINKSPEC_CPP AAC_DECODER_ERROR aacDecoder_DecodeFrame(HANDLE_AACDECODER self,
FIXP_DBL channelGain[(8)]; FIXP_DBL channelGain[(8)];
int reverseInChannelMap[(8)]; int reverseInChannelMap[(8)];
int reverseOutChannelMap[(8)]; int reverseOutChannelMap[(8)];
int numDrcOutChannels = FDK_drcDec_GetParam(
self->hUniDrcDecoder, DRC_DEC_TARGET_CHANNEL_COUNT_SELECTED);
FDKmemclear(channelGain, sizeof(channelGain)); FDKmemclear(channelGain, sizeof(channelGain));
for (ch = 0; ch < (8); ch++) { for (ch = 0; ch < (8); ch++) {
reverseInChannelMap[ch] = ch; reverseInChannelMap[ch] = ch;
@ -1713,17 +1711,6 @@ LINKSPEC_CPP AAC_DECODER_ERROR aacDecoder_DecodeFrame(HANDLE_AACDECODER self,
drcDelay += CConcealment_GetDelay(&self->concealCommonData) * drcDelay += CConcealment_GetDelay(&self->concealCommonData) *
self->streamInfo.frameSize; self->streamInfo.frameSize;
for (ch = 0; ch < self->streamInfo.numChannels; ch++) {
UCHAR mapValue = FDK_chMapDescr_getMapValue(
&self->mapDescr, (UCHAR)ch, self->chMapIndex);
if (mapValue < (8)) reverseInChannelMap[mapValue] = ch;
}
for (ch = 0; ch < (int)numDrcOutChannels; ch++) {
UCHAR mapValue = FDK_chMapDescr_getMapValue(
&self->mapDescr, (UCHAR)ch, numDrcOutChannels);
if (mapValue < (8)) reverseOutChannelMap[mapValue] = ch;
}
/* The output of SBR and MPS is interleaved. Deinterleaving may be /* The output of SBR and MPS is interleaved. Deinterleaving may be
* necessary for FDK_drcDec_ProcessTime, which accepts deinterleaved * necessary for FDK_drcDec_ProcessTime, which accepts deinterleaved
* audio only. */ * audio only. */
@ -1758,11 +1745,9 @@ LINKSPEC_CPP AAC_DECODER_ERROR aacDecoder_DecodeFrame(HANDLE_AACDECODER self,
FDK_drcDec_Preprocess(self->hUniDrcDecoder); FDK_drcDec_Preprocess(self->hUniDrcDecoder);
/* apply DRC1 gain sequence */ /* apply DRC1 gain sequence */
for (ch = 0; ch < self->streamInfo.numChannels; ch++) { FDK_drcDec_ProcessTime(self->hUniDrcDecoder, drcDelay, DRC_DEC_DRC1,
FDK_drcDec_ProcessTime(self->hUniDrcDecoder, drcDelay, DRC_DEC_DRC1, 0, 0, self->streamInfo.numChannels,
ch, reverseInChannelMap[ch] - ch, 1, drcWorkBuffer, self->streamInfo.frameSize);
drcWorkBuffer, self->streamInfo.frameSize);
}
/* apply downmix */ /* apply downmix */
FDK_drcDec_ApplyDownmix( FDK_drcDec_ApplyDownmix(
self->hUniDrcDecoder, reverseInChannelMap, reverseOutChannelMap, self->hUniDrcDecoder, reverseInChannelMap, reverseOutChannelMap,
@ -1770,12 +1755,10 @@ LINKSPEC_CPP AAC_DECODER_ERROR aacDecoder_DecodeFrame(HANDLE_AACDECODER self,
&self->streamInfo.numChannels); /* self->streamInfo.numChannels &self->streamInfo.numChannels); /* self->streamInfo.numChannels
may change here */ may change here */
/* apply DRC2/3 gain sequence */ /* apply DRC2/3 gain sequence */
for (ch = 0; ch < self->streamInfo.numChannels; ch++) { FDK_drcDec_ProcessTime(self->hUniDrcDecoder, drcDelay,
FDK_drcDec_ProcessTime(self->hUniDrcDecoder, drcDelay, DRC_DEC_DRC2_DRC3, 0, 0,
DRC_DEC_DRC2_DRC3, ch, self->streamInfo.numChannels, drcWorkBuffer,
reverseOutChannelMap[ch] - ch, 1, self->streamInfo.frameSize);
drcWorkBuffer, self->streamInfo.frameSize);
}
if (needsDeinterleaving) { if (needsDeinterleaving) {
FDK_interleave( FDK_interleave(