Loading lib_com/ivas_prot.h +21 −8 Original line number Diff line number Diff line Loading @@ -1318,11 +1318,19 @@ void ivas_ism_dec_digest_tc( Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ ); #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 */ float *transport_channels_f[] /* i : synthesized core-coder transport channels/DirAC output */ ); #else void ivas_param_ism_dec_digest_tc( Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ const uint16_t nCldfbSlots, /* i : number of CLFBS slots in the transport channels */ float *transport_channels_f[] /* i : synthesized core-coder transport channels/DirAC output */ ); #endif void ivas_ism_param_dec_tc_gain_ajust( Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ Loading Loading @@ -5121,15 +5129,20 @@ Word16 computeMixingMatricesISM_fx( const Word16 num_inputs, const Word16 num_responses, const Word16 num_outputs, const float *responses, const float *ener, const float *Cx_diag, const float *Cy_diag, const float *Q, const Word32 *responses_fx, const Word16 responses_e, const Word32 *ener_fx, const Word16 ener_e, const Word32 *Cx_diag_fx, const Word16 Cx_diag_e, const Word32 *Cy_diag_fx, const Word16 Cy_diag_e, const Word16 *Q_16fx, //Q15 const Word16 energy_compensation_flag, const float reg_Sx, const float reg_ghat, float *mixing_matrix); const Word32 reg_Sx_fx, const Word32 reg_ghat_fx, Word32 *mixing_matrix_fx, Word16 *mixing_matrix_e); #else int16_t computeMixingMatricesISM( const int16_t num_inputs, Loading lib_dec/ivas_dirac_output_synthesis_cov.c +39 −39 Original line number Diff line number Diff line Loading @@ -2703,15 +2703,20 @@ Word16 computeMixingMatricesISM_fx( const Word16 num_inputs, const Word16 num_responses, const Word16 num_outputs, const float *responses, const float *ener, const float *Cx_diag, const float *Cy_diag, const float *Q, const Word32 *responses_fx, const Word16 responses_e, const Word32 *ener_fx, const Word16 ener_e, const Word32 *Cx_diag_fx, const Word16 Cx_diag_e, const Word32 *Cy_diag_fx, const Word16 Cy_diag_e, const Word16 *Q_16fx, //Q15 const Word16 energy_compensation_flag, const float reg_Sx, const float reg_ghat, float *mixing_matrix ) const Word32 reg_Sx_fx, const Word32 reg_ghat_fx, Word32 *mixing_matrix_fx, Word16 *mixing_matrix_e) { Word16 i, out; Word16 lengthCx, lengthCy; Loading @@ -2729,7 +2734,7 @@ Word16 computeMixingMatricesISM_fx( //float G_hat[MAX_OUTPUT_CHANNELS]; //float mat_mult_buffer1[MAX_OUTPUT_CHANNELS * MAX_OUTPUT_CHANNELS]; //float mat_mult_buffer2[MAX_OUTPUT_CHANNELS * MAX_OUTPUT_CHANNELS]; float mat_mult_buffer3[MAX_OUTPUT_CHANNELS * MAX_OUTPUT_CHANNELS]; //float mat_mult_buffer3[MAX_OUTPUT_CHANNELS * MAX_OUTPUT_CHANNELS]; Word16 nL, nC; #ifdef IVAS_FLOAT_FIXED Loading @@ -2737,20 +2742,16 @@ Word16 computeMixingMatricesISM_fx( Word32 *adj_fx; Word32 limit_fx; Word32 responses_fx[PARAM_ISM_MAX_CHAN * MAX_NUM_OBJECTS]; Word32 ener_fx[MAX_NUM_OBJECTS]; Word32 Ky_fx[MAX_OUTPUT_CHANNELS * MAX_OUTPUT_CHANNELS]; Word32 Q_fx[MAX_OUTPUT_CHANNELS * MAX_OUTPUT_CHANNELS]; Word32 Cx_diag_fx[MAX_OUTPUT_CHANNELS]; Word32 Q_Cx_fx[MAX_OUTPUT_CHANNELS * MAX_OUTPUT_CHANNELS]; Word32 mat_mult_buffer1_fx[MAX_OUTPUT_CHANNELS * MAX_OUTPUT_CHANNELS]; Word32 G_hat_fx[MAX_OUTPUT_CHANNELS]; Word32 mat_mult_buffer2_fx[MAX_OUTPUT_CHANNELS * MAX_OUTPUT_CHANNELS]; Word32 Kx_reg_inv_fx[MAX_TRANSPORT_CHANNELS]; Word32 mixing_matrix_fx[MAX_OUTPUT_CHANNELS * MAX_OUTPUT_CHANNELS]; Word32 mat_mult_buffer3_fx[MAX_OUTPUT_CHANNELS * MAX_OUTPUT_CHANNELS]; Word32 Kx_fx[MAX_TRANSPORT_CHANNELS]; Word16 responses_e, ener_e, Ky_e, Q_e, Cx_diag_e, Q_Cx_e, mat_mult_buffer1_e, G_hat_e, mat_mult_buffer2_e, Kx_reg_inv_e, mixing_matrix_e, adj_e, mat_mult_buffer3_e, Kx_e; Word16 Ky_e, Q_e, Q_Cx_e, mat_mult_buffer1_e, G_hat_e, mat_mult_buffer2_e, Kx_reg_inv_e, adj_e, mat_mult_buffer3_e, Kx_e; Word32 svd_in_buffer_fx[MAX_OUTPUT_CHANNELS][MAX_OUTPUT_CHANNELS]; Word32 svd_u_buffer_fx[MAX_OUTPUT_CHANNELS][MAX_OUTPUT_CHANNELS]; Loading @@ -2770,17 +2771,15 @@ Word16 computeMixingMatricesISM_fx( lengthCx = num_inputs; lengthCy = num_outputs; //////////////// to be removed Word16 Cy_diag_e; Word32 Cy_diag_fx[MAX_OUTPUT_CHANNELS]; f2me_buf(Cy_diag, Cy_diag_fx, &Cy_diag_e, lengthCy); f2me_buf(responses, responses_fx, &responses_e, lengthCy * num_responses); f2me_buf(ener, ener_fx, &ener_e, num_responses); f2me_buf(Q, Q_fx, &Q_e, lengthCy * lengthCx); f2me_buf(Cx_diag, Cx_diag_fx, &Cx_diag_e, lengthCx); ////////////////////////////// for (i = 0; i < lengthCy * lengthCx; i++) { if (Q_16fx[i] == MAX_16) { Q_fx[i] = MAX_32; } else { Q_fx[i] = L_shl(Q_16fx[i], 16); } } Q_e = 0; set32_fx( svd_s_buffer_fx, 0, MAX_OUTPUT_CHANNELS ); for ( i = 0; i < MAX_OUTPUT_CHANNELS; i++ ) { Loading Loading @@ -2808,13 +2807,13 @@ Word16 computeMixingMatricesISM_fx( for (i = 1; i < lengthCx; i++) { Kx_e = s_max(Kx_e,temp_e[i]); } for (i = 1; i < lengthCx; i++) { for (i = 0; i < lengthCx; i++) { Kx_fx[i] = L_shr_r( Kx_fx[i], sub( Kx_e, temp_e[i] ) ); } /* Regularization of Sx */ maximum_32_fx( Kx_fx, lengthCx, &limit_fx ); limit_fx = Mpy_32_32( limit_fx, floatToFixed( reg_Sx, 31 ) ); limit_fx = Mpy_32_32( limit_fx, reg_Sx_fx ); for ( i = 0; i < lengthCx; ++i ) { Loading Loading @@ -2843,7 +2842,7 @@ Word16 computeMixingMatricesISM_fx( for (i = 1; i < lengthCx; i++) { Kx_reg_inv_e = s_max(Kx_reg_inv_e, temp_e[i]); } for (i = 1; i < lengthCx; i++) { for (i = 0; i < lengthCx; i++) { Kx_reg_inv_fx[i] = L_shr_r(Kx_reg_inv_fx[i], sub(Kx_reg_inv_e, temp_e[i])); } Loading Loading @@ -2895,7 +2894,7 @@ Word16 computeMixingMatricesISM_fx( } } limit_fx = Mpy_32_32(limit_fx, floatToFixed(reg_ghat, 31)); limit_fx = Mpy_32_32(limit_fx, reg_ghat_fx); /* Computing G_hat */ for ( i = 0; i < lengthCy; ++i ) Loading Loading @@ -2926,7 +2925,7 @@ Word16 computeMixingMatricesISM_fx( for (i = 1; i < lengthCy; i++) { G_hat_e = s_max(G_hat_e, temp_e[i]); } for (i = 1; i < lengthCy; i++) { for (i = 0; i < lengthCy; i++) { G_hat_fx[i] = L_shr_r(G_hat_fx[i], sub(G_hat_e, temp_e[i])); } Loading Loading @@ -3002,9 +3001,9 @@ Word16 computeMixingMatricesISM_fx( //f2me_buf( mat_mult_buffer1, mat_mult_buffer1_fx, &mat_mult_buffer1_e, lengthCx * lengthCy ); //f2me_buf( Kx_reg_inv, Kx_reg_inv_fx, &Kx_reg_inv_e, lengthCx ); matrix_diag_product_fx( mat_mult_buffer1_fx, mat_mult_buffer1_e, lengthCy, lengthCx, 0, Kx_reg_inv_fx, Kx_reg_inv_e, lengthCx, mixing_matrix_fx, &mixing_matrix_e ); matrix_diag_product_fx( mat_mult_buffer1_fx, mat_mult_buffer1_e, lengthCy, lengthCx, 0, Kx_reg_inv_fx, Kx_reg_inv_e, lengthCx, mixing_matrix_fx, mixing_matrix_e ); me2f_buf( mixing_matrix_fx, mixing_matrix_e, mixing_matrix, lengthCy * lengthCx ); //to be removed //me2f_buf( mixing_matrix_fx, mixing_matrix_e, mixing_matrix, lengthCy * lengthCx ); //to be removed #else matrix_diag_product( mat_mult_buffer1, lengthCy, lengthCx, 0, Kx_reg_inv, lengthCx, mixing_matrix ); #endif Loading @@ -3016,13 +3015,13 @@ Word16 computeMixingMatricesISM_fx( //f2me_buf( mixing_matrix, mixing_matrix_fx, &mixing_matrix_e, lengthCx * lengthCy ); //f2me_buf( Cx_diag, Cx_diag_fx, &Cx_diag_e, lengthCx ); matrix_diag_product_fx( mixing_matrix_fx, mixing_matrix_e, lengthCy, lengthCx, 0, Cx_diag_fx, Cx_diag_e, lengthCx, mat_mult_buffer1_fx, &mat_mult_buffer1_e ); matrix_diag_product_fx( mixing_matrix_fx, *mixing_matrix_e, lengthCy, lengthCx, 0, Cx_diag_fx, Cx_diag_e, lengthCx, mat_mult_buffer1_fx, &mat_mult_buffer1_e ); //me2f_buf( mat_mult_buffer1_fx, mat_mult_buffer1_e, mat_mult_buffer1, lengthCx * lengthCy ); #else matrix_diag_product( mixing_matrix, lengthCy, lengthCx, 0, Cx_diag, lengthCx, mat_mult_buffer1 ); #endif matrix_product_mant_exp_fx( mat_mult_buffer1_fx, mat_mult_buffer1_e, lengthCy, lengthCx, 0, mixing_matrix_fx, mixing_matrix_e, lengthCy, lengthCx, 1, mat_mult_buffer2_fx, &mat_mult_buffer2_e ); matrix_product_mant_exp_fx( mat_mult_buffer1_fx, mat_mult_buffer1_e, lengthCy, lengthCx, 0, mixing_matrix_fx, *mixing_matrix_e, lengthCy, lengthCx, 1, mat_mult_buffer2_fx, &mat_mult_buffer2_e ); if ( energy_compensation_flag == 1 ) { Loading Loading @@ -3067,7 +3066,7 @@ Word16 computeMixingMatricesISM_fx( for (i = 1; i < lengthCy; i++) { adj_e = s_max(adj_e, temp_e[i]); } for (i = 1; i < lengthCy; i++) { for (i = 0; i < lengthCy; i++) { adj_fx[i] = L_shr_r(adj_fx[i], sub(adj_e, temp_e[i])); } Loading @@ -3075,14 +3074,15 @@ Word16 computeMixingMatricesISM_fx( //f2me_buf( adj, adj_fx, &adj_e, lengthCy ); //f2me_buf( mixing_matrix, mixing_matrix_fx, &mixing_matrix_e, lengthCy * lengthCx ); diag_matrix_product_fx( adj_fx, adj_e, lengthCy, mixing_matrix_fx, mixing_matrix_e, lengthCy, lengthCx, 0, mat_mult_buffer3_fx, &mat_mult_buffer3_e ); diag_matrix_product_fx( adj_fx, adj_e, lengthCy, mixing_matrix_fx, *mixing_matrix_e, lengthCy, lengthCx, 0, mat_mult_buffer3_fx, &mat_mult_buffer3_e ); me2f_buf( mat_mult_buffer3_fx, mat_mult_buffer3_e, mat_mult_buffer3, lengthCx * lengthCy ); //me2f_buf( mat_mult_buffer3_fx, mat_mult_buffer3_e, mat_mult_buffer3, lengthCx * lengthCy ); #else diag_matrix_product( adj, lengthCy, mixing_matrix, lengthCy, lengthCx, 0, mat_mult_buffer3 ); #endif mvr2r( mat_mult_buffer3, mixing_matrix, lengthCy * lengthCx ); Copy32( mat_mult_buffer3_fx, mixing_matrix_fx, lengthCy * lengthCx ); *mixing_matrix_e = mat_mult_buffer3_e; } pop_wmops(); Loading lib_dec/ivas_ism_param_dec.c +291 −84 File changed.Preview size limit exceeded, changes collapsed. Show changes lib_dec/ivas_jbm_dec.c +1 −1 Original line number Diff line number Diff line Loading @@ -2132,7 +2132,7 @@ void ivas_jbm_dec_feed_tc_to_renderer( } else if ( st_ivas->renderer_type == RENDERER_PARAM_ISM || st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC ) { ivas_param_ism_dec_digest_tc( st_ivas, n_render_timeslots, p_data_f ); ivas_param_ism_dec_digest_tc_fx( st_ivas, n_render_timeslots, p_data_f ); } } else /* ISM_MODE_DISC */ Loading Loading
lib_com/ivas_prot.h +21 −8 Original line number Diff line number Diff line Loading @@ -1318,11 +1318,19 @@ void ivas_ism_dec_digest_tc( Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ ); #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 */ float *transport_channels_f[] /* i : synthesized core-coder transport channels/DirAC output */ ); #else void ivas_param_ism_dec_digest_tc( Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ const uint16_t nCldfbSlots, /* i : number of CLFBS slots in the transport channels */ float *transport_channels_f[] /* i : synthesized core-coder transport channels/DirAC output */ ); #endif void ivas_ism_param_dec_tc_gain_ajust( Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ Loading Loading @@ -5121,15 +5129,20 @@ Word16 computeMixingMatricesISM_fx( const Word16 num_inputs, const Word16 num_responses, const Word16 num_outputs, const float *responses, const float *ener, const float *Cx_diag, const float *Cy_diag, const float *Q, const Word32 *responses_fx, const Word16 responses_e, const Word32 *ener_fx, const Word16 ener_e, const Word32 *Cx_diag_fx, const Word16 Cx_diag_e, const Word32 *Cy_diag_fx, const Word16 Cy_diag_e, const Word16 *Q_16fx, //Q15 const Word16 energy_compensation_flag, const float reg_Sx, const float reg_ghat, float *mixing_matrix); const Word32 reg_Sx_fx, const Word32 reg_ghat_fx, Word32 *mixing_matrix_fx, Word16 *mixing_matrix_e); #else int16_t computeMixingMatricesISM( const int16_t num_inputs, Loading
lib_dec/ivas_dirac_output_synthesis_cov.c +39 −39 Original line number Diff line number Diff line Loading @@ -2703,15 +2703,20 @@ Word16 computeMixingMatricesISM_fx( const Word16 num_inputs, const Word16 num_responses, const Word16 num_outputs, const float *responses, const float *ener, const float *Cx_diag, const float *Cy_diag, const float *Q, const Word32 *responses_fx, const Word16 responses_e, const Word32 *ener_fx, const Word16 ener_e, const Word32 *Cx_diag_fx, const Word16 Cx_diag_e, const Word32 *Cy_diag_fx, const Word16 Cy_diag_e, const Word16 *Q_16fx, //Q15 const Word16 energy_compensation_flag, const float reg_Sx, const float reg_ghat, float *mixing_matrix ) const Word32 reg_Sx_fx, const Word32 reg_ghat_fx, Word32 *mixing_matrix_fx, Word16 *mixing_matrix_e) { Word16 i, out; Word16 lengthCx, lengthCy; Loading @@ -2729,7 +2734,7 @@ Word16 computeMixingMatricesISM_fx( //float G_hat[MAX_OUTPUT_CHANNELS]; //float mat_mult_buffer1[MAX_OUTPUT_CHANNELS * MAX_OUTPUT_CHANNELS]; //float mat_mult_buffer2[MAX_OUTPUT_CHANNELS * MAX_OUTPUT_CHANNELS]; float mat_mult_buffer3[MAX_OUTPUT_CHANNELS * MAX_OUTPUT_CHANNELS]; //float mat_mult_buffer3[MAX_OUTPUT_CHANNELS * MAX_OUTPUT_CHANNELS]; Word16 nL, nC; #ifdef IVAS_FLOAT_FIXED Loading @@ -2737,20 +2742,16 @@ Word16 computeMixingMatricesISM_fx( Word32 *adj_fx; Word32 limit_fx; Word32 responses_fx[PARAM_ISM_MAX_CHAN * MAX_NUM_OBJECTS]; Word32 ener_fx[MAX_NUM_OBJECTS]; Word32 Ky_fx[MAX_OUTPUT_CHANNELS * MAX_OUTPUT_CHANNELS]; Word32 Q_fx[MAX_OUTPUT_CHANNELS * MAX_OUTPUT_CHANNELS]; Word32 Cx_diag_fx[MAX_OUTPUT_CHANNELS]; Word32 Q_Cx_fx[MAX_OUTPUT_CHANNELS * MAX_OUTPUT_CHANNELS]; Word32 mat_mult_buffer1_fx[MAX_OUTPUT_CHANNELS * MAX_OUTPUT_CHANNELS]; Word32 G_hat_fx[MAX_OUTPUT_CHANNELS]; Word32 mat_mult_buffer2_fx[MAX_OUTPUT_CHANNELS * MAX_OUTPUT_CHANNELS]; Word32 Kx_reg_inv_fx[MAX_TRANSPORT_CHANNELS]; Word32 mixing_matrix_fx[MAX_OUTPUT_CHANNELS * MAX_OUTPUT_CHANNELS]; Word32 mat_mult_buffer3_fx[MAX_OUTPUT_CHANNELS * MAX_OUTPUT_CHANNELS]; Word32 Kx_fx[MAX_TRANSPORT_CHANNELS]; Word16 responses_e, ener_e, Ky_e, Q_e, Cx_diag_e, Q_Cx_e, mat_mult_buffer1_e, G_hat_e, mat_mult_buffer2_e, Kx_reg_inv_e, mixing_matrix_e, adj_e, mat_mult_buffer3_e, Kx_e; Word16 Ky_e, Q_e, Q_Cx_e, mat_mult_buffer1_e, G_hat_e, mat_mult_buffer2_e, Kx_reg_inv_e, adj_e, mat_mult_buffer3_e, Kx_e; Word32 svd_in_buffer_fx[MAX_OUTPUT_CHANNELS][MAX_OUTPUT_CHANNELS]; Word32 svd_u_buffer_fx[MAX_OUTPUT_CHANNELS][MAX_OUTPUT_CHANNELS]; Loading @@ -2770,17 +2771,15 @@ Word16 computeMixingMatricesISM_fx( lengthCx = num_inputs; lengthCy = num_outputs; //////////////// to be removed Word16 Cy_diag_e; Word32 Cy_diag_fx[MAX_OUTPUT_CHANNELS]; f2me_buf(Cy_diag, Cy_diag_fx, &Cy_diag_e, lengthCy); f2me_buf(responses, responses_fx, &responses_e, lengthCy * num_responses); f2me_buf(ener, ener_fx, &ener_e, num_responses); f2me_buf(Q, Q_fx, &Q_e, lengthCy * lengthCx); f2me_buf(Cx_diag, Cx_diag_fx, &Cx_diag_e, lengthCx); ////////////////////////////// for (i = 0; i < lengthCy * lengthCx; i++) { if (Q_16fx[i] == MAX_16) { Q_fx[i] = MAX_32; } else { Q_fx[i] = L_shl(Q_16fx[i], 16); } } Q_e = 0; set32_fx( svd_s_buffer_fx, 0, MAX_OUTPUT_CHANNELS ); for ( i = 0; i < MAX_OUTPUT_CHANNELS; i++ ) { Loading Loading @@ -2808,13 +2807,13 @@ Word16 computeMixingMatricesISM_fx( for (i = 1; i < lengthCx; i++) { Kx_e = s_max(Kx_e,temp_e[i]); } for (i = 1; i < lengthCx; i++) { for (i = 0; i < lengthCx; i++) { Kx_fx[i] = L_shr_r( Kx_fx[i], sub( Kx_e, temp_e[i] ) ); } /* Regularization of Sx */ maximum_32_fx( Kx_fx, lengthCx, &limit_fx ); limit_fx = Mpy_32_32( limit_fx, floatToFixed( reg_Sx, 31 ) ); limit_fx = Mpy_32_32( limit_fx, reg_Sx_fx ); for ( i = 0; i < lengthCx; ++i ) { Loading Loading @@ -2843,7 +2842,7 @@ Word16 computeMixingMatricesISM_fx( for (i = 1; i < lengthCx; i++) { Kx_reg_inv_e = s_max(Kx_reg_inv_e, temp_e[i]); } for (i = 1; i < lengthCx; i++) { for (i = 0; i < lengthCx; i++) { Kx_reg_inv_fx[i] = L_shr_r(Kx_reg_inv_fx[i], sub(Kx_reg_inv_e, temp_e[i])); } Loading Loading @@ -2895,7 +2894,7 @@ Word16 computeMixingMatricesISM_fx( } } limit_fx = Mpy_32_32(limit_fx, floatToFixed(reg_ghat, 31)); limit_fx = Mpy_32_32(limit_fx, reg_ghat_fx); /* Computing G_hat */ for ( i = 0; i < lengthCy; ++i ) Loading Loading @@ -2926,7 +2925,7 @@ Word16 computeMixingMatricesISM_fx( for (i = 1; i < lengthCy; i++) { G_hat_e = s_max(G_hat_e, temp_e[i]); } for (i = 1; i < lengthCy; i++) { for (i = 0; i < lengthCy; i++) { G_hat_fx[i] = L_shr_r(G_hat_fx[i], sub(G_hat_e, temp_e[i])); } Loading Loading @@ -3002,9 +3001,9 @@ Word16 computeMixingMatricesISM_fx( //f2me_buf( mat_mult_buffer1, mat_mult_buffer1_fx, &mat_mult_buffer1_e, lengthCx * lengthCy ); //f2me_buf( Kx_reg_inv, Kx_reg_inv_fx, &Kx_reg_inv_e, lengthCx ); matrix_diag_product_fx( mat_mult_buffer1_fx, mat_mult_buffer1_e, lengthCy, lengthCx, 0, Kx_reg_inv_fx, Kx_reg_inv_e, lengthCx, mixing_matrix_fx, &mixing_matrix_e ); matrix_diag_product_fx( mat_mult_buffer1_fx, mat_mult_buffer1_e, lengthCy, lengthCx, 0, Kx_reg_inv_fx, Kx_reg_inv_e, lengthCx, mixing_matrix_fx, mixing_matrix_e ); me2f_buf( mixing_matrix_fx, mixing_matrix_e, mixing_matrix, lengthCy * lengthCx ); //to be removed //me2f_buf( mixing_matrix_fx, mixing_matrix_e, mixing_matrix, lengthCy * lengthCx ); //to be removed #else matrix_diag_product( mat_mult_buffer1, lengthCy, lengthCx, 0, Kx_reg_inv, lengthCx, mixing_matrix ); #endif Loading @@ -3016,13 +3015,13 @@ Word16 computeMixingMatricesISM_fx( //f2me_buf( mixing_matrix, mixing_matrix_fx, &mixing_matrix_e, lengthCx * lengthCy ); //f2me_buf( Cx_diag, Cx_diag_fx, &Cx_diag_e, lengthCx ); matrix_diag_product_fx( mixing_matrix_fx, mixing_matrix_e, lengthCy, lengthCx, 0, Cx_diag_fx, Cx_diag_e, lengthCx, mat_mult_buffer1_fx, &mat_mult_buffer1_e ); matrix_diag_product_fx( mixing_matrix_fx, *mixing_matrix_e, lengthCy, lengthCx, 0, Cx_diag_fx, Cx_diag_e, lengthCx, mat_mult_buffer1_fx, &mat_mult_buffer1_e ); //me2f_buf( mat_mult_buffer1_fx, mat_mult_buffer1_e, mat_mult_buffer1, lengthCx * lengthCy ); #else matrix_diag_product( mixing_matrix, lengthCy, lengthCx, 0, Cx_diag, lengthCx, mat_mult_buffer1 ); #endif matrix_product_mant_exp_fx( mat_mult_buffer1_fx, mat_mult_buffer1_e, lengthCy, lengthCx, 0, mixing_matrix_fx, mixing_matrix_e, lengthCy, lengthCx, 1, mat_mult_buffer2_fx, &mat_mult_buffer2_e ); matrix_product_mant_exp_fx( mat_mult_buffer1_fx, mat_mult_buffer1_e, lengthCy, lengthCx, 0, mixing_matrix_fx, *mixing_matrix_e, lengthCy, lengthCx, 1, mat_mult_buffer2_fx, &mat_mult_buffer2_e ); if ( energy_compensation_flag == 1 ) { Loading Loading @@ -3067,7 +3066,7 @@ Word16 computeMixingMatricesISM_fx( for (i = 1; i < lengthCy; i++) { adj_e = s_max(adj_e, temp_e[i]); } for (i = 1; i < lengthCy; i++) { for (i = 0; i < lengthCy; i++) { adj_fx[i] = L_shr_r(adj_fx[i], sub(adj_e, temp_e[i])); } Loading @@ -3075,14 +3074,15 @@ Word16 computeMixingMatricesISM_fx( //f2me_buf( adj, adj_fx, &adj_e, lengthCy ); //f2me_buf( mixing_matrix, mixing_matrix_fx, &mixing_matrix_e, lengthCy * lengthCx ); diag_matrix_product_fx( adj_fx, adj_e, lengthCy, mixing_matrix_fx, mixing_matrix_e, lengthCy, lengthCx, 0, mat_mult_buffer3_fx, &mat_mult_buffer3_e ); diag_matrix_product_fx( adj_fx, adj_e, lengthCy, mixing_matrix_fx, *mixing_matrix_e, lengthCy, lengthCx, 0, mat_mult_buffer3_fx, &mat_mult_buffer3_e ); me2f_buf( mat_mult_buffer3_fx, mat_mult_buffer3_e, mat_mult_buffer3, lengthCx * lengthCy ); //me2f_buf( mat_mult_buffer3_fx, mat_mult_buffer3_e, mat_mult_buffer3, lengthCx * lengthCy ); #else diag_matrix_product( adj, lengthCy, mixing_matrix, lengthCy, lengthCx, 0, mat_mult_buffer3 ); #endif mvr2r( mat_mult_buffer3, mixing_matrix, lengthCy * lengthCx ); Copy32( mat_mult_buffer3_fx, mixing_matrix_fx, lengthCy * lengthCx ); *mixing_matrix_e = mat_mult_buffer3_e; } pop_wmops(); Loading
lib_dec/ivas_ism_param_dec.c +291 −84 File changed.Preview size limit exceeded, changes collapsed. Show changes
lib_dec/ivas_jbm_dec.c +1 −1 Original line number Diff line number Diff line Loading @@ -2132,7 +2132,7 @@ void ivas_jbm_dec_feed_tc_to_renderer( } else if ( st_ivas->renderer_type == RENDERER_PARAM_ISM || st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC ) { ivas_param_ism_dec_digest_tc( st_ivas, n_render_timeslots, p_data_f ); ivas_param_ism_dec_digest_tc_fx( st_ivas, n_render_timeslots, p_data_f ); } } else /* ISM_MODE_DISC */ Loading