diff options
author | Jean-Michel Trivi <jmtrivi@google.com> | 2013-08-27 16:28:09 -0700 |
---|---|---|
committer | Jean-Michel Trivi <jmtrivi@google.com> | 2013-08-27 16:28:09 -0700 |
commit | 5016eb7f6582fbb2d72d79be782325a12df08864 (patch) | |
tree | bc2325ebc6840a20d25f35a0c5a6a13454d2e402 /libAACdec/src/aacdecoder_lib.cpp | |
parent | b9774f90651be61065ae40171fc321f6ced60e49 (diff) | |
download | fdk-aac-5016eb7f6582fbb2d72d79be782325a12df08864.tar.gz fdk-aac-5016eb7f6582fbb2d72d79be782325a12df08864.tar.bz2 fdk-aac-5016eb7f6582fbb2d72d79be782325a12df08864.zip |
Decoder stability, sanity checks improvements
* AAC-Decoder
- Improved PCE handling for saver (re-)configuration and metadata processing.
Modified file(s):
libAACdec/src/aacdecoder.cpp
libAACdec/src/aacdecoder_lib.cpp
- Transport layer changes (config found) -> to be evaluated.
Modified file(s):
libMpegTPDec/include/tpdec_lib.h
libMpegTPDec/src/tpdec_latm.h
libMpegTPDec/src/version
libMpegTPDec/src/tpdec_asc.cpp
libMpegTPDec/src/tpdec_lib.cpp
libMpegTPDec/src/tpdec_adts.cpp
libMpegTPDec/src/tpdec_latm.cpp
libSYS/include/FDK_audio.h
libSYS/src/genericStds.cpp
- Enable concealment state machine to skip states if the corresponding
parameter is set to zero.
Modified file(s):
libAACdec/src/conceal.cpp
- Add some more sanity checks to avoid segmentation faults especially when
setting dynamic API params.
Modified file(s):
libAACdec/src/aacdecoder_lib.cpp
- Fix to do a fail-safe initialization of IMDCT for all channels even with
corrupt streams.
Modified file(s):
libAACdec/src/aacdecoder.cpp
- HCR decoder fix (remove warnings).
Modified file(s):
libAACdec/src/block.cpp
- Fix border calculation in SBR decoder's LPP transposer patch determination.
Modified file(s):
libSBRdec/src/env_dec.cpp
libSBRdec/src/sbrdecoder.cpp
libSBRdec/src/lpp_tran.cpp
Bug 9428126
Change-Id: Ib415b702b88a7ec8e9a55789d79cafb39296d26b
Diffstat (limited to 'libAACdec/src/aacdecoder_lib.cpp')
-rw-r--r-- | libAACdec/src/aacdecoder_lib.cpp | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/libAACdec/src/aacdecoder_lib.cpp b/libAACdec/src/aacdecoder_lib.cpp index 247fcef..9a70f24 100644 --- a/libAACdec/src/aacdecoder_lib.cpp +++ b/libAACdec/src/aacdecoder_lib.cpp @@ -110,7 +110,7 @@ amm-info@iis.fraunhofer.de /* Decoder library info */ #define AACDECODER_LIB_VL0 2 #define AACDECODER_LIB_VL1 5 -#define AACDECODER_LIB_VL2 3 +#define AACDECODER_LIB_VL2 4 #define AACDECODER_LIB_TITLE "AAC Decoder Lib" #define AACDECODER_LIB_BUILD_DATE __DATE__ #define AACDECODER_LIB_BUILD_TIME __TIME__ @@ -261,7 +261,7 @@ setConcealMethod ( const HANDLE_AACDECODER self, /*!< Handle of the decoder i HANDLE_SBRDECODER hSbrDec = NULL; HANDLE_AAC_DRC hDrcInfo = NULL; HANDLE_PCM_DOWNMIX hPcmDmx = NULL; - CConcealmentMethod backupMethod; + CConcealmentMethod backupMethod = ConcealMethodNone; int backupDelay = 0; int bsDelay = 0; @@ -396,11 +396,15 @@ aacDecoder_SetParam ( const HANDLE_AACDECODER self, /*!< Handle of the decode AAC_DECODER_ERROR errorStatus = AAC_DEC_OK; CConcealParams *pConcealData = NULL; HANDLE_AAC_DRC hDrcInfo = NULL; + HANDLE_PCM_DOWNMIX hPcmDmx = NULL; /* check decoder handle */ if (self != NULL) { pConcealData = &self->concealCommonData; hDrcInfo = self->hDrcInfo; + hPcmDmx = self->hPcmUtils; + } else { + errorStatus = AAC_DEC_INVALID_HANDLE; } /* configure the subsystems */ @@ -417,11 +421,14 @@ aacDecoder_SetParam ( const HANDLE_AACDECODER self, /*!< Handle of the decode break; case AAC_PCM_OUTPUT_CHANNELS: + if (value < -1 || value > (6)) { + return AAC_DEC_SET_PARAM_FAIL; + } { PCMDMX_ERROR err; err = pcmDmx_SetParam ( - self->hPcmUtils, + hPcmDmx, NUMBER_OF_OUTPUT_CHANNELS, value ); @@ -441,7 +448,7 @@ aacDecoder_SetParam ( const HANDLE_AACDECODER self, /*!< Handle of the decode PCMDMX_ERROR err; err = pcmDmx_SetParam ( - self->hPcmUtils, + hPcmDmx, DUAL_CHANNEL_DOWNMIX_MODE, value ); @@ -459,10 +466,14 @@ aacDecoder_SetParam ( const HANDLE_AACDECODER self, /*!< Handle of the decode case AAC_PCM_OUTPUT_CHANNEL_MAPPING: switch (value) { case 0: - self->channelOutputMapping = channelMappingTablePassthrough; + if (self != NULL) { + self->channelOutputMapping = channelMappingTablePassthrough; + } break; case 1: - self->channelOutputMapping = channelMappingTableWAV; + if (self != NULL) { + self->channelOutputMapping = channelMappingTableWAV; + } break; default: errorStatus = AAC_DEC_SET_PARAM_FAIL; @@ -472,6 +483,9 @@ aacDecoder_SetParam ( const HANDLE_AACDECODER self, /*!< Handle of the decode case AAC_QMF_LOWPOWER: + if (value < -1 || value > 1) { + return AAC_DEC_SET_PARAM_FAIL; + } if (self == NULL) { return AAC_DEC_INVALID_HANDLE; } |