mirror of https://github.com/mstorsjo/fdk-aac.git
Merge remote-tracking branch 'aosp/main'
This commit is contained in:
commit
0f91e9ba60
|
@ -94,7 +94,7 @@ cc_library_static {
|
|||
|
||||
apex_available: [
|
||||
"//apex_available:platform",
|
||||
"com.android.bluetooth",
|
||||
"com.android.btservices",
|
||||
"com.android.media.swcodec",
|
||||
],
|
||||
min_sdk_version: "29",
|
||||
|
|
4
METADATA
4
METADATA
|
@ -1,3 +1,7 @@
|
|||
# *** THIS PACKAGE HAS SPECIAL LICENSING CONDITIONS. PLEASE
|
||||
# CONSULT THE OWNERS AND opensource-licensing@google.com BEFORE
|
||||
# DEPENDING ON IT IN YOUR PROJECT. ***
|
||||
third_party {
|
||||
license_note: "Software License for The Fraunhofer FDK AAC Codec Library for Android"
|
||||
license_type: BY_EXCEPTION_ONLY
|
||||
}
|
||||
|
|
|
@ -46,6 +46,14 @@ cc_defaults {
|
|||
"android-media-fuzzing-reports@google.com",
|
||||
],
|
||||
componentid: 155276,
|
||||
hotlists: [
|
||||
"4593311",
|
||||
],
|
||||
description: "The fuzzer targets the APIs of libFraunhoferAAC",
|
||||
vector: "remote",
|
||||
service_privilege: "privileged",
|
||||
users: "multi_user",
|
||||
fuzzed_code_usage: "shipped",
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -431,6 +431,10 @@ Where N equals to CStreamInfo::frameSize .
|
|||
#include "machine_type.h"
|
||||
#include "FDK_audio.h"
|
||||
|
||||
#define AACDECODER_LIB_VL0 3
|
||||
#define AACDECODER_LIB_VL1 2
|
||||
#define AACDECODER_LIB_VL2 0
|
||||
|
||||
#include "genericStds.h"
|
||||
|
||||
#define AACDECODER_LIB_VL0 3
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* -----------------------------------------------------------------------------
|
||||
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.
|
||||
|
||||
1. INTRODUCTION
|
||||
|
@ -217,7 +217,6 @@ void aacDecoder_drcInit(HANDLE_AAC_DRC self) {
|
|||
self->progRefLevel = pParams->targetRefLevel;
|
||||
self->progRefLevelPresent = 0;
|
||||
self->presMode = -1;
|
||||
self->uniDrcPrecedence = 0;
|
||||
|
||||
aacDecoder_drcReset(self);
|
||||
}
|
||||
|
@ -353,12 +352,6 @@ AAC_DECODER_ERROR aacDecoder_drcSetParam(HANDLE_AAC_DRC self,
|
|||
self->numOutChannels = (INT)value;
|
||||
self->update = 1;
|
||||
break;
|
||||
case UNIDRC_PRECEDENCE:
|
||||
if (self == NULL) {
|
||||
return AAC_DEC_INVALID_HANDLE;
|
||||
}
|
||||
self->uniDrcPrecedence = (UCHAR)value;
|
||||
break;
|
||||
default:
|
||||
return AAC_DEC_SET_PARAM_FAIL;
|
||||
} /* switch(param) */
|
||||
|
@ -1258,7 +1251,6 @@ static void aacDecoder_drcParameterHandling(HANDLE_AAC_DRC self,
|
|||
/* switch on/off processing */
|
||||
self->enable = ((p->boost > (FIXP_DBL)0) || (p->cut > (FIXP_DBL)0) ||
|
||||
(p->applyHeavyCompression == ON) || (p->targetRefLevel >= 0));
|
||||
self->enable = (self->enable && !self->uniDrcPrecedence);
|
||||
|
||||
self->prevAacNumChannels = aacNumChannels;
|
||||
self->update = 0;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* -----------------------------------------------------------------------------
|
||||
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.
|
||||
|
||||
1. INTRODUCTION
|
||||
|
@ -133,8 +133,7 @@ typedef enum {
|
|||
APPLY_HEAVY_COMPRESSION,
|
||||
DEFAULT_PRESENTATION_MODE,
|
||||
ENCODER_TARGET_LEVEL,
|
||||
MAX_OUTPUT_CHANNELS,
|
||||
UNIDRC_PRECEDENCE
|
||||
MAX_OUTPUT_CHANNELS
|
||||
} AACDEC_DRC_PARAM;
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* -----------------------------------------------------------------------------
|
||||
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.
|
||||
|
||||
1. INTRODUCTION
|
||||
|
@ -207,11 +207,6 @@ typedef struct {
|
|||
position in the bitstream (only one per frame) */
|
||||
UINT drcPayloadPosition[MAX_DRC_THREADS]; /* Used to store the DRC payload
|
||||
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. */
|
||||
|
||||
FIXP_DBL additionalGainPrev; /* Gain of previous frame to be applied to the
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* -----------------------------------------------------------------------------
|
||||
Software License for The Fraunhofer FDK AAC Codec Library for Android
|
||||
|
||||
© Copyright 1995 - 2021 Fraunhofer-Gesellschaft zur Förderung der angewandten
|
||||
© Copyright 1995 - 2023 Fraunhofer-Gesellschaft zur Förderung der angewandten
|
||||
Forschung e.V. All rights reserved.
|
||||
|
||||
1. INTRODUCTION
|
||||
|
@ -912,43 +912,6 @@ static AAC_DECODER_ERROR CAacDecoder_ExtPayloadParse(
|
|||
}
|
||||
*count -= readBits;
|
||||
} break;
|
||||
case EXT_UNI_DRC: {
|
||||
DRC_DEC_ERROR drcErr = DRC_DEC_OK;
|
||||
DRC_DEC_CODEC_MODE drcDecCodecMode = DRC_DEC_CODEC_MODE_UNDEFINED;
|
||||
INT nBitsRemaining = FDKgetValidBits(hBs);
|
||||
INT readBits;
|
||||
|
||||
switch (self->streamInfo.aot) {
|
||||
case AOT_AAC_LC:
|
||||
case AOT_SBR:
|
||||
case AOT_PS:
|
||||
drcDecCodecMode = DRC_DEC_MPEG_4_AAC;
|
||||
break;
|
||||
default:
|
||||
error = AAC_DEC_PARSE_ERROR;
|
||||
goto bail;
|
||||
}
|
||||
|
||||
drcErr = FDK_drcDec_SetCodecMode(self->hUniDrcDecoder, drcDecCodecMode);
|
||||
if (drcErr) {
|
||||
error = AAC_DEC_PARSE_ERROR;
|
||||
goto bail;
|
||||
}
|
||||
|
||||
drcErr = FDK_drcDec_ReadUniDrc(self->hUniDrcDecoder, hBs);
|
||||
if (drcErr) {
|
||||
error = AAC_DEC_PARSE_ERROR;
|
||||
goto bail;
|
||||
}
|
||||
readBits = (INT)nBitsRemaining - (INT)FDKgetValidBits(hBs);
|
||||
if (readBits > *count) { /* Read too much. Something went wrong! */
|
||||
error = AAC_DEC_PARSE_ERROR;
|
||||
}
|
||||
*count -= readBits;
|
||||
/* Skip any trailing bits */
|
||||
FDKpushFor(hBs, *count);
|
||||
*count = 0;
|
||||
} break;
|
||||
case EXT_LDSAC_DATA:
|
||||
case EXT_SAC_DATA:
|
||||
/* Read MPEG Surround Extension payload */
|
||||
|
@ -3310,12 +3273,6 @@ LINKSPEC_CPP AAC_DECODER_ERROR CAacDecoder_DecodeFrame(
|
|||
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)
|
||||
*/
|
||||
mapped = aacDecoder_drcProlog(
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* -----------------------------------------------------------------------------
|
||||
Software License for The Fraunhofer FDK AAC Codec Library for Android
|
||||
|
||||
© Copyright 1995 - 2021 Fraunhofer-Gesellschaft zur Förderung der angewandten
|
||||
© Copyright 1995 - 2023 Fraunhofer-Gesellschaft zur Förderung der angewandten
|
||||
Forschung e.V. All rights reserved.
|
||||
|
||||
1. INTRODUCTION
|
||||
|
@ -1683,7 +1683,7 @@ LINKSPEC_CPP AAC_DECODER_ERROR aacDecoder_DecodeFrame(HANDLE_AACDECODER self,
|
|||
|
||||
{
|
||||
if ((FDK_drcDec_GetParam(self->hUniDrcDecoder, DRC_DEC_IS_ACTIVE)) &&
|
||||
!(self->flags[0] & AC_RSV603DA)) {
|
||||
(self->flags[0] & AC_USAC)) {
|
||||
/* Apply DRC gains*/
|
||||
int ch, drcDelay = 0;
|
||||
int needsDeinterleaving = 0;
|
||||
|
@ -1691,8 +1691,6 @@ LINKSPEC_CPP AAC_DECODER_ERROR aacDecoder_DecodeFrame(HANDLE_AACDECODER self,
|
|||
FIXP_DBL channelGain[(8)];
|
||||
int reverseInChannelMap[(8)];
|
||||
int reverseOutChannelMap[(8)];
|
||||
int numDrcOutChannels = FDK_drcDec_GetParam(
|
||||
self->hUniDrcDecoder, DRC_DEC_TARGET_CHANNEL_COUNT_SELECTED);
|
||||
FDKmemclear(channelGain, sizeof(channelGain));
|
||||
for (ch = 0; ch < (8); ch++) {
|
||||
reverseInChannelMap[ch] = ch;
|
||||
|
@ -1715,17 +1713,6 @@ LINKSPEC_CPP AAC_DECODER_ERROR aacDecoder_DecodeFrame(HANDLE_AACDECODER self,
|
|||
drcDelay += CConcealment_GetDelay(&self->concealCommonData) *
|
||||
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
|
||||
* necessary for FDK_drcDec_ProcessTime, which accepts deinterleaved
|
||||
* audio only. */
|
||||
|
@ -1760,11 +1747,9 @@ LINKSPEC_CPP AAC_DECODER_ERROR aacDecoder_DecodeFrame(HANDLE_AACDECODER self,
|
|||
FDK_drcDec_Preprocess(self->hUniDrcDecoder);
|
||||
|
||||
/* apply DRC1 gain sequence */
|
||||
for (ch = 0; ch < self->streamInfo.numChannels; ch++) {
|
||||
FDK_drcDec_ProcessTime(self->hUniDrcDecoder, drcDelay, DRC_DEC_DRC1,
|
||||
ch, reverseInChannelMap[ch] - ch, 1,
|
||||
drcWorkBuffer, self->streamInfo.frameSize);
|
||||
}
|
||||
FDK_drcDec_ProcessTime(self->hUniDrcDecoder, drcDelay, DRC_DEC_DRC1,
|
||||
0, 0, self->streamInfo.numChannels,
|
||||
drcWorkBuffer, self->streamInfo.frameSize);
|
||||
/* apply downmix */
|
||||
FDK_drcDec_ApplyDownmix(
|
||||
self->hUniDrcDecoder, reverseInChannelMap, reverseOutChannelMap,
|
||||
|
@ -1772,12 +1757,10 @@ LINKSPEC_CPP AAC_DECODER_ERROR aacDecoder_DecodeFrame(HANDLE_AACDECODER self,
|
|||
&self->streamInfo.numChannels); /* self->streamInfo.numChannels
|
||||
may change here */
|
||||
/* apply DRC2/3 gain sequence */
|
||||
for (ch = 0; ch < self->streamInfo.numChannels; ch++) {
|
||||
FDK_drcDec_ProcessTime(self->hUniDrcDecoder, drcDelay,
|
||||
DRC_DEC_DRC2_DRC3, ch,
|
||||
reverseOutChannelMap[ch] - ch, 1,
|
||||
drcWorkBuffer, self->streamInfo.frameSize);
|
||||
}
|
||||
FDK_drcDec_ProcessTime(self->hUniDrcDecoder, drcDelay,
|
||||
DRC_DEC_DRC2_DRC3, 0, 0,
|
||||
self->streamInfo.numChannels, drcWorkBuffer,
|
||||
self->streamInfo.frameSize);
|
||||
|
||||
if (needsDeinterleaving) {
|
||||
FDK_interleave(
|
||||
|
|
|
@ -1090,7 +1090,7 @@ typedef struct {
|
|||
write edit lists for gapless playback. The decoder may not
|
||||
know how much delay is introdcued by SBR, since it may not
|
||||
know if SBR is active at all (implicit signaling),
|
||||
therefore the deocder must take into account any delay
|
||||
therefore the decoder must take into account any delay
|
||||
caused by the SBR module. */
|
||||
|
||||
UCHAR confBuf[64]; /*!< Configuration buffer in binary format as an
|
||||
|
|
|
@ -222,14 +222,16 @@ amm-info@iis.fraunhofer.de
|
|||
#define POW2COEFF_16BIT
|
||||
#define LDCOEFF_16BIT
|
||||
|
||||
#elif defined(__powerpc__)
|
||||
#define ARCH_PREFER_MULT_32x32
|
||||
#elif defined(__riscv)
|
||||
#define ARCH_PREFER_MULT_32x16
|
||||
#define SINETABLE_16BIT
|
||||
#define POW2COEFF_16BIT
|
||||
#define LDCOEFF_16BIT
|
||||
#define WINDOWTABLE_16BIT
|
||||
|
||||
#elif defined(__powerpc__)
|
||||
#define ARCH_PREFER_MULT_32x32
|
||||
|
||||
#else
|
||||
#warning >>>> Please set architecture characterization defines for your platform (FDK_HIGH_PERFORMANCE)! <<<<
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* -----------------------------------------------------------------------------
|
||||
Software License for The Fraunhofer FDK AAC Codec Library for Android
|
||||
|
||||
© Copyright 1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten
|
||||
© Copyright 1995 - 2022 Fraunhofer-Gesellschaft zur Förderung der angewandten
|
||||
Forschung e.V. All rights reserved.
|
||||
|
||||
1. INTRODUCTION
|
||||
|
@ -351,6 +351,12 @@ TRANSPORTDEC_ERROR transportDec_OutOfBandConfig(HANDLE_TRANSPORTDEC hTp,
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* if an error is detected terminate config parsing to avoid that an invalid
|
||||
* config is accepted in the second pass */
|
||||
if (err != TRANSPORTDEC_OK) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == TRANSPORTDEC_OK && fConfigFound) {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* -----------------------------------------------------------------------------
|
||||
Software License for The Fraunhofer FDK AAC Codec Library for Android
|
||||
|
||||
© Copyright 1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten
|
||||
© Copyright 1995 - 2023 Fraunhofer-Gesellschaft zur Förderung der angewandten
|
||||
Forschung e.V. All rights reserved.
|
||||
|
||||
1. INTRODUCTION
|
||||
|
@ -207,7 +207,7 @@ typedef struct {
|
|||
inverse filtering levels */
|
||||
|
||||
PATCH_PARAM
|
||||
patchParam[MAX_NUM_PATCHES]; /*!< new parameter set for patching */
|
||||
patchParam[MAX_NUM_PATCHES + 1]; /*!< new parameter set for patching */
|
||||
WHITENING_FACTORS
|
||||
whFactors; /*!< the pole moving factors for certain
|
||||
whitening levels as indicated in the bitstream
|
||||
|
|
Loading…
Reference in New Issue