Loading apps/isar_post_rend.c +6 −6 Original line number Diff line number Diff line Loading @@ -952,12 +952,12 @@ int main( inBuffer.config.is_cldfb = 0; inBuffer.config.numChannels = (int16_t) totalNumInChannels; inBuffer.data_fx = inFloatBuffer_fx; inBuffer.q_data_fx = malloc( sizeof( Word16 ) ); inBuffer.pq_fact = malloc( sizeof( Word16 ) ); outBuffer.config.is_cldfb = 0; outBuffer.config.numChannels = (int16_t) numOutChannels; outBuffer.data_fx = outFloatBuffer_fx; outBuffer.q_data_fx = malloc( sizeof( Word16 ) ); outBuffer.pq_fact = malloc( sizeof( Word16 ) ); memset( outBuffer.data_fx, 0, outBuffer.config.numSamplesPerChannel * outBuffer.config.numChannels * sizeof( Word32 ) ); Loading Loading @@ -1035,7 +1035,7 @@ int main( /* Convert from int to float and from interleaved to packed */ convertInputBuffer( inpInt16Buffer, numSamplesRead, inBuffer.config.numSamplesPerChannel, num_in_channels, inFloatBuffer_fx ); *inBuffer.q_data_fx = 0; *inBuffer.pq_fact = 0; int16_t num_subframes, sf_idx; num_subframes = (int16_t) args.render_framesize; Loading Loading @@ -1121,7 +1121,7 @@ int main( /* Convert from float to int and from packed to interleaved. * Values in outFloatBuffer are guaranteed to be within range INT16_MIN:INT16_MAX */ convertOutputBuffer( outFloatBuffer_fx, *outBuffer.q_data_fx, outBuffer.config.numSamplesPerChannel, num_out_channels, outInt16Buffer ); convertOutputBuffer( outFloatBuffer_fx, *outBuffer.pq_fact, outBuffer.config.numSamplesPerChannel, num_out_channels, outInt16Buffer ); if ( delayNumSamples == -1 ) { Loading Loading @@ -1225,10 +1225,10 @@ int main( /* === Close === */ free( inpInt16Buffer ); free( inFloatBuffer_fx ); free( inBuffer.q_data_fx ); free( inBuffer.pq_fact ); free( outInt16Buffer ); free( outFloatBuffer_fx ); free( outBuffer.q_data_fx ); free( outBuffer.pq_fact ); if ( bitsBufferData != NULL ) { Loading apps/renderer.c +182 −209 Original line number Diff line number Diff line Loading @@ -439,8 +439,36 @@ static IVAS_AUDIO_CONFIG parseAudioConfig( const char *configString ); static void convertInputBuffer( const int16_t *intBuffer, const int16_t numIntSamplesPerChannel, const int16_t numFloatSamplesPerChannel, const int16_t numChannels, float *floatBuffer, const int16_t cldfb_in, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbAna ); static void convertOutputBuffer( const float *floatBuffer, const int16_t numSamplesPerChannel, const int16_t numChannels, int16_t *intBuffer, const int16_t cldfb_in, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbSyn ); static void convertOutputBuffer_fx( const Word32 *Word32Buffer, const Word16 numSamplesPerChannel, const Word16 numChannels, Word16 *intBuffer, Word16 q_factor, const int16_t cldfb_in, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbSyn ); static void convertInputBuffer_fx( const Word16 *intBuffer, const Word16 numIntSamplesPerChannel, const Word16 numFloatSamplesPerChannel, const Word16 numChannels, Word32 *Int32Buffer, Word16 in_q_factor, const int16_t cldfb_in, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbAna ); static void convertOutputBuffer_fx( const Word32 *Word32Buffer, const Word16 numSamplesPerChannel, const Word16 numChannels, #ifdef SPLIT_REND_WITH_HEAD_ROT Word16 *intBuffer, const Word16 cldfb_in_flag, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbSyn, Word16 out_q #else Word16 *intBuffer, Word16 out_q #endif ); static void convertInputBuffer_fx( const Word16 *intBuffer, const Word16 numIntSamplesPerChannel, const Word16 numFloatSamplesPerChannel, const Word16 numChannels, #ifdef SPLIT_REND_WITH_HEAD_ROT Word32 *Word32Buffer, Word16 in_q_factor, const int16_t cldfb_in_flag, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbAna, Word16 *out_q_factor #else Word32 *Word32Buffer, Word16 in_q_factor #endif ); #else static void convertInputBuffer( const int16_t *intBuffer, const int16_t numIntSamplesPerChannel, const int16_t numFloatSamplesPerChannel, const int16_t numChannels, float *floatBuffer ); Loading Loading @@ -1430,28 +1458,41 @@ int main( if ( cldfb_in_flag == 0 ) { inFloatBuffer = malloc( inBufferSize * sizeof( float ) ); inBuffer.config.numSamplesPerChannel = (int16_t) frameSize_smpls; outInt16Buffer = malloc( outBufferSize * sizeof( int16_t ) ); outInt32Buffer = malloc( outBufferSize * sizeof( Word32 ) ); inInt32Buffer = malloc( inBufferSize * sizeof( Word32 ) ); outFloatBuffer = malloc( outBufferSize * sizeof( float ) ); inBuffer.config.numSamplesPerChannel = (int16_t) frameSize_smpls; inBuffer.config.numChannels = (int16_t) totalNumInChannels; outBuffer.config.numSamplesPerChannel = (int16_t) frameSize_smpls; outBuffer.config.numChannels = (int16_t) numOutChannels; outBuffer.data_fx = outInt32Buffer; inBuffer.data_fx = inInt32Buffer; } else { inFloatBuffer = malloc( CLDFBframeSize_smpls * totalNumInChannels * sizeof( float ) ); inBuffer.config.numSamplesPerChannel = (int16_t) CLDFBframeSize_smpls; outInt16Buffer = malloc( outBufferSize * sizeof( int16_t ) ); outInt32Buffer = malloc( CLDFBframeSize_smpls * totalNumInChannels * sizeof( Word32 ) ); inInt32Buffer = malloc( CLDFBframeSize_smpls * totalNumInChannels * sizeof( Word32 ) ); outFloatBuffer = malloc( CLDFBframeSize_smpls * totalNumInChannels * sizeof( float ) ); inBuffer.config.numSamplesPerChannel = (int16_t) CLDFBframeSize_smpls; inBuffer.config.numChannels = (int16_t) totalNumInChannels; outBuffer.config.numSamplesPerChannel = (int16_t) CLDFBframeSize_smpls; outBuffer.config.numChannels = (int16_t) numOutChannels; outBuffer.data_fx = outInt32Buffer; inBuffer.data_fx = inInt32Buffer; } outInt16Buffer = malloc( outBufferSize * sizeof( int16_t ) ); inBuffer.config.is_cldfb = cldfb_in_flag; inBuffer.config.numChannels = (int16_t) totalNumInChannels; inBuffer.data = inFloatBuffer; outBuffer.config.is_cldfb = cldfb_in_flag; outBuffer.config.numChannels = (int16_t) numOutChannels; outBuffer.data = outFloatBuffer; memset( outBuffer.data, 0, outBuffer.config.numSamplesPerChannel * outBuffer.config.numChannels * sizeof( float ) ); memset( outBuffer.data_fx, 0, outBuffer.config.numSamplesPerChannel * outBuffer.config.numChannels * sizeof( Word32 ) ); if ( is_split_pre_rend_mode( &args ) ) { Loading Loading @@ -1533,12 +1574,15 @@ int main( /* Convert from int to float and from interleaved to packed */ #ifdef SPLIT_REND_WITH_HEAD_ROT convertInputBuffer( inpInt16Buffer, numSamplesRead, inBuffer.config.numSamplesPerChannel, num_in_channels, inFloatBuffer, inBuffer.config.is_cldfb, cldfbAna ); Word16 Q_out; *outBuffer.pq_fact = 16 - ( gd_bits ); convertInputBuffer_fx( inpInt16Buffer, numSamplesRead, inBuffer.config.numSamplesPerChannel, num_in_channels, inInt32Buffer, inBuffer.config.is_cldfb, cldfbAna, *outBuffer.pq_fact, &Q_out ); *outBuffer.pq_fact = Q_out; #else convertInputBuffer( inpInt16Buffer, numSamplesRead, inBuffer.config.numSamplesPerChannel, num_in_channels, inFloatBuffer ); #endif *outBuffer.pq_fact = 16 - ( gd_bits ); convertInputBuffer_fx( inpInt16Buffer, numSamplesRead, inBuffer.config.numSamplesPerChannel, num_in_channels, inInt32Buffer, *outBuffer.pq_fact ); #endif int16_t num_subframes, sf_idx; num_subframes = (int16_t) args.render_framesize; Loading Loading @@ -1782,18 +1826,12 @@ int main( /* Convert from float to int and from packed to interleaved. * Values in outFloatBuffer are guaranteed to be within range INT16_MIN:INT16_MAX */ if ( *outBuffer.pq_fact == 0 ) { #ifdef SPLIT_REND_WITH_HEAD_ROT convertOutputBuffer( outFloatBuffer, outBuffer.config.numSamplesPerChannel, num_out_channels, outInt16Buffer, cldfb_in_flag, cldfbSyn ); convertOutputBuffer_fx( outInt32Buffer, outBuffer.config.numSamplesPerChannel, num_out_channels, outInt16Buffer, cldfb_in_flag, cldfbSyn, *outBuffer.pq_fact ); #else convertOutputBuffer( outFloatBuffer, outBuffer.config.numSamplesPerChannel, num_out_channels, outInt16Buffer ); #endif } else { convertOutputBuffer_fx( outInt32Buffer, outBuffer.config.numSamplesPerChannel, num_out_channels, outInt16Buffer, *outBuffer.pq_fact ); } #endif if ( delayNumSamples == -1 ) { if ( args.delayCompensationEnabled ) Loading Loading @@ -3760,108 +3798,69 @@ static ivas_error parseLfePanMtxFile( * accepted by the renderer (float, packed) *--------------------------------------------------------------------------*/ static void convertInputBuffer( const int16_t *intBuffer, const int16_t numIntSamplesPerChannel, const int16_t numFloatSamplesPerChannel, const int16_t numChannels, static void convertInputBuffer_fx( const Word16 *intBuffer, const Word16 numIntSamplesPerChannel, const Word16 numFloatSamplesPerChannel, const Word16 numChannels, #ifdef SPLIT_REND_WITH_HEAD_ROT float *floatBuffer, Word32 *Word32Buffer, Word16 in_q_factor, const int16_t cldfb_in_flag, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbAna IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbAna, Word16 *out_q_factor #else float *floatBuffer Word32 *Word32Buffer, Word16 in_q_factor #endif ) { int16_t chnl, smpl, i; Word16 chnl, smpl, i; i = 0; #ifdef SPLIT_REND_WITH_HEAD_ROT if ( cldfb_in_flag ) IF( cldfb_in_flag ) { int16_t slotIdx, numCldfbBands, numFloatPcmSamples; float fIn[IVAS_MAX_OUTPUT_CHANNELS][IVAS_MAX_FRAME_SIZE]; Word16 slotIdx, numCldfbBands, numFloatPcmSamples; Word32 fIn[IVAS_MAX_OUTPUT_CHANNELS][IVAS_MAX_FRAME_SIZE]; numFloatPcmSamples = numFloatSamplesPerChannel >> 1; numCldfbBands = numFloatPcmSamples / IVAS_CLDFB_NO_COL_MAX; /* CLDFB Analysis*/ assert( numIntSamplesPerChannel <= IVAS_MAX_OUTPUT_CHANNELS * IVAS_MAX_FRAME_SIZE ); for ( smpl = 0; smpl < numFloatPcmSamples; ++smpl ) FOR( smpl = 0; smpl < numFloatPcmSamples; ++smpl ) { for ( chnl = 0; chnl < numChannels; ++chnl ) FOR( chnl = 0; chnl < numChannels; ++chnl ) { if ( i < numIntSamplesPerChannel ) IF( i < numIntSamplesPerChannel ) { fIn[chnl][smpl] = (float) intBuffer[i]; fIn[chnl][smpl] = L_shl( (Word32) intBuffer[i], Q11 ); } else ELSE { fIn[chnl][smpl] = 0.f; fIn[chnl][smpl] = 0; } ++i; } } for ( chnl = 0; chnl < numChannels; ++chnl ) FOR( chnl = 0; chnl < numChannels; ++chnl ) { for ( slotIdx = 0; slotIdx < IVAS_CLDFB_NO_COL_MAX; slotIdx++ ) FOR( slotIdx = 0; slotIdx < IVAS_CLDFB_NO_COL_MAX; slotIdx++ ) { IVAS_REND_cldfbAnalysis_ts_wrapper( &fIn[chnl][numCldfbBands * slotIdx], &floatBuffer[( chnl * numFloatSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands )], &floatBuffer[numCldfbBands + ( chnl * numFloatSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands )], numCldfbBands, cldfbAna[chnl] ); } &Word32Buffer[( chnl * numFloatSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands )], &Word32Buffer[numCldfbBands + ( chnl * numFloatSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands )], numCldfbBands, cldfbAna[chnl], in_q_factor, *out_q_factor ); } } else { #endif for ( smpl = 0; smpl < numFloatSamplesPerChannel; ++smpl ) { for ( chnl = 0; chnl < numChannels; ++chnl ) { if ( i < numIntSamplesPerChannel ) { floatBuffer[chnl * numFloatSamplesPerChannel + smpl] = (float) intBuffer[i]; } else ELSE { floatBuffer[chnl * numFloatSamplesPerChannel + smpl] = 0.f; } ++i; } } #ifdef SPLIT_REND_WITH_HEAD_ROT } #endif return; } /*--------------------------------------------------------------------------* * convertInputBuffer() * * Convert input buffer from WAV/PCM file (int16_t, interleaved) to a format * accepted by the renderer (float, packed) *--------------------------------------------------------------------------*/ static void convertInputBuffer_fx( const Word16 *intBuffer, const Word16 numIntSamplesPerChannel, const Word16 numFloatSamplesPerChannel, const Word16 numChannels, Word32 *Word32Buffer, Word16 in_q_factor ) { Word16 chnl, smpl, i; i = 0; FOR( smpl = 0; smpl < numFloatSamplesPerChannel; ++smpl ) { FOR( chnl = 0; chnl < numChannels; ++chnl ) Loading @@ -3878,139 +3877,113 @@ static void convertInputBuffer_fx( ++i; } } return; *out_q_factor = in_q_factor; #ifdef SPLIT_REND_WITH_HEAD_ROT } /*--------------------------------------------------------------------------* * convertOutputBuffer() * * Convert output buffer from the renderer (Word32, packed) to a format ready * for writing to a WAV/PCM file (Word16, interleaved) *--------------------------------------------------------------------------*/ static void convertOutputBuffer_fx( const Word32 *Word32Buffer, const Word16 numSamplesPerChannel, const Word16 numChannels, Word16 *intBuffer, Word16 out_q ) { Word16 chnl, smpl, i; Word32 temp_fx; Word32 temp_fx1; i = 0; #endif FOR( smpl = 0; smpl < numSamplesPerChannel; ++smpl ) { FOR( chnl = 0; chnl < numChannels; ++chnl ) { temp_fx = L_add( Word32Buffer[chnl * numSamplesPerChannel + smpl], lshl( 1, ( out_q - 1 ) ) ); temp_fx1 = L_shr( temp_fx, out_q ); IF( GT_32( temp_fx1, IVAS_MAX16B_FX ) ) { temp_fx1 = IVAS_MAX16B_FX; } ELSE IF( LT_32( temp_fx1, IVAS_MIN16B_FX ) ) { temp_fx1 = IVAS_MIN16B_FX; return; } intBuffer[i] = (Word16) temp_fx1; ++i; } } return; } /*--------------------------------------------------------------------------* * convertOutputBuffer() * convertOutputBuffer_fx() * * Convert output buffer from the renderer (float, packed) to a format ready * for writing to a WAV/PCM file (int16_t, interleaved) *--------------------------------------------------------------------------*/ static void convertOutputBuffer( const float *floatBuffer, const int16_t numSamplesPerChannel, const int16_t numChannels, static void convertOutputBuffer_fx( const Word32 *Word32Buffer, const Word16 numSamplesPerChannel, const Word16 numChannels, #ifdef SPLIT_REND_WITH_HEAD_ROT int16_t *intBuffer, const int16_t cldfb_in_flag, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbSyn Word16 *intBuffer, const Word16 cldfb_in_flag, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbSyn, Word16 out_q #else int16_t *intBuffer Word16 *intBuffer, Word16 out_q #endif ) { int16_t chnl, smpl, i; float temp; Word16 chnl, smpl, i; Word32 temp_fx; Word32 temp_fx1; i = 0; #ifdef SPLIT_REND_WITH_HEAD_ROT if ( cldfb_in_flag ) IF( cldfb_in_flag ) { int16_t slotIdx, numCldfbBands, numPcmSamples, b; float fIn[IVAS_MAX_OUTPUT_CHANNELS][IVAS_MAX_FRAME_SIZE]; float re[IVAS_MAX_OUTPUT_CHANNELS][IVAS_CLDFB_NO_COL_MAX][IVAS_CLDFB_NO_CHANNELS_MAX]; float im[IVAS_MAX_OUTPUT_CHANNELS][IVAS_CLDFB_NO_COL_MAX][IVAS_CLDFB_NO_CHANNELS_MAX]; Word16 slotIdx, numCldfbBands, numPcmSamples, b, temp_out_q; Word32 fIn[IVAS_MAX_OUTPUT_CHANNELS][IVAS_MAX_FRAME_SIZE]; Word32 re[IVAS_MAX_OUTPUT_CHANNELS][IVAS_CLDFB_NO_COL_MAX][IVAS_CLDFB_NO_CHANNELS_MAX]; Word32 im[IVAS_MAX_OUTPUT_CHANNELS][IVAS_CLDFB_NO_COL_MAX][IVAS_CLDFB_NO_CHANNELS_MAX]; numPcmSamples = numSamplesPerChannel >> 1; numCldfbBands = numPcmSamples / IVAS_CLDFB_NO_COL_MAX; /* CLDFB Synthesis*/ for ( chnl = 0; chnl < numChannels; ++chnl ) FOR( chnl = 0; chnl < numChannels; ++chnl ) { for ( slotIdx = 0; slotIdx < IVAS_CLDFB_NO_COL_MAX; slotIdx++ ) FOR( slotIdx = 0; slotIdx < IVAS_CLDFB_NO_COL_MAX; slotIdx++ ) { for ( b = 0; b < numCldfbBands; b++ ) FOR( b = 0; b < numCldfbBands; b++ ) { re[chnl][slotIdx][b] = floatBuffer[( chnl * numSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands ) + b]; im[chnl][slotIdx][b] = floatBuffer[numCldfbBands + ( chnl * numSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands ) + b]; re[chnl][slotIdx][b] = Word32Buffer[( chnl * numSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands ) + b]; im[chnl][slotIdx][b] = Word32Buffer[numCldfbBands + ( chnl * numSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands ) + b]; move32(); move32(); } } } /* Implement CLDFB synthesis */ for ( chnl = 0; chnl < numChannels; ++chnl ) FOR( chnl = 0; chnl < numChannels; ++chnl ) { float *RealBuffer[IVAS_CLDFB_NO_COL_MAX]; float *ImagBuffer[IVAS_CLDFB_NO_COL_MAX]; Word32 *RealBuffer[IVAS_CLDFB_NO_COL_MAX]; Word32 *ImagBuffer[IVAS_CLDFB_NO_COL_MAX]; for ( slotIdx = 0; slotIdx < IVAS_CLDFB_NO_COL_MAX; slotIdx++ ) FOR( slotIdx = 0; slotIdx < IVAS_CLDFB_NO_COL_MAX; slotIdx++ ) { RealBuffer[slotIdx] = re[chnl][slotIdx]; ImagBuffer[slotIdx] = im[chnl][slotIdx]; move32(); move32(); } IVAS_REND_cldfbSynthesis_wrapper( RealBuffer, ImagBuffer, &( fIn[chnl][0] ), numCldfbBands * IVAS_CLDFB_NO_COL_MAX, cldfbSyn[chnl] ); IVAS_REND_cldfbSynthesis_wrapper( RealBuffer, ImagBuffer, &( fIn[chnl][0] ), numCldfbBands * IVAS_CLDFB_NO_COL_MAX, cldfbSyn[chnl], out_q, &temp_out_q ); } for ( smpl = 0; smpl < numPcmSamples; ++smpl ) FOR( smpl = 0; smpl < numPcmSamples; ++smpl ) { for ( chnl = 0; chnl < numChannels; ++chnl ) FOR( chnl = 0; chnl < numChannels; ++chnl ) { intBuffer[i] = (int16_t) roundf( fIn[chnl][smpl] ); intBuffer[i] = (Word16) L_shl( fIn[chnl][smpl], sub( out_q, temp_out_q ) ); ++i; } } } else ELSE { #endif for ( smpl = 0; smpl < numSamplesPerChannel; ++smpl ) FOR( smpl = 0; smpl < numSamplesPerChannel; ++smpl ) { for ( chnl = 0; chnl < numChannels; ++chnl ) FOR( chnl = 0; chnl < numChannels; ++chnl ) { temp = floatBuffer[chnl * numSamplesPerChannel + smpl]; temp = (float) floor( temp + 0.5f ); if ( temp > IVAS_MAX16B_FLT ) temp_fx = L_add( Word32Buffer[chnl * numSamplesPerChannel + smpl], lshl( 1, ( out_q - 1 ) ) ); temp_fx1 = L_shr( temp_fx, out_q ); IF( GT_32( temp_fx1, IVAS_MAX16B_FX ) ) { temp = IVAS_MAX16B_FLT; temp_fx1 = IVAS_MAX16B_FX; } else if ( temp < IVAS_MIN16B_FLT ) ELSE IF( LT_32( temp_fx1, IVAS_MIN16B_FX ) ) { temp = IVAS_MIN16B_FLT; temp_fx1 = IVAS_MIN16B_FX; } intBuffer[i] = (int16_t) temp; intBuffer[i] = (Word16) temp_fx1; ++i; } Loading lib_isar/isar_splitRend_lcld_dec.c +1 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ #include "isar_prot.h" #include "ivas_prot.h" #include "prot.h" #include "prot_fx.h" #include "control.h" #ifdef DEBUGGING #include "debug.h" Loading lib_isar/isar_splitRendererPLC.c +2 −3 Original line number Diff line number Diff line Loading @@ -43,9 +43,8 @@ #include "debug.h" #endif #include "wmc_auto.h" #include "prot_fx2.h" #include "prot_fx.h" #include "basop_util.h" #include "basop_mpy.h" #include "enh64.h" /*------------------------------------------------------------------------- Loading Loading @@ -1034,7 +1033,7 @@ ivas_error isar_splitBinRendPLCOpen( ISAR_SPLIT_REND_PLC_HANDLE hSplitRendPLC; error = IVAS_ERR_OK; IF( ( hSplitRendPLC = (ISAR_SPLIT_REND_PLC_HANDLE) malloc( sizeof( SPLIT_REND_PLC_STRUCT ) ) ) == NULL ) IF( ( hSplitRendPLC = (ISAR_SPLIT_REND_PLC_HANDLE) malloc( sizeof( ISAR_SPLIT_REND_PLC_STRUCT ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for bin split renderer PLC Module \n" ) ); } Loading lib_isar/isar_splitRendererPost.c +1 −1 Original line number Diff line number Diff line Loading @@ -44,7 +44,7 @@ #ifdef DEBUGGING #include "debug.h" #endif #include "prot_fx2.h" #include "prot_fx.h" #include "wmc_auto.h" #include "basop_util.h" #define Q31_BY_360 ( 5965232 ) // Q31 Loading Loading
apps/isar_post_rend.c +6 −6 Original line number Diff line number Diff line Loading @@ -952,12 +952,12 @@ int main( inBuffer.config.is_cldfb = 0; inBuffer.config.numChannels = (int16_t) totalNumInChannels; inBuffer.data_fx = inFloatBuffer_fx; inBuffer.q_data_fx = malloc( sizeof( Word16 ) ); inBuffer.pq_fact = malloc( sizeof( Word16 ) ); outBuffer.config.is_cldfb = 0; outBuffer.config.numChannels = (int16_t) numOutChannels; outBuffer.data_fx = outFloatBuffer_fx; outBuffer.q_data_fx = malloc( sizeof( Word16 ) ); outBuffer.pq_fact = malloc( sizeof( Word16 ) ); memset( outBuffer.data_fx, 0, outBuffer.config.numSamplesPerChannel * outBuffer.config.numChannels * sizeof( Word32 ) ); Loading Loading @@ -1035,7 +1035,7 @@ int main( /* Convert from int to float and from interleaved to packed */ convertInputBuffer( inpInt16Buffer, numSamplesRead, inBuffer.config.numSamplesPerChannel, num_in_channels, inFloatBuffer_fx ); *inBuffer.q_data_fx = 0; *inBuffer.pq_fact = 0; int16_t num_subframes, sf_idx; num_subframes = (int16_t) args.render_framesize; Loading Loading @@ -1121,7 +1121,7 @@ int main( /* Convert from float to int and from packed to interleaved. * Values in outFloatBuffer are guaranteed to be within range INT16_MIN:INT16_MAX */ convertOutputBuffer( outFloatBuffer_fx, *outBuffer.q_data_fx, outBuffer.config.numSamplesPerChannel, num_out_channels, outInt16Buffer ); convertOutputBuffer( outFloatBuffer_fx, *outBuffer.pq_fact, outBuffer.config.numSamplesPerChannel, num_out_channels, outInt16Buffer ); if ( delayNumSamples == -1 ) { Loading Loading @@ -1225,10 +1225,10 @@ int main( /* === Close === */ free( inpInt16Buffer ); free( inFloatBuffer_fx ); free( inBuffer.q_data_fx ); free( inBuffer.pq_fact ); free( outInt16Buffer ); free( outFloatBuffer_fx ); free( outBuffer.q_data_fx ); free( outBuffer.pq_fact ); if ( bitsBufferData != NULL ) { Loading
apps/renderer.c +182 −209 Original line number Diff line number Diff line Loading @@ -439,8 +439,36 @@ static IVAS_AUDIO_CONFIG parseAudioConfig( const char *configString ); static void convertInputBuffer( const int16_t *intBuffer, const int16_t numIntSamplesPerChannel, const int16_t numFloatSamplesPerChannel, const int16_t numChannels, float *floatBuffer, const int16_t cldfb_in, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbAna ); static void convertOutputBuffer( const float *floatBuffer, const int16_t numSamplesPerChannel, const int16_t numChannels, int16_t *intBuffer, const int16_t cldfb_in, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbSyn ); static void convertOutputBuffer_fx( const Word32 *Word32Buffer, const Word16 numSamplesPerChannel, const Word16 numChannels, Word16 *intBuffer, Word16 q_factor, const int16_t cldfb_in, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbSyn ); static void convertInputBuffer_fx( const Word16 *intBuffer, const Word16 numIntSamplesPerChannel, const Word16 numFloatSamplesPerChannel, const Word16 numChannels, Word32 *Int32Buffer, Word16 in_q_factor, const int16_t cldfb_in, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbAna ); static void convertOutputBuffer_fx( const Word32 *Word32Buffer, const Word16 numSamplesPerChannel, const Word16 numChannels, #ifdef SPLIT_REND_WITH_HEAD_ROT Word16 *intBuffer, const Word16 cldfb_in_flag, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbSyn, Word16 out_q #else Word16 *intBuffer, Word16 out_q #endif ); static void convertInputBuffer_fx( const Word16 *intBuffer, const Word16 numIntSamplesPerChannel, const Word16 numFloatSamplesPerChannel, const Word16 numChannels, #ifdef SPLIT_REND_WITH_HEAD_ROT Word32 *Word32Buffer, Word16 in_q_factor, const int16_t cldfb_in_flag, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbAna, Word16 *out_q_factor #else Word32 *Word32Buffer, Word16 in_q_factor #endif ); #else static void convertInputBuffer( const int16_t *intBuffer, const int16_t numIntSamplesPerChannel, const int16_t numFloatSamplesPerChannel, const int16_t numChannels, float *floatBuffer ); Loading Loading @@ -1430,28 +1458,41 @@ int main( if ( cldfb_in_flag == 0 ) { inFloatBuffer = malloc( inBufferSize * sizeof( float ) ); inBuffer.config.numSamplesPerChannel = (int16_t) frameSize_smpls; outInt16Buffer = malloc( outBufferSize * sizeof( int16_t ) ); outInt32Buffer = malloc( outBufferSize * sizeof( Word32 ) ); inInt32Buffer = malloc( inBufferSize * sizeof( Word32 ) ); outFloatBuffer = malloc( outBufferSize * sizeof( float ) ); inBuffer.config.numSamplesPerChannel = (int16_t) frameSize_smpls; inBuffer.config.numChannels = (int16_t) totalNumInChannels; outBuffer.config.numSamplesPerChannel = (int16_t) frameSize_smpls; outBuffer.config.numChannels = (int16_t) numOutChannels; outBuffer.data_fx = outInt32Buffer; inBuffer.data_fx = inInt32Buffer; } else { inFloatBuffer = malloc( CLDFBframeSize_smpls * totalNumInChannels * sizeof( float ) ); inBuffer.config.numSamplesPerChannel = (int16_t) CLDFBframeSize_smpls; outInt16Buffer = malloc( outBufferSize * sizeof( int16_t ) ); outInt32Buffer = malloc( CLDFBframeSize_smpls * totalNumInChannels * sizeof( Word32 ) ); inInt32Buffer = malloc( CLDFBframeSize_smpls * totalNumInChannels * sizeof( Word32 ) ); outFloatBuffer = malloc( CLDFBframeSize_smpls * totalNumInChannels * sizeof( float ) ); inBuffer.config.numSamplesPerChannel = (int16_t) CLDFBframeSize_smpls; inBuffer.config.numChannels = (int16_t) totalNumInChannels; outBuffer.config.numSamplesPerChannel = (int16_t) CLDFBframeSize_smpls; outBuffer.config.numChannels = (int16_t) numOutChannels; outBuffer.data_fx = outInt32Buffer; inBuffer.data_fx = inInt32Buffer; } outInt16Buffer = malloc( outBufferSize * sizeof( int16_t ) ); inBuffer.config.is_cldfb = cldfb_in_flag; inBuffer.config.numChannels = (int16_t) totalNumInChannels; inBuffer.data = inFloatBuffer; outBuffer.config.is_cldfb = cldfb_in_flag; outBuffer.config.numChannels = (int16_t) numOutChannels; outBuffer.data = outFloatBuffer; memset( outBuffer.data, 0, outBuffer.config.numSamplesPerChannel * outBuffer.config.numChannels * sizeof( float ) ); memset( outBuffer.data_fx, 0, outBuffer.config.numSamplesPerChannel * outBuffer.config.numChannels * sizeof( Word32 ) ); if ( is_split_pre_rend_mode( &args ) ) { Loading Loading @@ -1533,12 +1574,15 @@ int main( /* Convert from int to float and from interleaved to packed */ #ifdef SPLIT_REND_WITH_HEAD_ROT convertInputBuffer( inpInt16Buffer, numSamplesRead, inBuffer.config.numSamplesPerChannel, num_in_channels, inFloatBuffer, inBuffer.config.is_cldfb, cldfbAna ); Word16 Q_out; *outBuffer.pq_fact = 16 - ( gd_bits ); convertInputBuffer_fx( inpInt16Buffer, numSamplesRead, inBuffer.config.numSamplesPerChannel, num_in_channels, inInt32Buffer, inBuffer.config.is_cldfb, cldfbAna, *outBuffer.pq_fact, &Q_out ); *outBuffer.pq_fact = Q_out; #else convertInputBuffer( inpInt16Buffer, numSamplesRead, inBuffer.config.numSamplesPerChannel, num_in_channels, inFloatBuffer ); #endif *outBuffer.pq_fact = 16 - ( gd_bits ); convertInputBuffer_fx( inpInt16Buffer, numSamplesRead, inBuffer.config.numSamplesPerChannel, num_in_channels, inInt32Buffer, *outBuffer.pq_fact ); #endif int16_t num_subframes, sf_idx; num_subframes = (int16_t) args.render_framesize; Loading Loading @@ -1782,18 +1826,12 @@ int main( /* Convert from float to int and from packed to interleaved. * Values in outFloatBuffer are guaranteed to be within range INT16_MIN:INT16_MAX */ if ( *outBuffer.pq_fact == 0 ) { #ifdef SPLIT_REND_WITH_HEAD_ROT convertOutputBuffer( outFloatBuffer, outBuffer.config.numSamplesPerChannel, num_out_channels, outInt16Buffer, cldfb_in_flag, cldfbSyn ); convertOutputBuffer_fx( outInt32Buffer, outBuffer.config.numSamplesPerChannel, num_out_channels, outInt16Buffer, cldfb_in_flag, cldfbSyn, *outBuffer.pq_fact ); #else convertOutputBuffer( outFloatBuffer, outBuffer.config.numSamplesPerChannel, num_out_channels, outInt16Buffer ); #endif } else { convertOutputBuffer_fx( outInt32Buffer, outBuffer.config.numSamplesPerChannel, num_out_channels, outInt16Buffer, *outBuffer.pq_fact ); } #endif if ( delayNumSamples == -1 ) { if ( args.delayCompensationEnabled ) Loading Loading @@ -3760,108 +3798,69 @@ static ivas_error parseLfePanMtxFile( * accepted by the renderer (float, packed) *--------------------------------------------------------------------------*/ static void convertInputBuffer( const int16_t *intBuffer, const int16_t numIntSamplesPerChannel, const int16_t numFloatSamplesPerChannel, const int16_t numChannels, static void convertInputBuffer_fx( const Word16 *intBuffer, const Word16 numIntSamplesPerChannel, const Word16 numFloatSamplesPerChannel, const Word16 numChannels, #ifdef SPLIT_REND_WITH_HEAD_ROT float *floatBuffer, Word32 *Word32Buffer, Word16 in_q_factor, const int16_t cldfb_in_flag, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbAna IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbAna, Word16 *out_q_factor #else float *floatBuffer Word32 *Word32Buffer, Word16 in_q_factor #endif ) { int16_t chnl, smpl, i; Word16 chnl, smpl, i; i = 0; #ifdef SPLIT_REND_WITH_HEAD_ROT if ( cldfb_in_flag ) IF( cldfb_in_flag ) { int16_t slotIdx, numCldfbBands, numFloatPcmSamples; float fIn[IVAS_MAX_OUTPUT_CHANNELS][IVAS_MAX_FRAME_SIZE]; Word16 slotIdx, numCldfbBands, numFloatPcmSamples; Word32 fIn[IVAS_MAX_OUTPUT_CHANNELS][IVAS_MAX_FRAME_SIZE]; numFloatPcmSamples = numFloatSamplesPerChannel >> 1; numCldfbBands = numFloatPcmSamples / IVAS_CLDFB_NO_COL_MAX; /* CLDFB Analysis*/ assert( numIntSamplesPerChannel <= IVAS_MAX_OUTPUT_CHANNELS * IVAS_MAX_FRAME_SIZE ); for ( smpl = 0; smpl < numFloatPcmSamples; ++smpl ) FOR( smpl = 0; smpl < numFloatPcmSamples; ++smpl ) { for ( chnl = 0; chnl < numChannels; ++chnl ) FOR( chnl = 0; chnl < numChannels; ++chnl ) { if ( i < numIntSamplesPerChannel ) IF( i < numIntSamplesPerChannel ) { fIn[chnl][smpl] = (float) intBuffer[i]; fIn[chnl][smpl] = L_shl( (Word32) intBuffer[i], Q11 ); } else ELSE { fIn[chnl][smpl] = 0.f; fIn[chnl][smpl] = 0; } ++i; } } for ( chnl = 0; chnl < numChannels; ++chnl ) FOR( chnl = 0; chnl < numChannels; ++chnl ) { for ( slotIdx = 0; slotIdx < IVAS_CLDFB_NO_COL_MAX; slotIdx++ ) FOR( slotIdx = 0; slotIdx < IVAS_CLDFB_NO_COL_MAX; slotIdx++ ) { IVAS_REND_cldfbAnalysis_ts_wrapper( &fIn[chnl][numCldfbBands * slotIdx], &floatBuffer[( chnl * numFloatSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands )], &floatBuffer[numCldfbBands + ( chnl * numFloatSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands )], numCldfbBands, cldfbAna[chnl] ); } &Word32Buffer[( chnl * numFloatSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands )], &Word32Buffer[numCldfbBands + ( chnl * numFloatSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands )], numCldfbBands, cldfbAna[chnl], in_q_factor, *out_q_factor ); } } else { #endif for ( smpl = 0; smpl < numFloatSamplesPerChannel; ++smpl ) { for ( chnl = 0; chnl < numChannels; ++chnl ) { if ( i < numIntSamplesPerChannel ) { floatBuffer[chnl * numFloatSamplesPerChannel + smpl] = (float) intBuffer[i]; } else ELSE { floatBuffer[chnl * numFloatSamplesPerChannel + smpl] = 0.f; } ++i; } } #ifdef SPLIT_REND_WITH_HEAD_ROT } #endif return; } /*--------------------------------------------------------------------------* * convertInputBuffer() * * Convert input buffer from WAV/PCM file (int16_t, interleaved) to a format * accepted by the renderer (float, packed) *--------------------------------------------------------------------------*/ static void convertInputBuffer_fx( const Word16 *intBuffer, const Word16 numIntSamplesPerChannel, const Word16 numFloatSamplesPerChannel, const Word16 numChannels, Word32 *Word32Buffer, Word16 in_q_factor ) { Word16 chnl, smpl, i; i = 0; FOR( smpl = 0; smpl < numFloatSamplesPerChannel; ++smpl ) { FOR( chnl = 0; chnl < numChannels; ++chnl ) Loading @@ -3878,139 +3877,113 @@ static void convertInputBuffer_fx( ++i; } } return; *out_q_factor = in_q_factor; #ifdef SPLIT_REND_WITH_HEAD_ROT } /*--------------------------------------------------------------------------* * convertOutputBuffer() * * Convert output buffer from the renderer (Word32, packed) to a format ready * for writing to a WAV/PCM file (Word16, interleaved) *--------------------------------------------------------------------------*/ static void convertOutputBuffer_fx( const Word32 *Word32Buffer, const Word16 numSamplesPerChannel, const Word16 numChannels, Word16 *intBuffer, Word16 out_q ) { Word16 chnl, smpl, i; Word32 temp_fx; Word32 temp_fx1; i = 0; #endif FOR( smpl = 0; smpl < numSamplesPerChannel; ++smpl ) { FOR( chnl = 0; chnl < numChannels; ++chnl ) { temp_fx = L_add( Word32Buffer[chnl * numSamplesPerChannel + smpl], lshl( 1, ( out_q - 1 ) ) ); temp_fx1 = L_shr( temp_fx, out_q ); IF( GT_32( temp_fx1, IVAS_MAX16B_FX ) ) { temp_fx1 = IVAS_MAX16B_FX; } ELSE IF( LT_32( temp_fx1, IVAS_MIN16B_FX ) ) { temp_fx1 = IVAS_MIN16B_FX; return; } intBuffer[i] = (Word16) temp_fx1; ++i; } } return; } /*--------------------------------------------------------------------------* * convertOutputBuffer() * convertOutputBuffer_fx() * * Convert output buffer from the renderer (float, packed) to a format ready * for writing to a WAV/PCM file (int16_t, interleaved) *--------------------------------------------------------------------------*/ static void convertOutputBuffer( const float *floatBuffer, const int16_t numSamplesPerChannel, const int16_t numChannels, static void convertOutputBuffer_fx( const Word32 *Word32Buffer, const Word16 numSamplesPerChannel, const Word16 numChannels, #ifdef SPLIT_REND_WITH_HEAD_ROT int16_t *intBuffer, const int16_t cldfb_in_flag, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbSyn Word16 *intBuffer, const Word16 cldfb_in_flag, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbSyn, Word16 out_q #else int16_t *intBuffer Word16 *intBuffer, Word16 out_q #endif ) { int16_t chnl, smpl, i; float temp; Word16 chnl, smpl, i; Word32 temp_fx; Word32 temp_fx1; i = 0; #ifdef SPLIT_REND_WITH_HEAD_ROT if ( cldfb_in_flag ) IF( cldfb_in_flag ) { int16_t slotIdx, numCldfbBands, numPcmSamples, b; float fIn[IVAS_MAX_OUTPUT_CHANNELS][IVAS_MAX_FRAME_SIZE]; float re[IVAS_MAX_OUTPUT_CHANNELS][IVAS_CLDFB_NO_COL_MAX][IVAS_CLDFB_NO_CHANNELS_MAX]; float im[IVAS_MAX_OUTPUT_CHANNELS][IVAS_CLDFB_NO_COL_MAX][IVAS_CLDFB_NO_CHANNELS_MAX]; Word16 slotIdx, numCldfbBands, numPcmSamples, b, temp_out_q; Word32 fIn[IVAS_MAX_OUTPUT_CHANNELS][IVAS_MAX_FRAME_SIZE]; Word32 re[IVAS_MAX_OUTPUT_CHANNELS][IVAS_CLDFB_NO_COL_MAX][IVAS_CLDFB_NO_CHANNELS_MAX]; Word32 im[IVAS_MAX_OUTPUT_CHANNELS][IVAS_CLDFB_NO_COL_MAX][IVAS_CLDFB_NO_CHANNELS_MAX]; numPcmSamples = numSamplesPerChannel >> 1; numCldfbBands = numPcmSamples / IVAS_CLDFB_NO_COL_MAX; /* CLDFB Synthesis*/ for ( chnl = 0; chnl < numChannels; ++chnl ) FOR( chnl = 0; chnl < numChannels; ++chnl ) { for ( slotIdx = 0; slotIdx < IVAS_CLDFB_NO_COL_MAX; slotIdx++ ) FOR( slotIdx = 0; slotIdx < IVAS_CLDFB_NO_COL_MAX; slotIdx++ ) { for ( b = 0; b < numCldfbBands; b++ ) FOR( b = 0; b < numCldfbBands; b++ ) { re[chnl][slotIdx][b] = floatBuffer[( chnl * numSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands ) + b]; im[chnl][slotIdx][b] = floatBuffer[numCldfbBands + ( chnl * numSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands ) + b]; re[chnl][slotIdx][b] = Word32Buffer[( chnl * numSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands ) + b]; im[chnl][slotIdx][b] = Word32Buffer[numCldfbBands + ( chnl * numSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands ) + b]; move32(); move32(); } } } /* Implement CLDFB synthesis */ for ( chnl = 0; chnl < numChannels; ++chnl ) FOR( chnl = 0; chnl < numChannels; ++chnl ) { float *RealBuffer[IVAS_CLDFB_NO_COL_MAX]; float *ImagBuffer[IVAS_CLDFB_NO_COL_MAX]; Word32 *RealBuffer[IVAS_CLDFB_NO_COL_MAX]; Word32 *ImagBuffer[IVAS_CLDFB_NO_COL_MAX]; for ( slotIdx = 0; slotIdx < IVAS_CLDFB_NO_COL_MAX; slotIdx++ ) FOR( slotIdx = 0; slotIdx < IVAS_CLDFB_NO_COL_MAX; slotIdx++ ) { RealBuffer[slotIdx] = re[chnl][slotIdx]; ImagBuffer[slotIdx] = im[chnl][slotIdx]; move32(); move32(); } IVAS_REND_cldfbSynthesis_wrapper( RealBuffer, ImagBuffer, &( fIn[chnl][0] ), numCldfbBands * IVAS_CLDFB_NO_COL_MAX, cldfbSyn[chnl] ); IVAS_REND_cldfbSynthesis_wrapper( RealBuffer, ImagBuffer, &( fIn[chnl][0] ), numCldfbBands * IVAS_CLDFB_NO_COL_MAX, cldfbSyn[chnl], out_q, &temp_out_q ); } for ( smpl = 0; smpl < numPcmSamples; ++smpl ) FOR( smpl = 0; smpl < numPcmSamples; ++smpl ) { for ( chnl = 0; chnl < numChannels; ++chnl ) FOR( chnl = 0; chnl < numChannels; ++chnl ) { intBuffer[i] = (int16_t) roundf( fIn[chnl][smpl] ); intBuffer[i] = (Word16) L_shl( fIn[chnl][smpl], sub( out_q, temp_out_q ) ); ++i; } } } else ELSE { #endif for ( smpl = 0; smpl < numSamplesPerChannel; ++smpl ) FOR( smpl = 0; smpl < numSamplesPerChannel; ++smpl ) { for ( chnl = 0; chnl < numChannels; ++chnl ) FOR( chnl = 0; chnl < numChannels; ++chnl ) { temp = floatBuffer[chnl * numSamplesPerChannel + smpl]; temp = (float) floor( temp + 0.5f ); if ( temp > IVAS_MAX16B_FLT ) temp_fx = L_add( Word32Buffer[chnl * numSamplesPerChannel + smpl], lshl( 1, ( out_q - 1 ) ) ); temp_fx1 = L_shr( temp_fx, out_q ); IF( GT_32( temp_fx1, IVAS_MAX16B_FX ) ) { temp = IVAS_MAX16B_FLT; temp_fx1 = IVAS_MAX16B_FX; } else if ( temp < IVAS_MIN16B_FLT ) ELSE IF( LT_32( temp_fx1, IVAS_MIN16B_FX ) ) { temp = IVAS_MIN16B_FLT; temp_fx1 = IVAS_MIN16B_FX; } intBuffer[i] = (int16_t) temp; intBuffer[i] = (Word16) temp_fx1; ++i; } Loading
lib_isar/isar_splitRend_lcld_dec.c +1 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ #include "isar_prot.h" #include "ivas_prot.h" #include "prot.h" #include "prot_fx.h" #include "control.h" #ifdef DEBUGGING #include "debug.h" Loading
lib_isar/isar_splitRendererPLC.c +2 −3 Original line number Diff line number Diff line Loading @@ -43,9 +43,8 @@ #include "debug.h" #endif #include "wmc_auto.h" #include "prot_fx2.h" #include "prot_fx.h" #include "basop_util.h" #include "basop_mpy.h" #include "enh64.h" /*------------------------------------------------------------------------- Loading Loading @@ -1034,7 +1033,7 @@ ivas_error isar_splitBinRendPLCOpen( ISAR_SPLIT_REND_PLC_HANDLE hSplitRendPLC; error = IVAS_ERR_OK; IF( ( hSplitRendPLC = (ISAR_SPLIT_REND_PLC_HANDLE) malloc( sizeof( SPLIT_REND_PLC_STRUCT ) ) ) == NULL ) IF( ( hSplitRendPLC = (ISAR_SPLIT_REND_PLC_HANDLE) malloc( sizeof( ISAR_SPLIT_REND_PLC_STRUCT ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for bin split renderer PLC Module \n" ) ); } Loading
lib_isar/isar_splitRendererPost.c +1 −1 Original line number Diff line number Diff line Loading @@ -44,7 +44,7 @@ #ifdef DEBUGGING #include "debug.h" #endif #include "prot_fx2.h" #include "prot_fx.h" #include "wmc_auto.h" #include "basop_util.h" #define Q31_BY_360 ( 5965232 ) // Q31 Loading