aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2019-04-27 23:12:13 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2019-04-27 23:12:13 +0000
commitd7290bf39139a2139364e3a30b1a27ed769cee03 (patch)
tree3823dc51f22ec509c64e73eff0d211937e0a165e
parent6a286c0b83a4ce25f22d7c280525f96fa88a6f8e (diff)
parent47697ab8f4b11c45dc3bda52e30f9f6946a2c2bd (diff)
downloadfdk-aac-d7290bf39139a2139364e3a30b1a27ed769cee03.tar.gz
fdk-aac-d7290bf39139a2139364e3a30b1a27ed769cee03.tar.bz2
fdk-aac-d7290bf39139a2139364e3a30b1a27ed769cee03.zip
Snap for 5511049 from 47697ab8f4b11c45dc3bda52e30f9f6946a2c2bd to rvc-release
Change-Id: Ifcc2b30ab1fb6627de6565ab62ccc6064508ba15
-rw-r--r--documentation/aacDecoder.pdfbin500827 -> 488412 bytes
-rw-r--r--libAACdec/include/aacdecoder_lib.h107
-rw-r--r--libAACdec/src/aacdec_drc.cpp6
-rw-r--r--libAACdec/src/aacdecoder_lib.cpp15
-rw-r--r--libDRCdec/include/FDK_drcDecLib.h3
-rw-r--r--libDRCdec/src/FDK_drcDecLib.cpp8
-rw-r--r--libDRCdec/src/drcDec_selectionProcess.cpp20
-rw-r--r--libDRCdec/src/drcDec_selectionProcess.h3
8 files changed, 101 insertions, 61 deletions
diff --git a/documentation/aacDecoder.pdf b/documentation/aacDecoder.pdf
index 1dec334..eb2a75e 100644
--- a/documentation/aacDecoder.pdf
+++ b/documentation/aacDecoder.pdf
Binary files differ
diff --git a/libAACdec/include/aacdecoder_lib.h b/libAACdec/include/aacdecoder_lib.h
index 3a9b910..6c2fda4 100644
--- a/libAACdec/include/aacdecoder_lib.h
+++ b/libAACdec/include/aacdecoder_lib.h
@@ -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 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten
Forschung e.V. All rights reserved.
1. INTRODUCTION
@@ -741,66 +741,77 @@ typedef enum {
::CONCEAL_INTER. only some AOTs are
supported). \n */
AAC_DRC_BOOST_FACTOR =
- 0x0200, /*!< Dynamic Range Control: Scaling factor for boosting gain
- values. Defines how the boosting DRC factors (conveyed in the
- bitstream) will be applied to the decoded signal. The valid
- values range from 0 (don't apply boost factors) to 127 (fully
- apply boost factors). Default value is 0. */
- AAC_DRC_ATTENUATION_FACTOR =
- 0x0201, /*!< Dynamic Range Control: Scaling factor for attenuating gain
- values. Same as
- ::AAC_DRC_BOOST_FACTOR but for attenuating DRC factors. */
+ 0x0200, /*!< MPEG-4 / MPEG-D Dynamic Range Control (DRC): Scaling factor
+ for boosting gain values. Defines how the boosting DRC factors
+ (conveyed in the bitstream) will be applied to the decoded
+ signal. The valid values range from 0 (don't apply boost
+ factors) to 127 (fully apply boost factors). Default value is 0
+ for MPEG-4 DRC and 127 for MPEG-D DRC. */
+ AAC_DRC_ATTENUATION_FACTOR = 0x0201, /*!< MPEG-4 / MPEG-D DRC: Scaling factor
+ for attenuating gain values. Same as
+ ::AAC_DRC_BOOST_FACTOR but for
+ attenuating DRC factors. */
AAC_DRC_REFERENCE_LEVEL =
- 0x0202, /*!< Dynamic Range Control (DRC): Target reference level. Defines
- the level below full-scale (quantized in steps of 0.25dB) to
- which the output audio signal will be normalized to by the DRC
- module. The parameter controls loudness normalization for both
- MPEG-4 DRC and MPEG-D DRC. The valid values range from 40 (-10
- dBFS) to 127 (-31.75 dBFS). Any value smaller than 0 switches
- off loudness normalization and MPEG-4 DRC. By default, loudness
- normalization and MPEG-4 DRC is switched off. */
+ 0x0202, /*!< MPEG-4 / MPEG-D DRC: Target reference level / decoder target
+ loudness.\n Defines the level below full-scale (quantized in
+ steps of 0.25dB) to which the output audio signal will be
+ normalized to by the DRC module.\n The parameter controls
+ loudness normalization for both MPEG-4 DRC and MPEG-D DRC. The
+ valid values range from 40 (-10 dBFS) to 127 (-31.75 dBFS).\n
+ Example values:\n
+ 124 (-31 dBFS) for audio/video receivers (AVR) or other
+ devices allowing audio playback with high dynamic range,\n 96
+ (-24 dBFS) for TV sets or equivalent devices (default),\n 64
+ (-16 dBFS) for mobile devices where the dynamic range of audio
+ playback is restricted.\n Any value smaller than 0 switches off
+ loudness normalization and MPEG-4 DRC. */
AAC_DRC_HEAVY_COMPRESSION =
- 0x0203, /*!< Dynamic Range Control: En-/Disable DVB specific heavy
- compression (aka RF mode). If set to 1, the decoder will apply
- the compression values from the DVB specific ancillary data
- field. At the same time the MPEG-4 Dynamic Range Control tool
- will be disabled. By default, heavy compression is disabled. */
+ 0x0203, /*!< MPEG-4 DRC: En-/Disable DVB specific heavy compression (aka
+ RF mode). If set to 1, the decoder will apply the compression
+ values from the DVB specific ancillary data field. At the same
+ time the MPEG-4 Dynamic Range Control tool will be disabled. By
+ default, heavy compression is disabled. */
AAC_DRC_DEFAULT_PRESENTATION_MODE =
- 0x0204, /*!< Dynamic Range Control: Default presentation mode (DRC
- parameter handling). \n Defines the handling of the DRC
- parameters boost factor, attenuation factor and heavy
- compression, if no presentation mode is indicated in the
- bitstream.\n For options, see
- ::AAC_DRC_DEFAULT_PRESENTATION_MODE_OPTIONS.\n Default:
+ 0x0204, /*!< MPEG-4 DRC: Default presentation mode (DRC parameter
+ handling). \n Defines the handling of the DRC parameters boost
+ factor, attenuation factor and heavy compression, if no
+ presentation mode is indicated in the bitstream.\n For options,
+ see ::AAC_DRC_DEFAULT_PRESENTATION_MODE_OPTIONS.\n Default:
::AAC_DRC_PARAMETER_HANDLING_DISABLED */
AAC_DRC_ENC_TARGET_LEVEL =
- 0x0205, /*!< Dynamic Range Control: Encoder target level for light (i.e.
- not heavy) compression.\n If known, this declares the target
- reference level that was assumed at the encoder for calculation
- of limiting gains. The valid values range from 0 (full-scale)
- to 127 (31.75 dB below full-scale). This parameter is used only
+ 0x0205, /*!< MPEG-4 DRC: Encoder target level for light (i.e. not heavy)
+ compression.\n If known, this declares the target reference
+ level that was assumed at the encoder for calculation of
+ limiting gains. The valid values range from 0 (full-scale) to
+ 127 (31.75 dB below full-scale). This parameter is used only
with ::AAC_DRC_PARAMETER_HANDLING_ENABLED and ignored
otherwise.\n Default: 127 (worst-case assumption).\n */
+ AAC_UNIDRC_SET_EFFECT = 0x0206, /*!< MPEG-D DRC: Request a DRC effect type for
+ selection of a DRC set.\n Supported indices
+ are:\n -1: DRC off. Completely disables
+ MPEG-D DRC.\n 0: None (default). Disables
+ MPEG-D DRC, but automatically enables DRC
+ if necessary to prevent clipping.\n 1: Late
+ night\n 2: Noisy environment\n 3: Limited
+ playback range\n 4: Low playback level\n 5:
+ Dialog enhancement\n 6: General
+ compression. Used for generally enabling
+ MPEG-D DRC without particular request.\n */
+ AAC_UNIDRC_ALBUM_MODE =
+ 0x0207, /*!< MPEG-D DRC: Enable album mode. 0: Disabled (default), 1:
+ Enabled.\n Disabled album mode leads to application of gain
+ sequences for fading in and out, if provided in the
+ bitstream.\n Enabled album mode makes use of dedicated album
+ loudness information, if provided in the bitstream.\n */
AAC_QMF_LOWPOWER = 0x0300, /*!< Quadrature Mirror Filter (QMF) Bank processing
mode. \n -1: Use internal default. Implies MPEG
Surround partially complex accordingly. \n 0:
Use complex QMF data mode. \n 1: Use real (low
power) QMF data mode. \n */
AAC_TPDEC_CLEAR_BUFFER =
- 0x0603, /*!< Clear internal bit stream buffer of transport layers. The
- decoder will start decoding at new data passed after this event
- and any previous data is discarded. */
- AAC_UNIDRC_SET_EFFECT = 0x0903 /*!< MPEG-D DRC: Request a DRC effect type for
- selection of a DRC set.\n Supported indices
- are:\n -1: DRC off. Completely disables
- MPEG-D DRC.\n 0: None (default). Disables
- MPEG-D DRC, but automatically enables DRC if
- necessary to prevent clipping.\n 1: Late
- night\n 2: Noisy environment\n 3: Limited
- playback range\n 4: Low playback level\n 5:
- Dialog enhancement\n 6: General compression.
- Used for generally enabling MPEG-D DRC
- without particular request.\n */
+ 0x0603 /*!< Clear internal bit stream buffer of transport layers. The
+ decoder will start decoding at new data passed after this event
+ and any previous data is discarded. */
} AACDEC_PARAM;
diff --git a/libAACdec/src/aacdec_drc.cpp b/libAACdec/src/aacdec_drc.cpp
index 922a09e..4129d0f 100644
--- a/libAACdec/src/aacdec_drc.cpp
+++ b/libAACdec/src/aacdec_drc.cpp
@@ -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 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten
Forschung e.V. All rights reserved.
1. INTRODUCTION
@@ -174,9 +174,9 @@ void aacDecoder_drcInit(HANDLE_AAC_DRC self) {
pParams->usrCut = FL2FXCONST_DBL(0.0f);
pParams->boost = FL2FXCONST_DBL(0.0f);
pParams->usrBoost = FL2FXCONST_DBL(0.0f);
- pParams->targetRefLevel = -1;
+ pParams->targetRefLevel = 96;
pParams->expiryFrame = AACDEC_DRC_DFLT_EXPIRY_FRAMES;
- pParams->applyDigitalNorm = OFF;
+ pParams->applyDigitalNorm = ON;
pParams->applyHeavyCompression = OFF;
pParams->usrApplyHeavyCompression = OFF;
diff --git a/libAACdec/src/aacdecoder_lib.cpp b/libAACdec/src/aacdecoder_lib.cpp
index c214ba1..4046d66 100644
--- a/libAACdec/src/aacdecoder_lib.cpp
+++ b/libAACdec/src/aacdecoder_lib.cpp
@@ -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 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten
Forschung e.V. All rights reserved.
1. INTRODUCTION
@@ -119,8 +119,8 @@ amm-info@iis.fraunhofer.de
/* Decoder library info */
#define AACDECODER_LIB_VL0 3
-#define AACDECODER_LIB_VL1 0
-#define AACDECODER_LIB_VL2 0
+#define AACDECODER_LIB_VL1 1
+#define AACDECODER_LIB_VL2 2
#define AACDECODER_LIB_TITLE "AAC Decoder Lib"
#ifdef __ANDROID__
#define AACDECODER_LIB_BUILD_DATE ""
@@ -823,11 +823,15 @@ LINKSPEC_CPP AAC_DECODER_ERROR aacDecoder_SetParam(
case AAC_DRC_ATTENUATION_FACTOR:
/* DRC compression factor (where 0 is no and 127 is max compression) */
errorStatus = aacDecoder_drcSetParam(hDrcInfo, DRC_CUT_SCALE, value);
+ uniDrcErr = FDK_drcDec_SetParam(self->hUniDrcDecoder, DRC_DEC_COMPRESS,
+ value * (FL2FXCONST_DBL(0.5f / 127.0f)));
break;
case AAC_DRC_BOOST_FACTOR:
/* DRC boost factor (where 0 is no and 127 is max boost) */
errorStatus = aacDecoder_drcSetParam(hDrcInfo, DRC_BOOST_SCALE, value);
+ uniDrcErr = FDK_drcDec_SetParam(self->hUniDrcDecoder, DRC_DEC_BOOST,
+ value * (FL2FXCONST_DBL(0.5f / 127.0f)));
break;
case AAC_DRC_REFERENCE_LEVEL:
@@ -871,6 +875,11 @@ LINKSPEC_CPP AAC_DECODER_ERROR aacDecoder_SetParam(
uniDrcErr = FDK_drcDec_SetParam(self->hUniDrcDecoder, DRC_DEC_EFFECT_TYPE,
(FIXP_DBL)value);
break;
+ case AAC_UNIDRC_ALBUM_MODE:
+ uniDrcErr = FDK_drcDec_SetParam(self->hUniDrcDecoder, DRC_DEC_ALBUM_MODE,
+ (FIXP_DBL)value);
+ break;
+
case AAC_TPDEC_CLEAR_BUFFER:
errTp = transportDec_SetParam(hTpDec, TPDEC_PARAM_RESET, 1);
self->streamInfo.numLostAccessUnits = 0;
diff --git a/libDRCdec/include/FDK_drcDecLib.h b/libDRCdec/include/FDK_drcDecLib.h
index e187e18..9a99ed1 100644
--- a/libDRCdec/include/FDK_drcDecLib.h
+++ b/libDRCdec/include/FDK_drcDecLib.h
@@ -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 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten
Forschung e.V. All rights reserved.
1. INTRODUCTION
@@ -134,6 +134,7 @@ typedef enum {
DRC_DEC_EFFECT_TYPE,
DRC_DEC_EFFECT_TYPE_FALLBACK_CODE,
DRC_DEC_LOUDNESS_MEASUREMENT_METHOD,
+ DRC_DEC_ALBUM_MODE,
/* set only system (not user) parameters */
DRC_DEC_DOWNMIX_ID,
DRC_DEC_TARGET_CHANNEL_COUNT_REQUESTED, /**< number of output channels
diff --git a/libDRCdec/src/FDK_drcDecLib.cpp b/libDRCdec/src/FDK_drcDecLib.cpp
index 16b8152..8f3faa0 100644
--- a/libDRCdec/src/FDK_drcDecLib.cpp
+++ b/libDRCdec/src/FDK_drcDecLib.cpp
@@ -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 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten
Forschung e.V. All rights reserved.
1. INTRODUCTION
@@ -440,6 +440,12 @@ FDK_drcDec_SetParam(HANDLE_DRC_DECODER hDrcDec,
requestValue, &(hDrcDec->selProcInputDiff));
if (sErr) return DRC_DEC_PARAM_OUT_OF_RANGE;
break;
+ case DRC_DEC_ALBUM_MODE:
+ sErr = drcDec_SelectionProcess_SetParam(hDrcDec->hSelectionProc,
+ SEL_PROC_ALBUM_MODE, requestValue,
+ &(hDrcDec->selProcInputDiff));
+ if (sErr) return DRC_DEC_PARAM_OUT_OF_RANGE;
+ break;
default:
return DRC_DEC_INVALID_PARAM;
}
diff --git a/libDRCdec/src/drcDec_selectionProcess.cpp b/libDRCdec/src/drcDec_selectionProcess.cpp
index 5653e22..c33bf74 100644
--- a/libDRCdec/src/drcDec_selectionProcess.cpp
+++ b/libDRCdec/src/drcDec_selectionProcess.cpp
@@ -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 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten
Forschung e.V. All rights reserved.
1. INTRODUCTION
@@ -555,6 +555,11 @@ drcDec_SelectionProcess_SetParam(HANDLE_DRC_SELECTION_PROCESS hInstance,
diff |= _compAssign(&pSelProcInput->loudnessMeasurementMethod,
requestValueInt);
break;
+ case SEL_PROC_ALBUM_MODE:
+ if ((requestValueInt < 0) || (requestValueInt > 1))
+ return DRCDEC_SELECTION_PROCESS_PARAM_OUT_OF_RANGE;
+ diff |= _compAssign(&pSelProcInput->albumMode, requestValueInt);
+ break;
case SEL_PROC_DOWNMIX_ID:
diff |=
_compAssign(&pSelProcInput->targetConfigRequestType, TCRT_DOWNMIX_ID);
@@ -598,14 +603,21 @@ drcDec_SelectionProcess_SetParam(HANDLE_DRC_SELECTION_PROCESS hInstance,
if ((requestValue < (FIXP_DBL)0) ||
(requestValue > FL2FXCONST_DBL(1.0f / (float)(1 << 1))))
return DRCDEC_SELECTION_PROCESS_PARAM_OUT_OF_RANGE;
- diff |= _compAssign(&pSelProcInput->boost, FX_DBL2FX_SGL(requestValue));
+ diff |= _compAssign(
+ &pSelProcInput->boost,
+ FX_DBL2FX_SGL(
+ requestValue +
+ (FIXP_DBL)(1 << 15))); /* convert to FIXP_SGL with rounding */
break;
case SEL_PROC_COMPRESS:
if ((requestValue < (FIXP_DBL)0) ||
(requestValue > FL2FXCONST_DBL(1.0f / (float)(1 << 1))))
return DRCDEC_SELECTION_PROCESS_PARAM_OUT_OF_RANGE;
- diff |=
- _compAssign(&pSelProcInput->compress, FX_DBL2FX_SGL(requestValue));
+ diff |= _compAssign(
+ &pSelProcInput->compress,
+ FX_DBL2FX_SGL(
+ requestValue +
+ (FIXP_DBL)(1 << 15))); /* convert to FIXP_SGL with rounding */
break;
default:
return DRCDEC_SELECTION_PROCESS_INVALID_PARAM;
diff --git a/libDRCdec/src/drcDec_selectionProcess.h b/libDRCdec/src/drcDec_selectionProcess.h
index 9e0e3fb..420bae6 100644
--- a/libDRCdec/src/drcDec_selectionProcess.h
+++ b/libDRCdec/src/drcDec_selectionProcess.h
@@ -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 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten
Forschung e.V. All rights reserved.
1. INTRODUCTION
@@ -146,6 +146,7 @@ typedef enum {
SEL_PROC_EFFECT_TYPE,
SEL_PROC_EFFECT_TYPE_FALLBACK_CODE,
SEL_PROC_LOUDNESS_MEASUREMENT_METHOD,
+ SEL_PROC_ALBUM_MODE,
SEL_PROC_DOWNMIX_ID,
SEL_PROC_TARGET_LAYOUT,
SEL_PROC_TARGET_CHANNEL_COUNT,