diff --git a/lib_com/ivas_prot.h b/lib_com/ivas_prot.h index 5d458df883c98929c78b044ecb139c45bb08d01a..c388377c1c9c15d7f08f1dd25f5e6ae02ef19f20 100644 --- a/lib_com/ivas_prot.h +++ b/lib_com/ivas_prot.h @@ -1334,9 +1334,10 @@ void ivas_ism_dec_digest_tc( #ifdef IVAS_FLOAT_FIXED void ivas_param_ism_dec_digest_tc_fx( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - const UWord16 nCldfbSlots, /* i : number of CLFBS slots in the transport channels */ - Word32 *transport_channels_f[] /* i : synthesized core-coder transport channels/DirAC output */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ + const UWord16 nCldfbSlots, /* i : number of CLFBS slots in the transport channels */ + Word32 *transport_channels[], /* i : synthesized core-coder transport channels/DirAC output */ + Word16 q_tc_in ); #else void ivas_param_ism_dec_digest_tc( diff --git a/lib_dec/ivas_ism_param_dec.c b/lib_dec/ivas_ism_param_dec.c index a1c7c23566cae9eac6ea295c6e9805400daec541..982467cbe7569632ee46caca1cda6952320d568c 100644 --- a/lib_dec/ivas_ism_param_dec.c +++ b/lib_dec/ivas_ism_param_dec.c @@ -685,7 +685,7 @@ static void ivas_param_ism_render_slot_fx( { Word32 tmp_2 = Mpy_32_32( tmp_1_fx, mixing_matrix_fx[bin_idx][outchIdx + inchIdx * num_ch_LS] ); // hParamIsmDec->hParamIsmRendering->exp_mixing_matrix_lin Word32 tmp_3 = Mpy_32_32( L_sub( ONE_IN_Q31, tmp_1_fx ), hParamIsmDec->hParamIsmRendering->mixing_matrix_lin_old_fx[bin_idx][outchIdx + inchIdx * num_ch_LS] ); // 1 + hParamIsmDec->hParamIsmRendering->exp_mixing_matrix_lin_old - mixing_matrix_smooth_fx = BASOP_Util_Add_Mant32Exp( tmp_2, hParamIsmDec->hParamIsmRendering->exp_mixing_matrix_lin_fx, tmp_3, hParamIsmDec->hParamIsmRendering->exp_mixing_matrix_lin_old_fx, &res_exp ); + mixing_matrix_smooth_fx = BASOP_Util_Add_Mant32Exp( tmp_2, hParamIsmDec->hParamIsmRendering->exp_mixing_matrix_lin_fx[bin_idx], tmp_3, hParamIsmDec->hParamIsmRendering->exp_mixing_matrix_lin_old_fx[bin_idx], &res_exp ); Word32 tmp_4 = Mpy_32_32( mixing_matrix_smooth_fx, Cldfb_RealBuffer_in_fx[inchIdx][bin_idx] ); // res_exp + hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc_exp Word32 tmp_5 = Mpy_32_32( mixing_matrix_smooth_fx, Cldfb_ImagBuffer_in_fx[inchIdx][bin_idx] ); // res_exp + hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc_exp @@ -833,16 +833,10 @@ static ivas_error ivas_param_ism_rendering_init_fx( set32_fx( hParamIsmRendering->mixing_matrix_lin_old_fx[bin_idx], 0, PARAM_ISM_MAX_CHAN * PARAM_ISM_MAX_DMX ); } #ifdef MSAN_FIX - hParamIsmRendering->exp_mixing_matrix_lin_old_fx = 0; + set16_fx( hParamIsmRendering->exp_mixing_matrix_lin_old_fx, 0, CLDFB_NO_CHANNELS_MAX ); #endif /* memory allocation for proto matrix and interpolator */ -#ifdef IVAS_FLOAT_FIXED_TO_BE_REMOVED - IF( ( hParamIsmRendering->proto_matrix = (float *) malloc( hOutSetup.nchan_out_woLFE * nchan_transport * sizeof( float ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for proto matrix\n" ) ); - } -#endif IF( ( hParamIsmRendering->proto_matrix_fx = (Word16 *) malloc( hOutSetup.nchan_out_woLFE * nchan_transport * sizeof( Word16 ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for proto matrix\n" ) ); @@ -860,14 +854,6 @@ static ivas_error ivas_param_ism_rendering_init_fx( { /* computation of proto matrix */ ivas_ism_get_proto_matrix_fx( hOutSetup, nchan_transport, hParamIsmRendering->proto_matrix_fx ); - -#ifdef IVAS_FLOAT_FIXED_TO_BE_REMOVED - FOR( Word16 idx = 0; idx < hOutSetup.nchan_out_woLFE; idx++ ) - { - hParamIsmRendering->proto_matrix[idx] = (float) hParamIsmRendering->proto_matrix_fx[idx] / ( 1 << 15 ); - hParamIsmRendering->proto_matrix[idx + hOutSetup.nchan_out_woLFE] = (float) hParamIsmRendering->proto_matrix_fx[idx + hOutSetup.nchan_out_woLFE] / ( 1 << 15 ); - } -#endif } /* computation of interpolator*/ @@ -918,7 +904,7 @@ static ivas_error ivas_param_ism_rendering_init( static void ivas_param_ism_update_mixing_matrix_fx( PARAM_ISM_DEC_HANDLE hParamIsmDec, Word32 mixing_matrix_fx[CLDFB_NO_CHANNELS_MAX][PARAM_ISM_MAX_CHAN * PARAM_ISM_MAX_DMX], - Word16 mixing_matrix_exp, + Word16 mixing_matrix_exp[CLDFB_NO_CHANNELS_MAX], const Word16 nchan_in, const Word16 nchan_out ) { @@ -945,7 +931,7 @@ static void ivas_param_ism_update_mixing_matrix_fx( } } - hParamIsmDec->hParamIsmRendering->exp_mixing_matrix_lin_old_fx = mixing_matrix_exp; + Copy( mixing_matrix_exp, hParamIsmDec->hParamIsmRendering->exp_mixing_matrix_lin_old_fx, CLDFB_NO_CHANNELS_MAX ); move16(); return; @@ -1163,10 +1149,7 @@ ivas_error ivas_param_ism_dec_open_fx( IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) { nchan_full = nchan_transport; -#ifdef IVAS_FLOAT_FIXED_TO_BE_REMOVED - hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc = NULL; - hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc = NULL; -#endif + hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc_fx = NULL; hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc_fx = NULL; } @@ -1183,20 +1166,6 @@ ivas_error ivas_param_ism_dec_open_fx( n_slots_to_alloc = CLDFB_SLOTS_PER_SUBFRAME * MAX_PARAM_SPATIAL_SUBFRAMES; move16(); } -#ifdef IVAS_FLOAT_FIXED_TO_BE_REMOVED - IF( ( hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc = (float *) malloc( n_slots_to_alloc * nchan_transport * hSpatParamRendCom->num_freq_bands * sizeof( float ) ) ) == NULL ) - - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Param ISM JBM Rendering handle\n" ) ); - } - set_zero( hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc, n_slots_to_alloc * nchan_transport * hSpatParamRendCom->num_freq_bands ); - - IF( ( hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc = (float *) malloc( n_slots_to_alloc * nchan_transport * hSpatParamRendCom->num_freq_bands * sizeof( float ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Param ISM JBM Rendering handle\n" ) ); - } - set_zero( hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc, n_slots_to_alloc * nchan_transport * hSpatParamRendCom->num_freq_bands ); -#endif IF( ( hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc_fx = (Word32 *) malloc( n_slots_to_alloc * nchan_transport * hSpatParamRendCom->num_freq_bands * sizeof( Word32 ) ) ) == NULL ) { @@ -1222,10 +1191,6 @@ ivas_error ivas_param_ism_dec_open_fx( } ELSE { -#ifdef IVAS_FLOAT_FIXED_TO_BE_REMOVED - hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc = NULL; - hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc = NULL; -#endif hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc_fx = NULL; hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc_fx = NULL; IF( st_ivas->hTcBuffer == NULL ) @@ -1475,14 +1440,6 @@ void ivas_param_ism_dec_close_fx( IF( !( EQ_16( output_config, IVAS_AUDIO_CONFIG_MONO ) || EQ_16( output_config, IVAS_AUDIO_CONFIG_STEREO ) ) ) { /* Param ISM Rendering */ -#ifdef IVAS_FLOAT_FIXED_TO_BE_REMOVED - // To be removed later: Freeing memory allocated to float pointers - IF( hParamIsmDec->hParamIsmRendering->proto_matrix != NULL ) - { - free( hParamIsmDec->hParamIsmRendering->proto_matrix ); - hParamIsmDec->hParamIsmRendering->proto_matrix = NULL; - } -#endif IF( hParamIsmDec->hParamIsmRendering->interpolator_fx != NULL ) { free( hParamIsmDec->hParamIsmRendering->interpolator_fx ); @@ -1494,19 +1451,6 @@ void ivas_param_ism_dec_close_fx( hParamIsmDec->hParamIsmRendering->proto_matrix_fx = NULL; } } -#ifdef IVAS_FLOAT_FIXED_TO_BE_REMOVED - // To be removed later: Freeing memory allocated to float pointers - IF( hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc != NULL ) - { - free( hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc ); - hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc = NULL; - } - IF( hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc != NULL ) - { - free( hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc ); - hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc = NULL; - } -#endif IF( hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc_fx != NULL ) { free( hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc_fx ); @@ -2088,16 +2032,16 @@ void ivas_ism_dec_digest_tc( *-------------------------------------------------------------------------*/ #ifdef IVAS_FLOAT_FIXED void ivas_param_ism_dec_digest_tc_fx( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - const UWord16 nCldfbSlots, /* i : number of CLFBS slots in the transport channels */ - Word32 *transport_channels[] /* i : synthesized core-coder transport channels/DirAC output */ -) + Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ + const UWord16 nCldfbSlots, /* i : number of CLFBS slots in the transport channels */ + Word32 *transport_channels[], /* i : synthesized core-coder transport channels/DirAC output */ + Word16 q_tc_in ) { Word16 exp_ref_power = 31, exp_cx_diag = 31; Word16 exp_real_tmp = 0, exp_imag_tmp = 0; Word32 ref_power_fx[CLDFB_NO_CHANNELS_MAX]; Word32 cx_diag_fx[CLDFB_NO_CHANNELS_MAX][PARAM_ISM_MAX_DMX]; - Word16 q_tc = 13; + Word16 q_tc = q_tc_in; Word16 ch, nchan_transport, nchan_out, nchan_out_woLFE, i; Word16 slot_idx, bin_idx; Word32 ivas_total_brate; @@ -2119,8 +2063,8 @@ void ivas_param_ism_dec_digest_tc_fx( nchan_transport = st_ivas->nchan_transport; ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; - hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc_exp = 23; - hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc_exp = 23; + hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc_exp = 25; + hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc_exp = 25; IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) { nchan_out = st_ivas->nchan_ism; @@ -2209,10 +2153,6 @@ void ivas_param_ism_dec_digest_tc_fx( hParamIsmDec->hParamIsmRendering->proto_matrix_fx[nchan_out_woLFE + j] = ONE_IN_Q14; } } -#ifdef IVAS_FLOAT_FIXED_TO_BE_REMOVED - hParamIsmDec->hParamIsmRendering->proto_matrix[j] = fixedToFloat( hParamIsmDec->hParamIsmRendering->proto_matrix_fx[j], Q15 ); - hParamIsmDec->hParamIsmRendering->proto_matrix[nchan_out_woLFE + j] = fixedToFloat( hParamIsmDec->hParamIsmRendering->proto_matrix_fx[nchan_out_woLFE + j], Q15 ); -#endif } } @@ -2220,9 +2160,14 @@ void ivas_param_ism_dec_digest_tc_fx( { /*TODO : FhG to check*/ ivas_ism_param_dec_tc_gain_ajust_fx( st_ivas, output_frame, fade_len, transport_channels, &q_tc ); - FOR( i = 0; i < 2; i++ ) - scale_sig32( transport_channels[i], output_frame, sub( Q13, q_tc ) ); - q_tc = 13; + IF( NE_16( q_tc, q_tc_in ) ) + { + FOR( i = 0; i < 2; i++ ) + { + scale_sig32( transport_channels[i], output_frame, sub( q_tc_in, q_tc ) ); + } + q_tc = q_tc_in; + } } FOR( ch = 0; ch < nchan_transport; ch++ ) @@ -2234,12 +2179,12 @@ void ivas_param_ism_dec_digest_tc_fx( { Word32 RealBuffer_fx[CLDFB_NO_CHANNELS_MAX]; Word32 ImagBuffer_fx[CLDFB_NO_CHANNELS_MAX]; - q_tc = 13; + q_tc = q_tc_in; cldfbAnalysis_ts_fx_fixed_q( &( transport_channels[ch][hSpatParamRendCom->num_freq_bands * slot_idx] ), RealBuffer_fx, ImagBuffer_fx, hSpatParamRendCom->num_freq_bands, st_ivas->cldfbAnaDec[ch], &q_tc ); Copy32( RealBuffer_fx, &hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc_fx[slot_idx * hSpatParamRendCom->num_freq_bands * nchan_transport + ch * hSpatParamRendCom->num_freq_bands], hSpatParamRendCom->num_freq_bands ); Copy32( ImagBuffer_fx, &hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc_fx[slot_idx * hSpatParamRendCom->num_freq_bands * nchan_transport + ch * hSpatParamRendCom->num_freq_bands], hSpatParamRendCom->num_freq_bands ); - hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc_exp = 23; - hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc_exp = 23; + hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc_exp = sub( 31, q_tc ); + hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc_exp = sub( 31, q_tc ); } Word16 scale_factor_real, scale_factor_imag; @@ -2277,29 +2222,10 @@ void ivas_param_ism_dec_digest_tc_fx( set32_fx( hParamIsmDec->hParamIsmRendering->mixing_matrix_lin_fx[bin_idx], 0, nchan_transport * nchan_out_woLFE ); } #endif -#if 1 /*TODO : To be removed (Fixed to float) */ - FOR( ch = 0; ch < nchan_transport; ch++ ) - { - scale_sig32( st_ivas->cldfbAnaDec[ch]->cldfb_state_fx, st_ivas->cldfbAnaDec[ch]->cldfb_size, sub( Q11, Q13 ) ); - st_ivas->cldfbAnaDec[ch]->Q_cldfb_state = Q11; - /* CLDFB Analysis */ - FOR( slot_idx = 0; slot_idx < nCldfbSlots; slot_idx++ ) - { - fixedToFloat_arrL( &hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc_fx[slot_idx * hSpatParamRendCom->num_freq_bands * nchan_transport + ch * hSpatParamRendCom->num_freq_bands], &hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc[slot_idx * hSpatParamRendCom->num_freq_bands * nchan_transport + ch * hSpatParamRendCom->num_freq_bands], Q8, hSpatParamRendCom->num_freq_bands ); - fixedToFloat_arrL( &hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc_fx[slot_idx * hSpatParamRendCom->num_freq_bands * nchan_transport + ch * hSpatParamRendCom->num_freq_bands], &hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc[slot_idx * hSpatParamRendCom->num_freq_bands * nchan_transport + ch * hSpatParamRendCom->num_freq_bands], Q8, hSpatParamRendCom->num_freq_bands ); - } - } -#endif - /* Compute mixing matrix */ - Word16 temp_exp[CLDFB_NO_CHANNELS_MAX]; - ivas_param_ism_compute_mixing_matrix_fx( st_ivas->nchan_ism, hParamIsmDec, st_ivas->hISMDTX, direct_response_fx, nchan_transport, nchan_out_woLFE, cx_diag_fx, exp_cx_diag, ref_power_fx, exp_ref_power, hParamIsmDec->hParamIsmRendering->mixing_matrix_lin_fx, temp_exp ); - /////////fix2float (to be removed) - for ( i = 0; i < CLDFB_NO_CHANNELS_MAX; i++ ) - { - me2f_buf( hParamIsmDec->hParamIsmRendering->mixing_matrix_lin_fx[i], temp_exp[i], hParamIsmDec->hParamIsmRendering->mixing_matrix_lin[i], PARAM_ISM_MAX_CHAN * PARAM_ISM_MAX_DMX ); - } - ////////////////////////////////// + /* Compute mixing matrix */ + ivas_param_ism_compute_mixing_matrix_fx( st_ivas->nchan_ism, hParamIsmDec, st_ivas->hISMDTX, direct_response_fx, nchan_transport, nchan_out_woLFE, cx_diag_fx, exp_cx_diag, ref_power_fx, exp_ref_power, + hParamIsmDec->hParamIsmRendering->mixing_matrix_lin_fx, hParamIsmDec->hParamIsmRendering->exp_mixing_matrix_lin_fx ); pop_wmops(); diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index 0d4ef85ff3b32134bdc162eb144a6dbf2f57a730..c38410672b723305932354881f767f68ff956e15 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -2181,27 +2181,15 @@ void ivas_jbm_dec_feed_tc_to_renderer( ELSE IF( EQ_16( st_ivas->renderer_type, RENDERER_PARAM_ISM ) || EQ_16( st_ivas->renderer_type, RENDERER_SBA_LINEAR_ENC ) ) { #ifdef IVAS_FLOAT_FIXED - floatToFixed_arr32( p_data_f[0], p_data_f_fx[0], Q13, MAX_CLDFB_DIGEST_CHANNELS * MAX_JBM_L_FRAME48k ); -#if 1 /*Float to fixed conversions*/ - FOR( Word16 ch = 0; ch < MAX_INTERN_CHANNELS; ch++ ) - { - IF( st_ivas->cldfbAnaDec[ch] ) - { - scale_sig32( st_ivas->cldfbAnaDec[ch]->cldfb_state_fx, st_ivas->cldfbAnaDec[ch]->cldfb_size, sub( Q13, Q11 ) ); - st_ivas->cldfbAnaDec[ch]->Q_cldfb_state = Q13; - } - } - FOR( Word16 ch = 0; ch < st_ivas->nchan_transport; ch++ ) - { - FOR( Word16 slot_idx = 0; slot_idx < n_render_timeslots; slot_idx++ ) - { - floatToFixed_arr32( &st_ivas->hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc[slot_idx * st_ivas->hSpatParamRendCom->num_freq_bands * st_ivas->nchan_transport + ch * st_ivas->hSpatParamRendCom->num_freq_bands], &st_ivas->hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc_fx[slot_idx * st_ivas->hSpatParamRendCom->num_freq_bands * st_ivas->nchan_transport + ch * st_ivas->hSpatParamRendCom->num_freq_bands], Q8, st_ivas->hSpatParamRendCom->num_freq_bands ); - floatToFixed_arr32( &st_ivas->hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc[slot_idx * st_ivas->hSpatParamRendCom->num_freq_bands * st_ivas->nchan_transport + ch * st_ivas->hSpatParamRendCom->num_freq_bands], &st_ivas->hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc_fx[slot_idx * st_ivas->hSpatParamRendCom->num_freq_bands * st_ivas->nchan_transport + ch * st_ivas->hSpatParamRendCom->num_freq_bands], Q8, st_ivas->hSpatParamRendCom->num_freq_bands ); - } - } -#endif - ivas_param_ism_dec_digest_tc_fx( st_ivas, n_render_timeslots, p_data_f_fx ); - fixedToFloat_arrL( p_data_f_fx[0], p_data_f[0], Q13, MAX_CLDFB_DIGEST_CHANNELS * MAX_JBM_L_FRAME48k ); + /////////////////////////// flt2fix /////////////////////// + floatToFixed_arr32( p_data_f[0], p_data_f_fx[0], Q11, MAX_CLDFB_DIGEST_CHANNELS * MAX_JBM_L_FRAME48k ); + /////////////////////////// flt2fix /////////////////////// + + ivas_param_ism_dec_digest_tc_fx( st_ivas, n_render_timeslots, p_data_f_fx, Q11 ); + + /////////////////////////// fix2flt /////////////////////// + fixedToFloat_arrL( p_data_f_fx[0], p_data_f[0], Q11, MAX_CLDFB_DIGEST_CHANNELS * MAX_JBM_L_FRAME48k ); +/////////////////////////// fix2flt /////////////////////// #else ivas_param_ism_dec_digest_tc( st_ivas, n_render_timeslots, p_data_f ); #endif @@ -2742,17 +2730,6 @@ ivas_error ivas_jbm_dec_render( /*i/o : st_ivas->cldfbSynDec[ch]->cldfb_state------------------------------------------------------------Q11----*/ /*--------------------------------------------------------------------------------------------------------------*/ - f2me_buf( (float *) st_ivas->hParamIsmDec->hParamIsmRendering->mixing_matrix_lin, (Word32 *) st_ivas->hParamIsmDec->hParamIsmRendering->mixing_matrix_lin_fx, &st_ivas->hParamIsmDec->hParamIsmRendering->exp_mixing_matrix_lin_fx, CLDFB_NO_CHANNELS_MAX * ( PARAM_ISM_MAX_CHAN * PARAM_ISM_MAX_DMX ) ); - - Word16 n_slots_to_alloc = st_ivas->hDecoderConfig->Opt_tsm == 1 ? 32 : 16; - Word16 n_chan_transport_t = st_ivas->nchan_transport; - Word16 freq_bands = st_ivas->hSpatParamRendCom->num_freq_bands; - - Word16 size = n_slots_to_alloc * n_chan_transport_t * freq_bands; - - f2me_buf( st_ivas->hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc, st_ivas->hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc_fx, &st_ivas->hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc_exp, size ); - f2me_buf( st_ivas->hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc, st_ivas->hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc_fx, &st_ivas->hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc_exp, size ); - Word16 n_out; if ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_EXTERNAL ) { diff --git a/lib_dec/ivas_stat_dec.h b/lib_dec/ivas_stat_dec.h index 51786e21a67f373b64db7017c61f6602bd98be7c..e8beec6d0567943af5ce07fe44ca075eb547a6fc 100644 --- a/lib_dec/ivas_stat_dec.h +++ b/lib_dec/ivas_stat_dec.h @@ -646,7 +646,7 @@ typedef struct stereo_icbwe_dec_data_structure #ifndef IVAS_FLOAT_FIXED float icbweM2Ref_prev; #else - Word16 icbweM2Ref_prev_fx; /* Q14 */ + Word16 icbweM2Ref_prev_fx; /* Q14 */ #endif #ifndef IVAS_FLOAT_FIXED @@ -698,24 +698,21 @@ typedef struct param_ism_rendering Word16 *proto_matrix_fx; Word16 *interpolator_fx; /* Q15 */ Word32 *Cldfb_RealBuffer_tc_fx; - Word16 *Cldfb_RealBuffer_tc_e; Word16 Cldfb_RealBuffer_tc_exp; Word32 *Cldfb_ImagBuffer_tc_fx; - Word16 *Cldfb_ImagBuffer_tc_e; Word16 Cldfb_ImagBuffer_tc_exp; Word32 mixing_matrix_lin_fx[CLDFB_NO_CHANNELS_MAX][PARAM_ISM_MAX_CHAN * PARAM_ISM_MAX_DMX]; - Word16 exp_mixing_matrix_lin_fx; + Word16 exp_mixing_matrix_lin_fx[CLDFB_NO_CHANNELS_MAX]; Word32 mixing_matrix_lin_old_fx[CLDFB_NO_CHANNELS_MAX][PARAM_ISM_MAX_CHAN * PARAM_ISM_MAX_DMX]; - Word16 exp_mixing_matrix_lin_old_fx; -#endif // IVAS_FLOAT_FIXED + Word16 exp_mixing_matrix_lin_old_fx[CLDFB_NO_CHANNELS_MAX]; +#else // IVAS_FLOAT_FIXED float *proto_matrix; -#ifndef IVAS_FLOAT_FIXED float *interpolator; - float mixing_matrix_lin_old[CLDFB_NO_CHANNELS_MAX][PARAM_ISM_MAX_CHAN * PARAM_ISM_MAX_DMX]; -#endif float mixing_matrix_lin[CLDFB_NO_CHANNELS_MAX][PARAM_ISM_MAX_CHAN * PARAM_ISM_MAX_DMX]; + float mixing_matrix_lin_old[CLDFB_NO_CHANNELS_MAX][PARAM_ISM_MAX_CHAN * PARAM_ISM_MAX_DMX]; float *Cldfb_RealBuffer_tc; float *Cldfb_ImagBuffer_tc; +#endif } PARAM_ISM_RENDERING_DATA, *PARAM_ISM_RENDERING_HANDLE; diff --git a/lib_dec/lib_dec_fx.c b/lib_dec/lib_dec_fx.c index 5f25a4eeb014d5998ef6aaf34a90b79fa33d3c15..2764728f682bcee7f3ce3bad8c57b2e0f5fa5e5a 100644 --- a/lib_dec/lib_dec_fx.c +++ b/lib_dec/lib_dec_fx.c @@ -1438,17 +1438,6 @@ static ivas_error IVAS_DEC_GetTcSamples( { num_freq_bands = st_ivas->hSpatParamRendCom->num_freq_bands; } - FOR( Word16 lp = 0; lp < n_ch_cldfb_tmp; lp++ ) - { - Word16 length = 15 * num_freq_bands * n_ch_cldfb_tmp + num_freq_bands * ( n_ch_cldfb_tmp - 1 ) + st_ivas->cldfbAnaDec[lp]->no_channels; - FOR( Word16 i = 0; i < length; i++ ) - { - st_ivas->hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc_fx[i] = - floatToFixed( st_ivas->hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc[i], 6 ); - st_ivas->hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc_fx[i] = - floatToFixed( st_ivas->hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc[i], 6 ); - } - } } ELSE IF( st_ivas->ivas_format == MC_FORMAT ) { @@ -1500,17 +1489,6 @@ static ivas_error IVAS_DEC_GetTcSamples( { num_freq_bands = st_ivas->hSpatParamRendCom->num_freq_bands; } - FOR( Word16 lp = 0; lp < n_ch_cldfb_tmp; lp++ ) - { - Word16 length = 15 * num_freq_bands * n_ch_cldfb_tmp + num_freq_bands * ( n_ch_cldfb_tmp - 1 ) + st_ivas->cldfbAnaDec[lp]->no_channels; - FOR( Word16 lp2 = 0; lp2 < length; lp2++ ) - { - st_ivas->hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc[lp2] = - fixedToFloat( st_ivas->hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc_fx[lp2], 6 ); - st_ivas->hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc[lp2] = - fixedToFloat( st_ivas->hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc_fx[lp2], 6 ); - } - } } ELSE IF( st_ivas->ivas_format == MC_FORMAT ) {