Loading lib_dec/ivas_init_dec_fx.c +4 −0 Original line number Diff line number Diff line Loading @@ -3478,7 +3478,11 @@ void ivas_destroy_dec_fx( { ivas_td_binaural_close_fx( &st_ivas->hBinRendererTd ); } #ifdef FIX_CREND_SIMPLIFY_CODE IF( st_ivas->hHrtfTD != NULL ) #else ELSE IF( st_ivas->hHrtfTD != NULL ) #endif { BSplineModelEvalDealloc_fx( &st_ivas->hHrtfTD->ModelParams, &st_ivas->hHrtfTD->ModelEval ); ivas_HRTF_binary_close_fx( &st_ivas->hHrtfTD ); Loading lib_rend/ivas_objectRenderer_mix_fx.c +39 −0 Original line number Diff line number Diff line Loading @@ -188,6 +188,45 @@ void TDREND_MIX_Dealloc_fx( } } #ifdef USE_TDREND_16BIT_ROM if ( hBinRendererTd->HrFiltSet_p->ModelParams.UseItdModel ) { free( hBinRendererTd->HrFiltSet_p->ModelParamsITD.elevKSeq_dyn_fx ); free( hBinRendererTd->HrFiltSet_p->ModelParamsITD.azimKSeq_dyn_fx ); free( hBinRendererTd->HrFiltSet_p->ModelParamsITD.W_dyn_fx ); free( hBinRendererTd->HrFiltSet_p->ModelParamsITD.azimBsShape_dyn_fx ); free( hBinRendererTd->HrFiltSet_p->ModelParamsITD.elevBsShape_dyn_fx ); } free( hBinRendererTd->HrFiltSet_p->ModelParams.elevKSeq_dyn_fx ); #ifndef FIX_989_TD_REND_ROM free( hBinRendererTd->HrFiltSet_p->ModelParams.azimDim2_dyn ); #endif free( hBinRendererTd->HrFiltSet_p->ModelParams.AlphaL_dyn_fx ); free( hBinRendererTd->HrFiltSet_p->ModelParams.AlphaR_dyn_fx ); free( hBinRendererTd->HrFiltSet_p->ModelParams.elevBsShape_dyn_fx ); for ( i = 0; i < hBinRendererTd->HrFiltSet_p->ModelParams.num_unique_azim_splines; i++ ) { free( hBinRendererTd->HrFiltSet_p->ModelParams.azimBsShape_dyn_fx[i] ); } free( hBinRendererTd->HrFiltSet_p->ModelParams.azimBsShape_dyn_fx ); free( (void *) hBinRendererTd->HrFiltSet_p->ModelParams.azimBsShape_fx ); /* void* cast needed to please both gcc and Visual studio compilers. Deallocating const float** should be fine and gcc agrees, but Visual studio complains. */ for ( i = 0; i < hBinRendererTd->HrFiltSet_p->ModelParams.elevDim3; i++ ) { free( hBinRendererTd->HrFiltSet_p->ModelParams.azimKSeq_fx[i] ); } free( hBinRendererTd->HrFiltSet_p->ModelParams.azimKSeq_fx ); free( hBinRendererTd->HrFiltSet_p->ModelParams.EL_dyn_fx ); free( hBinRendererTd->HrFiltSet_p->ModelParams.ER_dyn_fx ); free( hBinRendererTd->HrFiltSet_p->ModelEval.hrfModL_fx ); free( hBinRendererTd->HrFiltSet_p->ModelEval.hrfModR_fx ); #endif IF( EQ_16( hBinRendererTd->HrFiltSet_p->ModelParams.modelROM, 1 ) ) { free( hBinRendererTd->HrFiltSet_p ); Loading lib_rend/ivas_stat_rend.h +8 −0 Original line number Diff line number Diff line Loading @@ -1085,12 +1085,18 @@ typedef struct /* Pointers for allocation of dynamic memory */ Word32 *AlphaL_dyn_fx; Word32 *AlphaR_dyn_fx; #ifndef FIX_CREND_SIMPLIFY_CODE Word16 AlphaL_dyn_e; Word16 AlphaR_dyn_e; #endif Word32 *EL_dyn_fx; #ifndef FIX_CREND_SIMPLIFY_CODE Word16 EL_dyn_e; #endif Word32 *ER_dyn_fx; #ifndef FIX_CREND_SIMPLIFY_CODE Word16 ER_dyn_e; #endif Word32 *elevBsShape_dyn_fx; Word32 *elevKSeq_dyn_fx; #ifdef FIX_989_TD_REND_ROM Loading Loading @@ -1151,7 +1157,9 @@ typedef struct Word32 *elevKSeq_dyn_fx; Word32 *azimKSeq_dyn_fx; Word32 *W_dyn_fx; #ifndef FIX_CREND_SIMPLIFY_CODE Word16 W_dyn_e; #endif Word32 *azimBsShape_dyn_fx; Word32 *elevBsShape_dyn_fx; #ifdef FIX_989_TD_REND_ROM Loading lib_util/hrtf_file_reader.c +28 −43 Original line number Diff line number Diff line Loading @@ -342,7 +342,7 @@ static ivas_error TDREND_LoadBSplineBinaryITD( fread( v_tmp16, sizeof( Word16 ), modelITD->elevDim3 - 2, f_hrtf ); for ( j = 0; j < modelITD->elevDim3 - 2; j++ ) { modelITD->elevKSeq_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), sub( Q22, factor_Q ) ); modelITD->elevKSeq_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), Q22 - factor_Q ); } free( v_tmp16 ); Loading @@ -357,7 +357,7 @@ static ivas_error TDREND_LoadBSplineBinaryITD( fread( v_tmp16, sizeof( Word16 ), ( modelITD->azimDim3 + 1 ) / 2 - 2, f_hrtf ); for ( j = 0; j < ( modelITD->azimDim3 + 1 ) / 2 - 2; j++ ) { modelITD->azimKSeq_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), sub( Q22, factor_Q ) ); modelITD->azimKSeq_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), Q22 - factor_Q ); } free( v_tmp16 ); Loading @@ -374,12 +374,12 @@ static ivas_error TDREND_LoadBSplineBinaryITD( { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); } modelITD->W_dyn_e = sub( Q15, factor_Q ); modelITD->W_e = Q15 - factor_Q; // modelITD->W_dyn_e = 6; /* force to 6 to be corrected */ fread( v_tmp16, sizeof( Word16 ), tmp, f_hrtf ); for ( j = 0; j < tmp; j++ ) { modelITD->W_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), sub( Q25, factor_Q ) ); modelITD->W_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), Q25 - factor_Q ); } free( v_tmp16 ); Loading Loading @@ -408,7 +408,7 @@ static ivas_error TDREND_LoadBSplineBinaryITD( fread( v_tmp16, sizeof( Word16 ), tmp, f_hrtf ); for ( j = 0; j < tmp; j++ ) { modelITD->azimBsShape_dyn_fx[j] = L_shl_r( v_tmp16[j], sub( Q30, factor_Q ) ); modelITD->azimBsShape_dyn_fx[j] = L_shl_r( v_tmp16[j], Q30 - factor_Q ); } free( v_tmp16 ); Loading Loading @@ -444,7 +444,7 @@ static ivas_error TDREND_LoadBSplineBinaryITD( fread( v_tmp16, sizeof( Word16 ), tmp, f_hrtf ); for ( j = 0; j < tmp; j++ ) { modelITD->elevBsShape_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), sub( Q30, factor_Q ) ); modelITD->elevBsShape_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), Q30 - factor_Q ); } free( v_tmp16 ); fread( &modelITD->elevSegSamples, sizeof( Word16 ), 1, f_hrtf ); Loading @@ -452,7 +452,6 @@ static ivas_error TDREND_LoadBSplineBinaryITD( modelITD->elevKSeq_fx = (const Word32 *) modelITD->elevKSeq_dyn_fx; modelITD->azimKSeq_fx = (const Word32 *) modelITD->azimKSeq_dyn_fx; modelITD->W_fx = (const Word32 *) modelITD->W_dyn_fx; modelITD->W_e = modelITD->W_dyn_e; modelITD->azimBsShape_fx = (const Word32 *) modelITD->azimBsShape_dyn_fx; modelITD->elevBsShape_fx = (const Word32 *) modelITD->elevBsShape_dyn_fx; modelITD->azimBsLen = (const Word16 *) modelITD->azimBsLen_dyn_fx; Loading Loading @@ -586,11 +585,11 @@ static ivas_error TDREND_LoadBSplineBinary( fread( &factor_Q, 1, sizeof( Word16 ), f_hrtf ); #ifdef USE_TDREND_16BIT_ROM HrFiltSet_p->latency_s_Q_fx = sub( Q31, factor_Q ); HrFiltSet_p->latency_s_Q_fx = Q31 - factor_Q; fread( &HrFiltSet_p->latency_s_fx, 1, sizeof( Word32 ), f_hrtf ); #else fread( &tmp32, 1, sizeof( Word32 ), f_hrtf ); HrFiltSet_p->latency_s_fx = L_shr_r( Mpy_32_32_r( tmp32, 1000000000 ), sub( Q31, factor_Q ) ); HrFiltSet_p->latency_s_fx = L_shr_r( Mpy_32_32_r( tmp32, 1000000000 ), Q31 - factor_Q ) ); #endif model = &( HrFiltSet_p->ModelParams ); Loading Loading @@ -640,7 +639,7 @@ static ivas_error TDREND_LoadBSplineBinary( fread( v_tmp16, sizeof( Word16 ), model->elevDim3 - 2, f_hrtf ); for ( j = 0; j < model->elevDim3 - 2; j++ ) { model->elevKSeq_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), sub( Q22, factor_Q ) ); model->elevKSeq_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), Q22 - factor_Q ); } free( v_tmp16 ); model->azimDim3_dyn = (Word16 *) malloc( model->elevDim3 * sizeof( Word16 ) ); Loading @@ -666,7 +665,7 @@ static ivas_error TDREND_LoadBSplineBinary( fread( v_tmp16, sizeof( Word16 ), ( model->azimDim3_dyn[i] + 1 ), f_hrtf ); for ( j = 0; j < model->azimDim3_dyn[i] + 1; j++ ) { model->azimKSeq_fx[i][j] = L_shl_r( L_deposit_l( v_tmp16[j] ), sub( Q22, factor_Q ) ); model->azimKSeq_fx[i][j] = L_shl_r( L_deposit_l( v_tmp16[j] ), Q22 - factor_Q ); } free( v_tmp16 ); } Loading @@ -681,14 +680,14 @@ static ivas_error TDREND_LoadBSplineBinary( } fread( &factor_Q, 1, sizeof( Word16 ), f_hrtf ); model->AlphaL_dyn_e = sub( Q15, factor_Q ); model->AlphaL_e = Q15 - factor_Q; // model->AlphaL_dyn_e = 1; /* force to 6 to be corrected */ model->AlphaR_dyn_e = model->AlphaL_dyn_e; model->AlphaR_e = model->AlphaL_e; fread( v_tmp16, sizeof( Word16 ), model->AlphaN * model->K, f_hrtf ); for ( j = 0; j < model->AlphaN * model->K; j++ ) { model->AlphaL_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), sub( Q30, factor_Q ) ); model->AlphaL_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), Q30 - factor_Q ); } model->AlphaR_dyn_fx = (Word32 *) malloc( model->AlphaN * model->K * sizeof( Word32 ) ); if ( model->AlphaR_dyn_fx == NULL ) Loading @@ -699,7 +698,7 @@ static ivas_error TDREND_LoadBSplineBinary( fread( v_tmp16, sizeof( Word16 ), model->AlphaN * model->K, f_hrtf ); for ( j = 0; j < model->AlphaN * model->K; j++ ) { model->AlphaR_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), sub( Q30, factor_Q ) ); model->AlphaR_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), Q30 - factor_Q ); } free( v_tmp16 ); Loading Loading @@ -732,7 +731,7 @@ static ivas_error TDREND_LoadBSplineBinary( fread( v_tmp16, sizeof( Word16 ), tmp, f_hrtf ); for ( j = 0; j < tmp; j++ ) { model->azimBsShape_dyn_fx[i][j] = L_shl_r( L_deposit_l( v_tmp16[j] ), sub( Q30, factor_Q ) ); model->azimBsShape_dyn_fx[i][j] = L_shl_r( L_deposit_l( v_tmp16[j] ), Q30 - factor_Q ); } fread( &model->azimSegSamples_dyn[i], sizeof( Word16 ), 1, f_hrtf ); free( v_tmp16 ); Loading Loading @@ -777,7 +776,7 @@ static ivas_error TDREND_LoadBSplineBinary( fread( v_tmp16, sizeof( Word16 ), tmp, f_hrtf ); for ( j = 0; j < tmp; j++ ) { model->elevBsShape_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), sub( Q30, factor_Q ) ); model->elevBsShape_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), Q30 - factor_Q ); } free( v_tmp16 ); Loading @@ -790,8 +789,8 @@ static ivas_error TDREND_LoadBSplineBinary( } fread( &factor_Q, 1, sizeof( Word16 ), f_hrtf ); model->EL_dyn_e = sub( Q31, factor_Q ); model->ER_dyn_e = model->EL_dyn_e; model->EL_e = Q31 - factor_Q; model->ER_e = model->EL_e; fread( (Word32 *) model->EL_dyn_fx, sizeof( Word32 ), model->AlphaN * HRTF_MODEL_N_SECTIONS, f_hrtf ); Loading @@ -804,17 +803,9 @@ static ivas_error TDREND_LoadBSplineBinary( /* Set const pointers */ model->AlphaL_fx = (const Word32 *) model->AlphaL_dyn_fx; model->AlphaL_e = model->AlphaL_dyn_e; move16(); model->AlphaR_fx = (const Word32 *) model->AlphaR_dyn_fx; model->AlphaR_e = model->AlphaR_dyn_e; move16(); model->EL_fx = (const Word32 *) model->EL_dyn_fx; model->EL_e = model->EL_dyn_e; move16(); model->ER_fx = (const Word32 *) model->ER_dyn_fx; model->ER_e = model->ER_dyn_e; move16(); model->elevBsLen = (const Word16 *) model->elevBsLen_dyn; model->elevBsStart = (const Word16 *) model->elevBsStart_dyn; model->elevBsShape_fx = (const Word32 *) model->elevBsShape_dyn_fx; Loading Loading @@ -1574,6 +1565,7 @@ void destroy_td_hrtf( #ifdef USE_TDREND_16BIT_ROM else { #ifdef USE_TDREND_16BIT_ROM if ( ( *hHrtf )->ModelParams.UseItdModel ) { free( ( *hHrtf )->ModelParamsITD.elevKSeq_dyn_fx ); Loading @@ -1581,23 +1573,14 @@ void destroy_td_hrtf( free( ( *hHrtf )->ModelParamsITD.W_dyn_fx ); free( ( *hHrtf )->ModelParamsITD.azimBsShape_dyn_fx ); free( ( *hHrtf )->ModelParamsITD.elevBsShape_dyn_fx ); #ifdef FIX_989_TD_REND_ROM free( ( *hHrtf )->ModelParamsITD.elevBsLen_dyn_fx ); free( ( *hHrtf )->ModelParamsITD.elevBsStart_dyn_fx ); #endif } free( ( *hHrtf )->ModelParams.elevKSeq_dyn_fx ); free( ( *hHrtf )->ModelParams.azim_start_idx_dyn ); #ifndef FIX_989_TD_REND_ROM free( ( *hHrtf )->ModelParams.azimDim2_dyn ); #endif free( ( *hHrtf )->ModelParams.AlphaL_dyn_fx ); free( ( *hHrtf )->ModelParams.AlphaR_dyn_fx ); #ifdef FIX_989_TD_REND_ROM free( ( *hHrtf )->ModelParams.elevBsLen_dyn ); free( ( *hHrtf )->ModelParams.elevBsStart_dyn ); #endif free( ( *hHrtf )->ModelParams.elevBsShape_dyn_fx ); for ( i = 0; i < ( *hHrtf )->ModelParams.num_unique_azim_splines; i++ ) Loading @@ -1618,6 +1601,8 @@ void destroy_td_hrtf( free( ( *hHrtf )->ModelEval.hrfModL_fx ); free( ( *hHrtf )->ModelEval.hrfModR_fx ); #endif } #endif Loading Loading @@ -1656,7 +1641,7 @@ static ivas_error create_Crend_HRTF_from_rawdata( hrtf_data_rptr = hrtf_data; /* latency_s Q factor*/ ( *hHRTF )->factor_Q_latency_s_fx = sub( Q31, *( (Word16 *) ( hrtf_data_rptr ) ) ); ( *hHRTF )->factor_Q_latency_s_fx = Q31 - *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); /* latency_s */ ( *hHRTF )->latency_s_fx = ( *( (Word32 *) ( hrtf_data_rptr ) ) ); Loading Loading @@ -1736,7 +1721,7 @@ static ivas_error create_Crend_HRTF_from_rawdata( hrtf_data_rptr += sizeof( uint16_t ); /* inv_diffuse_weight Q factor*/ ( *hHRTF )->factor_Q_inv_diffuse_weight = sub( Q15, *( (Word16 *) ( hrtf_data_rptr ) ) ); ( *hHRTF )->factor_Q_inv_diffuse_weight = Q15 - *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); /* inv_diffuse_weight */ Loading @@ -1754,7 +1739,7 @@ static ivas_error create_Crend_HRTF_from_rawdata( /* max_total_num_fsamp_per_iteration */ max_total_num_fsamp_per_iteration = *( (Word32 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word32 ); ( *hHRTF )->factor_Q_pOut_to_bin = sub( Q15, *( (Word16 *) ( hrtf_data_rptr ) ) ); ( *hHRTF )->factor_Q_pOut_to_bin = Q15 - *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); mem_size_buf = max_total_num_fsamp_per_iteration * sizeof( Word16 ); Loading Loading @@ -1928,10 +1913,10 @@ static ivas_error create_fastconv_HRTF_from_rawdata( ( *hHRTF )->ntaps = ntaps; #ifdef USE_FASTCONV_PARAMBIN_16BIT_ROM ( *hHRTF )->FASTCONV_latency_s_Q_fx = sub( Q31, factorQ ); ( *hHRTF )->FASTCONV_latency_s_Q_fx = Q31 - factorQ; ( *hHRTF )->FASTCONV_latency_s_fx = latency_s; #else ( *hHRTF )->FASTCONV_latency_s_fx = L_shr_r( Mpy_32_32_r( latency_s, 1000000000 ), sub( Q31, factorQ ) ); ( *hHRTF )->FASTCONV_latency_s_fx = L_shr_r( Mpy_32_32_r( latency_s, 1000000000 ), Q31 - factorQ ) ); ; #endif ( *hHRTF )->n_channels = nbchan; Loading Loading @@ -2077,7 +2062,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( ptW16 = (Word16 *) hrtf_data_rptr; for ( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) { ( *hHRTF )->fastconvReverberationEneCorrections_fx[j] = L_shl_r( L_deposit_l( ptW16[j] ), sub( Q31, factorQ ) ); ( *hHRTF )->fastconvReverberationEneCorrections_fx[j] = L_shl_r( L_deposit_l( ptW16[j] ), Q31 - factorQ ); hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( Word16 ); } } Loading Loading @@ -2179,7 +2164,7 @@ static ivas_error create_parambin_HRTF_from_rawdata( ptW16 = (int16_t *) hrtf_data_rptr; for ( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) { ( *hHRTF )->parametricReverberationEneCorrections_fx[j] = L_shl_r( L_deposit_l( ptW16[j] ), sub( Q31, factorQ ) ); ( *hHRTF )->parametricReverberationEneCorrections_fx[j] = L_shl_r( L_deposit_l( ptW16[j] ), Q31 - factorQ ); } hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( int16_t ); Loading Loading
lib_dec/ivas_init_dec_fx.c +4 −0 Original line number Diff line number Diff line Loading @@ -3478,7 +3478,11 @@ void ivas_destroy_dec_fx( { ivas_td_binaural_close_fx( &st_ivas->hBinRendererTd ); } #ifdef FIX_CREND_SIMPLIFY_CODE IF( st_ivas->hHrtfTD != NULL ) #else ELSE IF( st_ivas->hHrtfTD != NULL ) #endif { BSplineModelEvalDealloc_fx( &st_ivas->hHrtfTD->ModelParams, &st_ivas->hHrtfTD->ModelEval ); ivas_HRTF_binary_close_fx( &st_ivas->hHrtfTD ); Loading
lib_rend/ivas_objectRenderer_mix_fx.c +39 −0 Original line number Diff line number Diff line Loading @@ -188,6 +188,45 @@ void TDREND_MIX_Dealloc_fx( } } #ifdef USE_TDREND_16BIT_ROM if ( hBinRendererTd->HrFiltSet_p->ModelParams.UseItdModel ) { free( hBinRendererTd->HrFiltSet_p->ModelParamsITD.elevKSeq_dyn_fx ); free( hBinRendererTd->HrFiltSet_p->ModelParamsITD.azimKSeq_dyn_fx ); free( hBinRendererTd->HrFiltSet_p->ModelParamsITD.W_dyn_fx ); free( hBinRendererTd->HrFiltSet_p->ModelParamsITD.azimBsShape_dyn_fx ); free( hBinRendererTd->HrFiltSet_p->ModelParamsITD.elevBsShape_dyn_fx ); } free( hBinRendererTd->HrFiltSet_p->ModelParams.elevKSeq_dyn_fx ); #ifndef FIX_989_TD_REND_ROM free( hBinRendererTd->HrFiltSet_p->ModelParams.azimDim2_dyn ); #endif free( hBinRendererTd->HrFiltSet_p->ModelParams.AlphaL_dyn_fx ); free( hBinRendererTd->HrFiltSet_p->ModelParams.AlphaR_dyn_fx ); free( hBinRendererTd->HrFiltSet_p->ModelParams.elevBsShape_dyn_fx ); for ( i = 0; i < hBinRendererTd->HrFiltSet_p->ModelParams.num_unique_azim_splines; i++ ) { free( hBinRendererTd->HrFiltSet_p->ModelParams.azimBsShape_dyn_fx[i] ); } free( hBinRendererTd->HrFiltSet_p->ModelParams.azimBsShape_dyn_fx ); free( (void *) hBinRendererTd->HrFiltSet_p->ModelParams.azimBsShape_fx ); /* void* cast needed to please both gcc and Visual studio compilers. Deallocating const float** should be fine and gcc agrees, but Visual studio complains. */ for ( i = 0; i < hBinRendererTd->HrFiltSet_p->ModelParams.elevDim3; i++ ) { free( hBinRendererTd->HrFiltSet_p->ModelParams.azimKSeq_fx[i] ); } free( hBinRendererTd->HrFiltSet_p->ModelParams.azimKSeq_fx ); free( hBinRendererTd->HrFiltSet_p->ModelParams.EL_dyn_fx ); free( hBinRendererTd->HrFiltSet_p->ModelParams.ER_dyn_fx ); free( hBinRendererTd->HrFiltSet_p->ModelEval.hrfModL_fx ); free( hBinRendererTd->HrFiltSet_p->ModelEval.hrfModR_fx ); #endif IF( EQ_16( hBinRendererTd->HrFiltSet_p->ModelParams.modelROM, 1 ) ) { free( hBinRendererTd->HrFiltSet_p ); Loading
lib_rend/ivas_stat_rend.h +8 −0 Original line number Diff line number Diff line Loading @@ -1085,12 +1085,18 @@ typedef struct /* Pointers for allocation of dynamic memory */ Word32 *AlphaL_dyn_fx; Word32 *AlphaR_dyn_fx; #ifndef FIX_CREND_SIMPLIFY_CODE Word16 AlphaL_dyn_e; Word16 AlphaR_dyn_e; #endif Word32 *EL_dyn_fx; #ifndef FIX_CREND_SIMPLIFY_CODE Word16 EL_dyn_e; #endif Word32 *ER_dyn_fx; #ifndef FIX_CREND_SIMPLIFY_CODE Word16 ER_dyn_e; #endif Word32 *elevBsShape_dyn_fx; Word32 *elevKSeq_dyn_fx; #ifdef FIX_989_TD_REND_ROM Loading Loading @@ -1151,7 +1157,9 @@ typedef struct Word32 *elevKSeq_dyn_fx; Word32 *azimKSeq_dyn_fx; Word32 *W_dyn_fx; #ifndef FIX_CREND_SIMPLIFY_CODE Word16 W_dyn_e; #endif Word32 *azimBsShape_dyn_fx; Word32 *elevBsShape_dyn_fx; #ifdef FIX_989_TD_REND_ROM Loading
lib_util/hrtf_file_reader.c +28 −43 Original line number Diff line number Diff line Loading @@ -342,7 +342,7 @@ static ivas_error TDREND_LoadBSplineBinaryITD( fread( v_tmp16, sizeof( Word16 ), modelITD->elevDim3 - 2, f_hrtf ); for ( j = 0; j < modelITD->elevDim3 - 2; j++ ) { modelITD->elevKSeq_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), sub( Q22, factor_Q ) ); modelITD->elevKSeq_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), Q22 - factor_Q ); } free( v_tmp16 ); Loading @@ -357,7 +357,7 @@ static ivas_error TDREND_LoadBSplineBinaryITD( fread( v_tmp16, sizeof( Word16 ), ( modelITD->azimDim3 + 1 ) / 2 - 2, f_hrtf ); for ( j = 0; j < ( modelITD->azimDim3 + 1 ) / 2 - 2; j++ ) { modelITD->azimKSeq_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), sub( Q22, factor_Q ) ); modelITD->azimKSeq_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), Q22 - factor_Q ); } free( v_tmp16 ); Loading @@ -374,12 +374,12 @@ static ivas_error TDREND_LoadBSplineBinaryITD( { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); } modelITD->W_dyn_e = sub( Q15, factor_Q ); modelITD->W_e = Q15 - factor_Q; // modelITD->W_dyn_e = 6; /* force to 6 to be corrected */ fread( v_tmp16, sizeof( Word16 ), tmp, f_hrtf ); for ( j = 0; j < tmp; j++ ) { modelITD->W_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), sub( Q25, factor_Q ) ); modelITD->W_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), Q25 - factor_Q ); } free( v_tmp16 ); Loading Loading @@ -408,7 +408,7 @@ static ivas_error TDREND_LoadBSplineBinaryITD( fread( v_tmp16, sizeof( Word16 ), tmp, f_hrtf ); for ( j = 0; j < tmp; j++ ) { modelITD->azimBsShape_dyn_fx[j] = L_shl_r( v_tmp16[j], sub( Q30, factor_Q ) ); modelITD->azimBsShape_dyn_fx[j] = L_shl_r( v_tmp16[j], Q30 - factor_Q ); } free( v_tmp16 ); Loading Loading @@ -444,7 +444,7 @@ static ivas_error TDREND_LoadBSplineBinaryITD( fread( v_tmp16, sizeof( Word16 ), tmp, f_hrtf ); for ( j = 0; j < tmp; j++ ) { modelITD->elevBsShape_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), sub( Q30, factor_Q ) ); modelITD->elevBsShape_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), Q30 - factor_Q ); } free( v_tmp16 ); fread( &modelITD->elevSegSamples, sizeof( Word16 ), 1, f_hrtf ); Loading @@ -452,7 +452,6 @@ static ivas_error TDREND_LoadBSplineBinaryITD( modelITD->elevKSeq_fx = (const Word32 *) modelITD->elevKSeq_dyn_fx; modelITD->azimKSeq_fx = (const Word32 *) modelITD->azimKSeq_dyn_fx; modelITD->W_fx = (const Word32 *) modelITD->W_dyn_fx; modelITD->W_e = modelITD->W_dyn_e; modelITD->azimBsShape_fx = (const Word32 *) modelITD->azimBsShape_dyn_fx; modelITD->elevBsShape_fx = (const Word32 *) modelITD->elevBsShape_dyn_fx; modelITD->azimBsLen = (const Word16 *) modelITD->azimBsLen_dyn_fx; Loading Loading @@ -586,11 +585,11 @@ static ivas_error TDREND_LoadBSplineBinary( fread( &factor_Q, 1, sizeof( Word16 ), f_hrtf ); #ifdef USE_TDREND_16BIT_ROM HrFiltSet_p->latency_s_Q_fx = sub( Q31, factor_Q ); HrFiltSet_p->latency_s_Q_fx = Q31 - factor_Q; fread( &HrFiltSet_p->latency_s_fx, 1, sizeof( Word32 ), f_hrtf ); #else fread( &tmp32, 1, sizeof( Word32 ), f_hrtf ); HrFiltSet_p->latency_s_fx = L_shr_r( Mpy_32_32_r( tmp32, 1000000000 ), sub( Q31, factor_Q ) ); HrFiltSet_p->latency_s_fx = L_shr_r( Mpy_32_32_r( tmp32, 1000000000 ), Q31 - factor_Q ) ); #endif model = &( HrFiltSet_p->ModelParams ); Loading Loading @@ -640,7 +639,7 @@ static ivas_error TDREND_LoadBSplineBinary( fread( v_tmp16, sizeof( Word16 ), model->elevDim3 - 2, f_hrtf ); for ( j = 0; j < model->elevDim3 - 2; j++ ) { model->elevKSeq_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), sub( Q22, factor_Q ) ); model->elevKSeq_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), Q22 - factor_Q ); } free( v_tmp16 ); model->azimDim3_dyn = (Word16 *) malloc( model->elevDim3 * sizeof( Word16 ) ); Loading @@ -666,7 +665,7 @@ static ivas_error TDREND_LoadBSplineBinary( fread( v_tmp16, sizeof( Word16 ), ( model->azimDim3_dyn[i] + 1 ), f_hrtf ); for ( j = 0; j < model->azimDim3_dyn[i] + 1; j++ ) { model->azimKSeq_fx[i][j] = L_shl_r( L_deposit_l( v_tmp16[j] ), sub( Q22, factor_Q ) ); model->azimKSeq_fx[i][j] = L_shl_r( L_deposit_l( v_tmp16[j] ), Q22 - factor_Q ); } free( v_tmp16 ); } Loading @@ -681,14 +680,14 @@ static ivas_error TDREND_LoadBSplineBinary( } fread( &factor_Q, 1, sizeof( Word16 ), f_hrtf ); model->AlphaL_dyn_e = sub( Q15, factor_Q ); model->AlphaL_e = Q15 - factor_Q; // model->AlphaL_dyn_e = 1; /* force to 6 to be corrected */ model->AlphaR_dyn_e = model->AlphaL_dyn_e; model->AlphaR_e = model->AlphaL_e; fread( v_tmp16, sizeof( Word16 ), model->AlphaN * model->K, f_hrtf ); for ( j = 0; j < model->AlphaN * model->K; j++ ) { model->AlphaL_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), sub( Q30, factor_Q ) ); model->AlphaL_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), Q30 - factor_Q ); } model->AlphaR_dyn_fx = (Word32 *) malloc( model->AlphaN * model->K * sizeof( Word32 ) ); if ( model->AlphaR_dyn_fx == NULL ) Loading @@ -699,7 +698,7 @@ static ivas_error TDREND_LoadBSplineBinary( fread( v_tmp16, sizeof( Word16 ), model->AlphaN * model->K, f_hrtf ); for ( j = 0; j < model->AlphaN * model->K; j++ ) { model->AlphaR_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), sub( Q30, factor_Q ) ); model->AlphaR_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), Q30 - factor_Q ); } free( v_tmp16 ); Loading Loading @@ -732,7 +731,7 @@ static ivas_error TDREND_LoadBSplineBinary( fread( v_tmp16, sizeof( Word16 ), tmp, f_hrtf ); for ( j = 0; j < tmp; j++ ) { model->azimBsShape_dyn_fx[i][j] = L_shl_r( L_deposit_l( v_tmp16[j] ), sub( Q30, factor_Q ) ); model->azimBsShape_dyn_fx[i][j] = L_shl_r( L_deposit_l( v_tmp16[j] ), Q30 - factor_Q ); } fread( &model->azimSegSamples_dyn[i], sizeof( Word16 ), 1, f_hrtf ); free( v_tmp16 ); Loading Loading @@ -777,7 +776,7 @@ static ivas_error TDREND_LoadBSplineBinary( fread( v_tmp16, sizeof( Word16 ), tmp, f_hrtf ); for ( j = 0; j < tmp; j++ ) { model->elevBsShape_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), sub( Q30, factor_Q ) ); model->elevBsShape_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), Q30 - factor_Q ); } free( v_tmp16 ); Loading @@ -790,8 +789,8 @@ static ivas_error TDREND_LoadBSplineBinary( } fread( &factor_Q, 1, sizeof( Word16 ), f_hrtf ); model->EL_dyn_e = sub( Q31, factor_Q ); model->ER_dyn_e = model->EL_dyn_e; model->EL_e = Q31 - factor_Q; model->ER_e = model->EL_e; fread( (Word32 *) model->EL_dyn_fx, sizeof( Word32 ), model->AlphaN * HRTF_MODEL_N_SECTIONS, f_hrtf ); Loading @@ -804,17 +803,9 @@ static ivas_error TDREND_LoadBSplineBinary( /* Set const pointers */ model->AlphaL_fx = (const Word32 *) model->AlphaL_dyn_fx; model->AlphaL_e = model->AlphaL_dyn_e; move16(); model->AlphaR_fx = (const Word32 *) model->AlphaR_dyn_fx; model->AlphaR_e = model->AlphaR_dyn_e; move16(); model->EL_fx = (const Word32 *) model->EL_dyn_fx; model->EL_e = model->EL_dyn_e; move16(); model->ER_fx = (const Word32 *) model->ER_dyn_fx; model->ER_e = model->ER_dyn_e; move16(); model->elevBsLen = (const Word16 *) model->elevBsLen_dyn; model->elevBsStart = (const Word16 *) model->elevBsStart_dyn; model->elevBsShape_fx = (const Word32 *) model->elevBsShape_dyn_fx; Loading Loading @@ -1574,6 +1565,7 @@ void destroy_td_hrtf( #ifdef USE_TDREND_16BIT_ROM else { #ifdef USE_TDREND_16BIT_ROM if ( ( *hHrtf )->ModelParams.UseItdModel ) { free( ( *hHrtf )->ModelParamsITD.elevKSeq_dyn_fx ); Loading @@ -1581,23 +1573,14 @@ void destroy_td_hrtf( free( ( *hHrtf )->ModelParamsITD.W_dyn_fx ); free( ( *hHrtf )->ModelParamsITD.azimBsShape_dyn_fx ); free( ( *hHrtf )->ModelParamsITD.elevBsShape_dyn_fx ); #ifdef FIX_989_TD_REND_ROM free( ( *hHrtf )->ModelParamsITD.elevBsLen_dyn_fx ); free( ( *hHrtf )->ModelParamsITD.elevBsStart_dyn_fx ); #endif } free( ( *hHrtf )->ModelParams.elevKSeq_dyn_fx ); free( ( *hHrtf )->ModelParams.azim_start_idx_dyn ); #ifndef FIX_989_TD_REND_ROM free( ( *hHrtf )->ModelParams.azimDim2_dyn ); #endif free( ( *hHrtf )->ModelParams.AlphaL_dyn_fx ); free( ( *hHrtf )->ModelParams.AlphaR_dyn_fx ); #ifdef FIX_989_TD_REND_ROM free( ( *hHrtf )->ModelParams.elevBsLen_dyn ); free( ( *hHrtf )->ModelParams.elevBsStart_dyn ); #endif free( ( *hHrtf )->ModelParams.elevBsShape_dyn_fx ); for ( i = 0; i < ( *hHrtf )->ModelParams.num_unique_azim_splines; i++ ) Loading @@ -1618,6 +1601,8 @@ void destroy_td_hrtf( free( ( *hHrtf )->ModelEval.hrfModL_fx ); free( ( *hHrtf )->ModelEval.hrfModR_fx ); #endif } #endif Loading Loading @@ -1656,7 +1641,7 @@ static ivas_error create_Crend_HRTF_from_rawdata( hrtf_data_rptr = hrtf_data; /* latency_s Q factor*/ ( *hHRTF )->factor_Q_latency_s_fx = sub( Q31, *( (Word16 *) ( hrtf_data_rptr ) ) ); ( *hHRTF )->factor_Q_latency_s_fx = Q31 - *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); /* latency_s */ ( *hHRTF )->latency_s_fx = ( *( (Word32 *) ( hrtf_data_rptr ) ) ); Loading Loading @@ -1736,7 +1721,7 @@ static ivas_error create_Crend_HRTF_from_rawdata( hrtf_data_rptr += sizeof( uint16_t ); /* inv_diffuse_weight Q factor*/ ( *hHRTF )->factor_Q_inv_diffuse_weight = sub( Q15, *( (Word16 *) ( hrtf_data_rptr ) ) ); ( *hHRTF )->factor_Q_inv_diffuse_weight = Q15 - *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); /* inv_diffuse_weight */ Loading @@ -1754,7 +1739,7 @@ static ivas_error create_Crend_HRTF_from_rawdata( /* max_total_num_fsamp_per_iteration */ max_total_num_fsamp_per_iteration = *( (Word32 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word32 ); ( *hHRTF )->factor_Q_pOut_to_bin = sub( Q15, *( (Word16 *) ( hrtf_data_rptr ) ) ); ( *hHRTF )->factor_Q_pOut_to_bin = Q15 - *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); mem_size_buf = max_total_num_fsamp_per_iteration * sizeof( Word16 ); Loading Loading @@ -1928,10 +1913,10 @@ static ivas_error create_fastconv_HRTF_from_rawdata( ( *hHRTF )->ntaps = ntaps; #ifdef USE_FASTCONV_PARAMBIN_16BIT_ROM ( *hHRTF )->FASTCONV_latency_s_Q_fx = sub( Q31, factorQ ); ( *hHRTF )->FASTCONV_latency_s_Q_fx = Q31 - factorQ; ( *hHRTF )->FASTCONV_latency_s_fx = latency_s; #else ( *hHRTF )->FASTCONV_latency_s_fx = L_shr_r( Mpy_32_32_r( latency_s, 1000000000 ), sub( Q31, factorQ ) ); ( *hHRTF )->FASTCONV_latency_s_fx = L_shr_r( Mpy_32_32_r( latency_s, 1000000000 ), Q31 - factorQ ) ); ; #endif ( *hHRTF )->n_channels = nbchan; Loading Loading @@ -2077,7 +2062,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( ptW16 = (Word16 *) hrtf_data_rptr; for ( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) { ( *hHRTF )->fastconvReverberationEneCorrections_fx[j] = L_shl_r( L_deposit_l( ptW16[j] ), sub( Q31, factorQ ) ); ( *hHRTF )->fastconvReverberationEneCorrections_fx[j] = L_shl_r( L_deposit_l( ptW16[j] ), Q31 - factorQ ); hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( Word16 ); } } Loading Loading @@ -2179,7 +2164,7 @@ static ivas_error create_parambin_HRTF_from_rawdata( ptW16 = (int16_t *) hrtf_data_rptr; for ( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) { ( *hHRTF )->parametricReverberationEneCorrections_fx[j] = L_shl_r( L_deposit_l( ptW16[j] ), sub( Q31, factorQ ) ); ( *hHRTF )->parametricReverberationEneCorrections_fx[j] = L_shl_r( L_deposit_l( ptW16[j] ), Q31 - factorQ ); } hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( int16_t ); Loading