Skip to content

Commit

Permalink
Merge remote-tracking branch 'aosp/main'
Browse files Browse the repository at this point in the history
  • Loading branch information
mstorsjo committed Oct 6, 2023
2 parents 0bfca3e + 5543791 commit 0f91e9b
Show file tree
Hide file tree
Showing 13 changed files with 45 additions and 95 deletions.
2 changes: 1 addition & 1 deletion Android.bp
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
4 changes: 4 additions & 0 deletions METADATA
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# *** THIS PACKAGE HAS SPECIAL LICENSING CONDITIONS. PLEASE
# CONSULT THE OWNERS AND [email protected] 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
}
8 changes: 8 additions & 0 deletions fuzzer/Android.bp
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,14 @@ cc_defaults {
"[email protected]",
],
componentid: 155276,
hotlists: [
"4593311",
],
description: "The fuzzer targets the APIs of libFraunhoferAAC",
vector: "remote",
service_privilege: "privileged",
users: "multi_user",
fuzzed_code_usage: "shipped",
},
}

Expand Down
4 changes: 4 additions & 0 deletions libAACdec/include/aacdecoder_lib.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
10 changes: 1 addition & 9 deletions libAACdec/src/aacdec_drc.cpp
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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);
}
Expand Down Expand Up @@ -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) */
Expand Down Expand Up @@ -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;
Expand Down
5 changes: 2 additions & 3 deletions libAACdec/src/aacdec_drc.h
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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;

/**
Expand Down
7 changes: 1 addition & 6 deletions libAACdec/src/aacdec_drc_types.h
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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
Expand Down
45 changes: 1 addition & 44 deletions libAACdec/src/aacdecoder.cpp
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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 */
Expand Down Expand Up @@ -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(
Expand Down
35 changes: 9 additions & 26 deletions libAACdec/src/aacdecoder_lib.cpp
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -1683,16 +1683,14 @@ 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;
FIXP_DBL *drcWorkBuffer = NULL;
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;
Expand All @@ -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. */
Expand Down Expand Up @@ -1760,24 +1747,20 @@ 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,
drcWorkBuffer,
&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(
Expand Down
2 changes: 1 addition & 1 deletion libAACenc/include/aacenc_lib.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 4 additions & 2 deletions libFDK/include/FDK_archdef.h
Original file line number Diff line number Diff line change
Expand Up @@ -222,14 +222,16 @@ [email protected]
#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)! <<<<

Expand Down
8 changes: 7 additions & 1 deletion libMpegTPDec/src/tpdec_lib.cpp
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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) {
Expand Down
4 changes: 2 additions & 2 deletions libSBRdec/src/lpp_tran.h
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 0f91e9b

Please sign in to comment.