From 6cc0003b74222dddd54ae985a3446b2c478ff353 Mon Sep 17 00:00:00 2001 From: Pavlin Radoslavov Date: Thu, 19 Jan 2017 12:03:23 -0800 Subject: [PATCH 1/3] Change build config of aac from Android.mk to Android.bp * In an effort to modernize build configurations to the new Soong system, we need to upgrade existing Android.mk files to Android.bp * This file is done by using the following steps: 1. Manually removing all *_sources from Android.mk, because of the unusual make logic they use 2. Running the auto-conversion tool: androidmk Android.mk > Android.bp 3. Editing the result Android.bp: 3.1. Writing the "srcs" list 3.2. Removing the escaping around -Wno-#warnings in cflags, because those are not needed anymore 3.3. Renamed local_include_dirs to export_include_dirs to facilititate the inclusion of header files. It appears users of libFraunhoferAAC are using header files from all include directories, hence the renaming. Test: Code compilation ("mm" in external/aac, and "make" in top-directory) Bug: b/32958753 b/34454142 Change-Id: Ie89f73722908e8734f4b88f1407952311ec064af --- Android.bp | 32 +++++++++++++++++++++++++++++ Android.mk | 59 ------------------------------------------------------ 2 files changed, 32 insertions(+), 59 deletions(-) create mode 100644 Android.bp delete mode 100644 Android.mk diff --git a/Android.bp b/Android.bp new file mode 100644 index 0000000..75fe8af --- /dev/null +++ b/Android.bp @@ -0,0 +1,32 @@ +cc_library_static { + name: "libFraunhoferAAC", + srcs: [ + "libAACdec/src/*.cpp", + "libAACenc/src/*.cpp", + "libPCMutils/src/*.cpp", + "libFDK/src/*.cpp", + "libSYS/src/*.cpp", + "libMpegTPDec/src/*.cpp", + "libMpegTPEnc/src/*.cpp", + "libSBRdec/src/*.cpp", + "libSBRenc/src/*.cpp", + ], + cflags: [ + "-Wno-sequence-point", + "-Wno-extra", + "-Wno-#warnings", + "-Wno-constant-logical-operand", + "-Wno-self-assign", + ], + export_include_dirs: [ + "libAACdec/include", + "libAACenc/include", + "libPCMutils/include", + "libFDK/include", + "libSYS/include", + "libMpegTPDec/include", + "libMpegTPEnc/include", + "libSBRdec/include", + "libSBRenc/include", + ], +} diff --git a/Android.mk b/Android.mk deleted file mode 100644 index 18bda23..0000000 --- a/Android.mk +++ /dev/null @@ -1,59 +0,0 @@ -LOCAL_PATH:= $(call my-dir) -include $(CLEAR_VARS) - -aacdec_sources := $(sort $(wildcard $(LOCAL_PATH)/libAACdec/src/*.cpp)) -aacdec_sources := $(aacdec_sources:$(LOCAL_PATH)/libAACdec/src/%=%) - -aacenc_sources := $(sort $(wildcard $(LOCAL_PATH)/libAACenc/src/*.cpp)) -aacenc_sources := $(aacenc_sources:$(LOCAL_PATH)/libAACenc/src/%=%) - -pcmutils_sources := $(sort $(wildcard $(LOCAL_PATH)/libPCMutils/src/*.cpp)) -pcmutils_sources := $(pcmutils_sources:$(LOCAL_PATH)/libPCMutils/src/%=%) - -fdk_sources := $(sort $(wildcard $(LOCAL_PATH)/libFDK/src/*.cpp)) -fdk_sources := $(fdk_sources:$(LOCAL_PATH)/libFDK/src/%=%) - -sys_sources := $(sort $(wildcard $(LOCAL_PATH)/libSYS/src/*.cpp)) -sys_sources := $(sys_sources:$(LOCAL_PATH)/libSYS/src/%=%) - -mpegtpdec_sources := $(sort $(wildcard $(LOCAL_PATH)/libMpegTPDec/src/*.cpp)) -mpegtpdec_sources := $(mpegtpdec_sources:$(LOCAL_PATH)/libMpegTPDec/src/%=%) - -mpegtpenc_sources := $(sort $(wildcard $(LOCAL_PATH)/libMpegTPEnc/src/*.cpp)) -mpegtpenc_sources := $(mpegtpenc_sources:$(LOCAL_PATH)/libMpegTPEnc/src/%=%) - -sbrdec_sources := $(sort $(wildcard $(LOCAL_PATH)/libSBRdec/src/*.cpp)) -sbrdec_sources := $(sbrdec_sources:$(LOCAL_PATH)/libSBRdec/src/%=%) - -sbrenc_sources := $(sort $(wildcard $(LOCAL_PATH)/libSBRenc/src/*.cpp)) -sbrenc_sources := $(sbrenc_sources:$(LOCAL_PATH)/libSBRenc/src/%=%) - -LOCAL_SRC_FILES := \ - $(aacdec_sources:%=libAACdec/src/%) \ - $(aacenc_sources:%=libAACenc/src/%) \ - $(pcmutils_sources:%=libPCMutils/src/%) \ - $(fdk_sources:%=libFDK/src/%) \ - $(sys_sources:%=libSYS/src/%) \ - $(mpegtpdec_sources:%=libMpegTPDec/src/%) \ - $(mpegtpenc_sources:%=libMpegTPEnc/src/%) \ - $(sbrdec_sources:%=libSBRdec/src/%) \ - $(sbrenc_sources:%=libSBRenc/src/%) - -LOCAL_CFLAGS += -Wno-sequence-point -Wno-extra -LOCAL_CFLAGS += "-Wno-\#warnings" -Wno-constant-logical-operand -Wno-self-assign - -LOCAL_C_INCLUDES := \ - $(LOCAL_PATH)/libAACdec/include \ - $(LOCAL_PATH)/libAACenc/include \ - $(LOCAL_PATH)/libPCMutils/include \ - $(LOCAL_PATH)/libFDK/include \ - $(LOCAL_PATH)/libSYS/include \ - $(LOCAL_PATH)/libMpegTPDec/include \ - $(LOCAL_PATH)/libMpegTPEnc/include \ - $(LOCAL_PATH)/libSBRdec/include \ - $(LOCAL_PATH)/libSBRenc/include - - -LOCAL_MODULE:= libFraunhoferAAC - -include $(BUILD_STATIC_LIBRARY) From 2cd9fe39642bf3a4b8ef36ccff307a3e24bdb196 Mon Sep 17 00:00:00 2001 From: Jakub Pawlowski Date: Tue, 21 Feb 2017 10:29:53 -0800 Subject: [PATCH 2/3] Linux compilation fix Test: manual Change-Id: Ie374e47b93e8fa3a44c731cb73f7e151d265c74c --- libPCMutils/src/pcmutils_lib.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libPCMutils/src/pcmutils_lib.cpp b/libPCMutils/src/pcmutils_lib.cpp index e6ac3ff..9303d16 100644 --- a/libPCMutils/src/pcmutils_lib.cpp +++ b/libPCMutils/src/pcmutils_lib.cpp @@ -88,7 +88,9 @@ amm-info@iis.fraunhofer.de expansion in the PCM time domain. *******************************************************************************/ +#ifndef __linux__ #include +#endif #include "pcmutils_lib.h" #include "genericStds.h" @@ -2079,7 +2081,9 @@ PCMDMX_ERROR pcmDmx_ApplyFrame ( } } if (ch != numInChannels) { +#ifndef __linux__ ALOGE("b/23876444"); +#endif return PCMDMX_INVALID_ARGUMENT; } From 64bd48e21b42107fe93ac8bc0fb8cc24bb8643df Mon Sep 17 00:00:00 2001 From: liuchao Date: Thu, 23 Feb 2017 12:05:54 +0800 Subject: [PATCH 3/3] Fix not properly handled NULL-pointer access before check in aac lib 1) Fixes some potential NULL-pointer access in case input pointer is passed NULL 2) Modified some for lazy init Test: mm -j 8 Change-Id: I7fca97e1d9f70d8e8c1533b519181af35a5468f7 --- libAACdec/src/aacdecoder_lib.cpp | 19 ++++++------------- libAACenc/src/metadata_main.cpp | 10 ++++------ 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/libAACdec/src/aacdecoder_lib.cpp b/libAACdec/src/aacdecoder_lib.cpp index 8863da5..50efb0f 100644 --- a/libAACdec/src/aacdecoder_lib.cpp +++ b/libAACdec/src/aacdecoder_lib.cpp @@ -791,36 +791,29 @@ LINKSPEC_CPP AAC_DECODER_ERROR aacDecoder_DecodeFrame( const UINT flags) { AAC_DECODER_ERROR ErrorStatus; - INT layer; - INT nBits; - INT interleaved = self->outputInterleaved; - HANDLE_FDK_BITSTREAM hBs; int fTpInterruption = 0; /* Transport originated interruption detection. */ int fTpConceal = 0; /* Transport originated concealment. */ - INT_PCM *pTimeData = NULL; - INT timeDataSize = 0; - if (self == NULL) { return AAC_DEC_INVALID_HANDLE; } - - pTimeData = self->pcmOutputBuffer; - timeDataSize = sizeof(self->pcmOutputBuffer)/sizeof(*self->pcmOutputBuffer); + INT interleaved = self->outputInterleaved; + INT_PCM *pTimeData = self->pcmOutputBuffer; + INT timeDataSize = sizeof(self->pcmOutputBuffer)/sizeof(*self->pcmOutputBuffer); if (flags & AACDEC_INTR) { self->streamInfo.numLostAccessUnits = 0; } - hBs = transportDec_GetBitstream(self->hInput, 0); + HANDLE_FDK_BITSTREAM hBs = transportDec_GetBitstream(self->hInput, 0); /* Get current bits position for bitrate calculation. */ - nBits = FDKgetValidBits(hBs); + INT nBits = FDKgetValidBits(hBs); if (! (flags & (AACDEC_CONCEAL | AACDEC_FLUSH) ) ) { TRANSPORTDEC_ERROR err; - for(layer = 0; layer < self->nrOfLayers; layer++) + for(INT layer = 0; layer < self->nrOfLayers; layer++) { err = transportDec_ReadAccessUnit(self->hInput, layer); if (err != TRANSPORTDEC_OK) { diff --git a/libAACenc/src/metadata_main.cpp b/libAACenc/src/metadata_main.cpp index e920793..90f8f4e 100644 --- a/libAACenc/src/metadata_main.cpp +++ b/libAACenc/src/metadata_main.cpp @@ -488,14 +488,12 @@ static FDK_METADATA_ERROR ProcessCompressor( { FDK_METADATA_ERROR err = METADATA_OK; - INT dynrng, compr; - DRC_PROFILE profileDrc = convertProfile(pMetadata->mpegDrc.drc_profile); - DRC_PROFILE profileComp = convertProfile(pMetadata->etsiAncData.comp_profile); - if ( (pMetadata==NULL) || (hDrcComp==NULL) ) { err = METADATA_INVALID_HANDLE; return err; } + DRC_PROFILE profileDrc = convertProfile(pMetadata->mpegDrc.drc_profile); + DRC_PROFILE profileComp = convertProfile(pMetadata->etsiAncData.comp_profile); /* first, check if profile is same as last frame * otherwise, update setup */ @@ -511,8 +509,8 @@ static FDK_METADATA_ERROR ProcessCompressor( } /* in case of embedding external values, copy this now (limiter may overwrite them) */ - dynrng = decodeDynrng(pMetadata->mpegDrc.dyn_rng_ctl[0], pMetadata->mpegDrc.dyn_rng_sgn[0]); - compr = decodeCompr(pMetadata->etsiAncData.compression_value); + INT dynrng = decodeDynrng(pMetadata->mpegDrc.dyn_rng_ctl[0], pMetadata->mpegDrc.dyn_rng_sgn[0]); + INT compr = decodeCompr(pMetadata->etsiAncData.compression_value); /* Call compressor */ if (FDK_DRC_Generator_Calc(hDrcComp,