Loading lib_dec/ivas_dirac_output_synthesis_cov.c +3 −3 Original line number Diff line number Diff line Loading @@ -1546,7 +1546,7 @@ Word16 computeMixingMatrices_fx( int16_t nL, nC; int16_t lengthCx = num_inputs; int16_t lengthCy = num_outputs; float svd_in_buffer[MAX_OUTPUT_CHANNELS][MAX_OUTPUT_CHANNELS]; //float svd_in_buffer[MAX_OUTPUT_CHANNELS][MAX_OUTPUT_CHANNELS]; float svd_u_buffer[MAX_OUTPUT_CHANNELS][MAX_OUTPUT_CHANNELS]; float svd_s_buffer[MAX_OUTPUT_CHANNELS]; float svd_v_buffer[MAX_OUTPUT_CHANNELS][MAX_OUTPUT_CHANNELS]; Loading Loading @@ -1955,10 +1955,10 @@ Word16 computeMixingMatrices_fx( mat2svdMat_fx( mat_mult_buffer1_fx, svd_in_buffer_fx, lengthCx, lengthCy, 0 ); #ifdef IVAS_FLOAT_FIXED_TO_BE_REMOVED FOR ( Word32 g = 0; g < lengthCx; g++ ) /*FOR ( Word32 g = 0; g < lengthCx; g++ ) { me2f_buf( ( svd_in_buffer_fx[g] ), mat_mult_buffer1_e, ( svd_in_buffer[g] ), lengthCy ); } }*/ nL = lengthCx; move16(); Loading lib_dec/ivas_svd_dec.c +9 −19 Original line number Diff line number Diff line Loading @@ -52,7 +52,7 @@ #define SVD_MAX_NUM_ITERATION 75 /* maximum number of interations before exiting the SVD */ #define SVD_ZERO_FLUSH_THRESHOLD 1.0e-20f #define SVD_MINIMUM_VALUE_FX ( 2 ) /* minimum value */ #define SVD_MINIMUM_VALUE_FX ( 0 ) /* minimum value */ /*-----------------------------------------------------------------------* * Local function prototypes Loading Loading @@ -777,13 +777,16 @@ static void biDiagonalReductionLeft_fx( Word16 *sig_x_e, Word32 *g ) // Q31 { int16_t iCh, jCh, idx; Word16 iCh, jCh, idx; Word32 norm_x, f, r; Word16 norm_x_e, f_e, r_e; Word16 sing_exp[MAX_OUTPUT_CHANNELS]; Word16 sing_exp2[MAX_OUTPUT_CHANNELS][MAX_OUTPUT_CHANNELS]; Word16 sing_exp2[MAX_OUTPUT_CHANNELS][MAX_OUTPUT_CHANNELS] = { 0 }; Word32 L_temp; Word16 L_temp_e; for (jCh = 0; jCh < MAX_OUTPUT_CHANNELS; jCh++) { set_s( sing_exp2[jCh], *singularVectors_e, MAX_OUTPUT_CHANNELS); } secDiag[currChannel] = Mpy_32_32( *sig_x, *g ); if ( *sig_x_e > *secDiag_e ) Loading Loading @@ -865,30 +868,17 @@ static void biDiagonalReductionLeft_fx( } Word16 exp_max = *singularVectors_e; for ( iCh = currChannel; iCh < nChannelsC; iCh++ ) for ( iCh = 0; iCh < nChannelsC; iCh++ ) { for ( jCh = idx; jCh < nChannelsL; jCh++ ) for ( jCh = 0; jCh < nChannelsL; jCh++ ) { exp_max = s_max( exp_max, sing_exp2[jCh][iCh] ); } } for ( iCh = 0; iCh < currChannel; iCh++ ) for ( iCh = 0; iCh < nChannelsC; iCh++ ) { for ( jCh = 0; jCh < nChannelsL; jCh++ ) { singularVectors[jCh][iCh] = L_shr_r( singularVectors[jCh][iCh], sub( exp_max, *singularVectors_e ) ); } } for ( iCh = currChannel; iCh < nChannelsC; iCh++ ) { for ( jCh = 0; jCh < idx; jCh++ ) { singularVectors[jCh][iCh] = L_shr_r( singularVectors[jCh][iCh], sub( exp_max, *singularVectors_e ) ); } for ( jCh = idx; jCh < nChannelsL; jCh++ ) { singularVectors[jCh][iCh] = L_shr_r( singularVectors[jCh][iCh], sub( exp_max, sing_exp2[jCh][iCh] ) ); } Loading Loading
lib_dec/ivas_dirac_output_synthesis_cov.c +3 −3 Original line number Diff line number Diff line Loading @@ -1546,7 +1546,7 @@ Word16 computeMixingMatrices_fx( int16_t nL, nC; int16_t lengthCx = num_inputs; int16_t lengthCy = num_outputs; float svd_in_buffer[MAX_OUTPUT_CHANNELS][MAX_OUTPUT_CHANNELS]; //float svd_in_buffer[MAX_OUTPUT_CHANNELS][MAX_OUTPUT_CHANNELS]; float svd_u_buffer[MAX_OUTPUT_CHANNELS][MAX_OUTPUT_CHANNELS]; float svd_s_buffer[MAX_OUTPUT_CHANNELS]; float svd_v_buffer[MAX_OUTPUT_CHANNELS][MAX_OUTPUT_CHANNELS]; Loading Loading @@ -1955,10 +1955,10 @@ Word16 computeMixingMatrices_fx( mat2svdMat_fx( mat_mult_buffer1_fx, svd_in_buffer_fx, lengthCx, lengthCy, 0 ); #ifdef IVAS_FLOAT_FIXED_TO_BE_REMOVED FOR ( Word32 g = 0; g < lengthCx; g++ ) /*FOR ( Word32 g = 0; g < lengthCx; g++ ) { me2f_buf( ( svd_in_buffer_fx[g] ), mat_mult_buffer1_e, ( svd_in_buffer[g] ), lengthCy ); } }*/ nL = lengthCx; move16(); Loading
lib_dec/ivas_svd_dec.c +9 −19 Original line number Diff line number Diff line Loading @@ -52,7 +52,7 @@ #define SVD_MAX_NUM_ITERATION 75 /* maximum number of interations before exiting the SVD */ #define SVD_ZERO_FLUSH_THRESHOLD 1.0e-20f #define SVD_MINIMUM_VALUE_FX ( 2 ) /* minimum value */ #define SVD_MINIMUM_VALUE_FX ( 0 ) /* minimum value */ /*-----------------------------------------------------------------------* * Local function prototypes Loading Loading @@ -777,13 +777,16 @@ static void biDiagonalReductionLeft_fx( Word16 *sig_x_e, Word32 *g ) // Q31 { int16_t iCh, jCh, idx; Word16 iCh, jCh, idx; Word32 norm_x, f, r; Word16 norm_x_e, f_e, r_e; Word16 sing_exp[MAX_OUTPUT_CHANNELS]; Word16 sing_exp2[MAX_OUTPUT_CHANNELS][MAX_OUTPUT_CHANNELS]; Word16 sing_exp2[MAX_OUTPUT_CHANNELS][MAX_OUTPUT_CHANNELS] = { 0 }; Word32 L_temp; Word16 L_temp_e; for (jCh = 0; jCh < MAX_OUTPUT_CHANNELS; jCh++) { set_s( sing_exp2[jCh], *singularVectors_e, MAX_OUTPUT_CHANNELS); } secDiag[currChannel] = Mpy_32_32( *sig_x, *g ); if ( *sig_x_e > *secDiag_e ) Loading Loading @@ -865,30 +868,17 @@ static void biDiagonalReductionLeft_fx( } Word16 exp_max = *singularVectors_e; for ( iCh = currChannel; iCh < nChannelsC; iCh++ ) for ( iCh = 0; iCh < nChannelsC; iCh++ ) { for ( jCh = idx; jCh < nChannelsL; jCh++ ) for ( jCh = 0; jCh < nChannelsL; jCh++ ) { exp_max = s_max( exp_max, sing_exp2[jCh][iCh] ); } } for ( iCh = 0; iCh < currChannel; iCh++ ) for ( iCh = 0; iCh < nChannelsC; iCh++ ) { for ( jCh = 0; jCh < nChannelsL; jCh++ ) { singularVectors[jCh][iCh] = L_shr_r( singularVectors[jCh][iCh], sub( exp_max, *singularVectors_e ) ); } } for ( iCh = currChannel; iCh < nChannelsC; iCh++ ) { for ( jCh = 0; jCh < idx; jCh++ ) { singularVectors[jCh][iCh] = L_shr_r( singularVectors[jCh][iCh], sub( exp_max, *singularVectors_e ) ); } for ( jCh = idx; jCh < nChannelsL; jCh++ ) { singularVectors[jCh][iCh] = L_shr_r( singularVectors[jCh][iCh], sub( exp_max, sing_exp2[jCh][iCh] ) ); } Loading