diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index bb7d374a9c72d6e3948cbb4ec80da393c28f7963..4556baaf5abae9aa77278d228ee8e3429b46d092 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -2109,7 +2109,7 @@ void ivas_jbm_dec_feed_tc_to_renderer( Word32 data_f_fx[MAX_CLDFB_DIGEST_CHANNELS][MAX_JBM_L_FRAME48k] = { 0 }; /* 'float' buffer for transport channels that will be directly converted with the CLDFB */ Word32 *p_data_f_fx[MAX_CLDFB_DIGEST_CHANNELS]; Word32 *data_fx; - data_fx = (Word32 *) malloc( 8640 * sizeof( Word32 ) ); + data_fx = (Word32 *) malloc( ( add( imult1616( nSamplesForRendering, st_ivas->hTcBuffer->nchan_transport_jbm ), s_min( st_ivas->hTcBuffer->nchan_transport_jbm, st_ivas->hTcBuffer->nchan_buffer_full ) ) ) * sizeof( Word32 ) ); IF( st_ivas->hTcBuffer ) { @@ -2135,7 +2135,7 @@ void ivas_jbm_dec_feed_tc_to_renderer( { #ifdef IVAS_FLOAT_FIXED #if 1 - floatToFixed_arrL( data, data_fx, 11, s_min( 3, st_ivas->hTcBuffer->nchan_transport_jbm ) * 2880 ); + floatToFixed_arrL( data, data_fx, 11, add( imult1616( nSamplesForRendering, st_ivas->hTcBuffer->nchan_transport_jbm ), s_min( st_ivas->hTcBuffer->nchan_transport_jbm, st_ivas->hTcBuffer->nchan_buffer_full ) ) ); #endif ivas_jbm_dec_copy_tc( st_ivas, nSamplesForRendering, nSamplesResidual, data_fx, p_data_f_fx, 11 ); diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index b00de3950dcdf93661b5c90743eda678376252cd..a4994e544b0f554c5f8ee9b7de50208c5695186c 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -266,6 +266,7 @@ static void LoadBSplineBinaryITD( { modelITD->elevKSeq_dyn_fx[i] = float_to_fix( elevKSeq_dyn_local[i], Q22 ); } + free( elevKSeq_dyn_local ); fread( &modelITD->azimDim2, sizeof( Word16 ), 1, f_hrtf ); fread( &modelITD->azimDim3, sizeof( Word16 ), 1, f_hrtf ); @@ -277,6 +278,7 @@ static void LoadBSplineBinaryITD( { modelITD->azimKSeq_dyn_fx[i] = float_to_fix( azimKSeq_dyn_local[i], Q22 ); } + free( azimKSeq_dyn_local ); fread( &tmp, sizeof( Word16 ), 1, f_hrtf ); float *W_dyn_local = (float *) malloc( tmp * sizeof( float ) ); @@ -284,6 +286,7 @@ static void LoadBSplineBinaryITD( modelITD->W_dyn_fx = (Word32 *) malloc( tmp * sizeof( Word32 ) ); f2me_buf( W_dyn_local, modelITD->W_dyn_fx, &modelITD->W_dyn_e, tmp ); + free( W_dyn_local ); /* azimuth */ fread( modelITD->azimBsLen, sizeof( Word16 ), HRTF_MODEL_BSPLINE_NUM_COEFFS, f_hrtf ); @@ -299,6 +302,7 @@ static void LoadBSplineBinaryITD( { modelITD->azimBsShape_dyn_fx[i] = float_to_fix( azimBsShape_dyn_local[i], Q30 ); } + free( azimBsShape_dyn_local ); fread( &modelITD->azimSegSamples, sizeof( Word16 ), 1, f_hrtf ); @@ -316,6 +320,7 @@ static void LoadBSplineBinaryITD( { modelITD->elevBsShape_dyn_fx[i] = float_to_fix( elevBsShape_dyn_local[i], Q30 ); } + free( elevBsShape_dyn_local ); fread( &modelITD->elevSegSamples, sizeof( Word16 ), 1, f_hrtf ); @@ -540,6 +545,7 @@ static ivas_error LoadBSplineBinary( { model->elevKSeq_dyn_fx[i] = float_to_fix( elevKSeq_dyn_local[i], Q22 ); } + free( elevKSeq_dyn_local ); #else model->elevKSeq_dyn = (float *) malloc( ( model->elevDim3 - 2 ) * sizeof( float ) ); fread( model->elevKSeq_dyn, sizeof( float ), model->elevDim3 - 2, f_hrtf ); @@ -566,11 +572,16 @@ static ivas_error LoadBSplineBinary( { model->azimKSeq_fx[i][j] = float_to_fix( azimKSeq_local[i][j], Q22 ); } + free( azimKSeq_local[i] ); #else model->azimKSeq[i] = (float *) malloc( ( model->azimDim3_dyn[i] + 1 ) * sizeof( float ) ); fread( model->azimKSeq[i], sizeof( float ), ( model->azimDim3_dyn[i] + 1 ), f_hrtf ); #endif } +#ifdef IVAS_FLOAT_FIXED + free( azimKSeq_local ); +#endif + fread( &model->AlphaN, sizeof( int16_t ), 1, f_hrtf ); #ifdef IVAS_FLOAT_FIXED float *AlphaL_dyn_local = (float *) malloc( model->AlphaN * model->K * sizeof( float ) ); @@ -578,6 +589,7 @@ static ivas_error LoadBSplineBinary( model->AlphaL_dyn_fx = (Word32 *) malloc( model->AlphaN * model->K * sizeof( Word32 ) ); f2me_buf( AlphaL_dyn_local, model->AlphaL_dyn_fx, &model->AlphaL_dyn_e, model->AlphaN * model->K ); + free( AlphaL_dyn_local ); #else model->AlphaL_dyn = (float *) malloc( model->AlphaN * model->K * sizeof( float ) ); fread( model->AlphaL_dyn, sizeof( float ), model->AlphaN * model->K, f_hrtf ); @@ -589,6 +601,7 @@ static ivas_error LoadBSplineBinary( model->AlphaR_dyn_fx = (Word32 *) malloc( model->AlphaN * model->K * sizeof( Word32 ) ); f2me_buf( AlphaR_dyn_local, model->AlphaR_dyn_fx, &model->AlphaR_dyn_e, model->AlphaN * model->K ); + free( AlphaR_dyn_local ); #else model->AlphaR_dyn = (float *) malloc( model->AlphaN * model->K * sizeof( float ) ); fread( model->AlphaR_dyn, sizeof( float ), model->AlphaN * model->K, f_hrtf ); @@ -616,12 +629,16 @@ static ivas_error LoadBSplineBinary( { model->azimBsShape_dyn_fx[i][j] = float_to_fix( azimBsShape_dyn_local[i][j], Q30 ); } + free( azimBsShape_dyn_local[i] ); #else model->azimBsShape_dyn[i] = (float *) malloc( tmp * sizeof( float ) ); fread( model->azimBsShape_dyn[i], sizeof( float ), tmp, f_hrtf ); #endif fread( &model->azimSegSamples_dyn[i], sizeof( int16_t ), 1, f_hrtf ); } +#ifdef IVAS_FLOAT_FIXED + free( azimBsShape_dyn_local ); +#endif // IVAS_FLOAT_FIXED model->azimShapeIdx_dyn = (int16_t *) malloc( model->elevDim3 * sizeof( int16_t ) ); fread( model->azimShapeIdx_dyn, sizeof( int16_t ), model->elevDim3, f_hrtf ); @@ -640,6 +657,7 @@ static ivas_error LoadBSplineBinary( { model->elevBsShape_dyn_fx[i] = float_to_fix( elevBsShape_dyn_local[i], Q30 ); } + free( elevBsShape_dyn_local ); #else model->elevBsShape_dyn = (float *) malloc( tmp * sizeof( float ) ); fread( model->elevBsShape_dyn, sizeof( float ), tmp, f_hrtf );