Fix call to function sbrDecoder_Header() through pointer to incorrect function type.

While testing FDK in Android P DP3 x86 64bit emulator we observed a runtime error.
The function parameter of the callback didn't use a typeless pointer.
Following patch contains a revised sbr decoder callback function with explicit data type cast to be inline with all other callbacks in FDK.

Bug: 112662306
Bug: 116075869
Test: on x86: atest DecoderTestXheAac ; atest DecoderTestAacDrc

Change-Id: Id224de22beaf2eb9631babd838c4c3ceae0a801e
Merged-In: Idc9c44a9755b8151d5c7d8107696f43ac592413b
This commit is contained in:
Fraunhofer IIS FDK 2018-06-08 18:04:02 +02:00 committed by Jean-Michel Trivi
parent 78f80da872
commit 9db742a7d3
1 changed files with 18 additions and 1 deletions

View File

@ -368,6 +368,23 @@ static INT aacDecoder_CtrlCFGChangeCallback(
return errTp; return errTp;
} }
static INT aacDecoder_SbrCallback(
void *handle, HANDLE_FDK_BITSTREAM hBs, const INT sampleRateIn,
const INT sampleRateOut, const INT samplesPerFrame,
const AUDIO_OBJECT_TYPE coreCodec, const MP4_ELEMENT_ID elementID,
const INT elementIndex, const UCHAR harmonicSBR,
const UCHAR stereoConfigIndex, const UCHAR configMode, UCHAR *configChanged,
const INT downscaleFactor) {
HANDLE_SBRDECODER self = (HANDLE_SBRDECODER)handle;
INT errTp = sbrDecoder_Header(self, hBs, sampleRateIn, sampleRateOut,
samplesPerFrame, coreCodec, elementID,
elementIndex, harmonicSBR, stereoConfigIndex,
configMode, configChanged, downscaleFactor);
return errTp;
}
static INT aacDecoder_SscCallback(void *handle, HANDLE_FDK_BITSTREAM hBs, static INT aacDecoder_SscCallback(void *handle, HANDLE_FDK_BITSTREAM hBs,
const AUDIO_OBJECT_TYPE coreCodec, const AUDIO_OBJECT_TYPE coreCodec,
const INT samplingRate, const INT samplingRate,
@ -959,7 +976,7 @@ LINKSPEC_CPP HANDLE_AACDECODER aacDecoder_Open(TRANSPORT_TYPE transportFmt,
goto bail; goto bail;
} }
aacDec->qmfModeUser = NOT_DEFINED; aacDec->qmfModeUser = NOT_DEFINED;
transportDec_RegisterSbrCallback(aacDec->hInput, (cbSbr_t)sbrDecoder_Header, transportDec_RegisterSbrCallback(aacDec->hInput, aacDecoder_SbrCallback,
(void *)aacDec->hSbrDecoder); (void *)aacDec->hSbrDecoder);
if (mpegSurroundDecoder_Open( if (mpegSurroundDecoder_Open(