Loading lib_enc/ivas_stat_enc.h +2 −2 Original line number Diff line number Diff line Loading @@ -1233,8 +1233,8 @@ typedef struct stereo_cng_enc Word16 td_active; /* TD-stereo indication */ Word16 first_SID_after_TD; /* Set if first SID frame after TD stereo */ Word16 first_SID; /* Set if first SID frame since codec start */ Word32 sg_average_fx[STEREO_DFT_ERB4_BANDS]; /* Sidegain average Q28 */ Word32 prev_sg_average_fx[STEREO_DFT_ERB4_BANDS]; /* Previous sidegain average Q28 */ Word32 sg_average_fx[STEREO_DFT_ERB4_BANDS]; /* Sidegain average Q26 */ Word32 prev_sg_average_fx[STEREO_DFT_ERB4_BANDS]; /* Previous sidegain average Q26 */ Word32 mem_cohBand_fx[STEREO_DFT_BAND_MAX / 2]; /* Coherence memory */ Word32 prev_cohBand_fx[2 * ( STEREO_DFT_BAND_MAX / 2 )]; /* Previous coherence */ } STEREO_CNG_ENC, *STEREO_CNG_ENC_HANDLE; Loading lib_enc/ivas_stereo_cng_enc.c +10 −10 Original line number Diff line number Diff line Loading @@ -373,7 +373,7 @@ void stereo_dft_cng_side_gain_fx( for ( b = 0; b < nbands_full; b++ ) { // hStereoCng->sg_average[b] += hStereoDft->sidSideGain[b]; hStereoCng->sg_average_fx[b] = L_add( hStereoCng->sg_average_fx[b], L_shr_r(hStereoDft->sidSideGain_fx[b],3) ); hStereoCng->sg_average_fx[b] = L_add( hStereoCng->sg_average_fx[b], L_shr_r(hStereoDft->sidSideGain_fx[b],5) ); } hStereoCng->sg_average_counter = add( hStereoCng->sg_average_counter, 1 ); Loading @@ -393,8 +393,8 @@ void stereo_dft_cng_side_gain_fx( hStereoCng->prev_sg_average_fx[b] = hStereoCng->sg_average_fx[b]; // hStereoCng->sg_average[b] = hStereoCng->sg_average[b] / (float) hStereoCng->sg_average_counter; hStereoCng->sg_average_fx[b] = BASOP_Util_Divide3232_Scale_cadence( hStereoCng->sg_average_fx[b], hStereoCng->sg_average_counter, &tmp_e ); tmp_e = sub(tmp_e, 31 - 3); hStereoCng->sg_average_fx[b] = L_shl_r( hStereoCng->sg_average_fx[b], sub(tmp_e,3) ); // Q31 tmp_e = sub(tmp_e, 31 - 5); hStereoCng->sg_average_fx[b] = L_shl_r( hStereoCng->sg_average_fx[b], sub(tmp_e,5) ); // Q31 } hStereoCng->prev_sg_average_counter = hStereoCng->sg_average_counter; Loading @@ -414,8 +414,8 @@ void stereo_dft_cng_side_gain_fx( tmp = hStereoCng->sg_average_fx[b]; // hStereoCng->sg_average[b] = ( hStereoCng->sg_average[b] + prev_weight * hStereoCng->prev_sg_average[b] ) / ( (float) hStereoCng->sg_average_counter + prev_weight * (float) hStereoCng->prev_sg_average_counter ); hStereoCng->sg_average_fx[b] = BASOP_Util_Divide3232_Scale_cadence( L_add( hStereoCng->sg_average_fx[b], Mpy_32_16_1( hStereoCng->prev_sg_average_fx[b], prev_weight ) ), L_add( L_shl( hStereoCng->sg_average_counter, Q15 ), L_mult0( prev_weight, hStereoCng->prev_sg_average_counter ) ), &tmp_e ); tmp_e = sub(tmp_e, 16 - 3); hStereoCng->sg_average_fx[b] = L_shl_r( hStereoCng->sg_average_fx[b], sub(tmp_e,3) ); // Q28 tmp_e = sub(tmp_e, 16 - 5); hStereoCng->sg_average_fx[b] = L_shl_r( hStereoCng->sg_average_fx[b], sub(tmp_e,5) ); // Q26 hStereoCng->prev_sg_average_fx[b] = tmp; } Loading @@ -435,12 +435,12 @@ void stereo_dft_cng_side_gain_fx( for ( b = 0; b < hStereoDft->nbands; b++ ) { // hStereoDft->sidSideGain[b] = hStereoCng->sg_average[2 * b] * ( band_limits_full[2 * b + 1] - band_limits_full[2 * b] ); W_tmp = W_shl(W_mult_32_32( hStereoCng->sg_average_fx[2 * b], sub( band_limits_full[2 * b + 1], band_limits_full[2 * b] ) ) ,3); //Q31 W_tmp = W_shl(W_mult_32_32( hStereoCng->sg_average_fx[2 * b], sub( band_limits_full[2 * b + 1], band_limits_full[2 * b] ) ) ,5); //Q31 sgSum = sub( band_limits_full[2 * b + 1], band_limits_full[2 * b] ); if ( ( 2 * b + 1 ) < nbands_full ) { // hStereoDft->sidSideGain[b] += hStereoCng->sg_average[2 * b + 1] * ( band_limits_full[2 * b + 2] - band_limits_full[2 * b + 1] ); W_tmp = W_add(W_tmp, W_shl(W_mult_32_32( hStereoCng->sg_average_fx[2 * b + 1], sub( band_limits_full[2 * b + 2], band_limits_full[2 * b + 1] ) ),3) ); //Q31 W_tmp = W_add(W_tmp, W_shl(W_mult_32_32( hStereoCng->sg_average_fx[2 * b + 1], sub( band_limits_full[2 * b + 2], band_limits_full[2 * b + 1] ) ),5) ); //Q31 sgSum = add( sgSum, sub( band_limits_full[2 * b + 2], band_limits_full[2 * b + 1] ) ); } // hStereoDft->sidSideGain[b] = hStereoDft->sidSideGain[b] / sgSum; Loading @@ -457,7 +457,7 @@ void stereo_dft_cng_side_gain_fx( Word32 sg_average_fx_q31; for ( b = 0; b < hStereoDft->nbands; b++ ) { sg_average_fx_q31 = L_shl(hStereoCng->sg_average_fx[b], 3);//Q31 sg_average_fx_q31 = L_shl(hStereoCng->sg_average_fx[b], 5);//Q31 stereo_dft_quantize_res_gains_fx( &sg_average_fx_q31, NULL, NULL, NULL, hStereoDft->side_gain_index_EC + b, NULL ); } } Loading @@ -470,7 +470,7 @@ void stereo_dft_cng_side_gain_fx( for ( b = 0; b < nbands_full; b++ ) { //hStereoCng->prev_sg_average[b] += hStereoDft->sidSideGain[b]; hStereoCng->prev_sg_average_fx[b] = L_add(hStereoCng->prev_sg_average_fx[b],L_shr_r(hStereoDft->sidSideGain_fx[b],3)); //Q28 hStereoCng->prev_sg_average_fx[b] = L_add(hStereoCng->prev_sg_average_fx[b],L_shr_r(hStereoDft->sidSideGain_fx[b],5)); //Q26 } hStereoCng->prev_sg_average_counter++; Loading Loading @@ -658,7 +658,7 @@ void stereo_cng_upd_counters_fx( for (b = 0; b < nbands; b++) { //hStereoCng->sg_average[b] += sidSideGain[b]; hStereoCng->sg_average_fx[b] = L_add(hStereoCng->sg_average_fx[b], L_shr_r(sidSideGain[b],3));//Q28 hStereoCng->sg_average_fx[b] = L_add(hStereoCng->sg_average_fx[b], L_shr_r(sidSideGain[b],5));//Q26 } hStereoCng->sg_average_counter++; } Loading Loading
lib_enc/ivas_stat_enc.h +2 −2 Original line number Diff line number Diff line Loading @@ -1233,8 +1233,8 @@ typedef struct stereo_cng_enc Word16 td_active; /* TD-stereo indication */ Word16 first_SID_after_TD; /* Set if first SID frame after TD stereo */ Word16 first_SID; /* Set if first SID frame since codec start */ Word32 sg_average_fx[STEREO_DFT_ERB4_BANDS]; /* Sidegain average Q28 */ Word32 prev_sg_average_fx[STEREO_DFT_ERB4_BANDS]; /* Previous sidegain average Q28 */ Word32 sg_average_fx[STEREO_DFT_ERB4_BANDS]; /* Sidegain average Q26 */ Word32 prev_sg_average_fx[STEREO_DFT_ERB4_BANDS]; /* Previous sidegain average Q26 */ Word32 mem_cohBand_fx[STEREO_DFT_BAND_MAX / 2]; /* Coherence memory */ Word32 prev_cohBand_fx[2 * ( STEREO_DFT_BAND_MAX / 2 )]; /* Previous coherence */ } STEREO_CNG_ENC, *STEREO_CNG_ENC_HANDLE; Loading
lib_enc/ivas_stereo_cng_enc.c +10 −10 Original line number Diff line number Diff line Loading @@ -373,7 +373,7 @@ void stereo_dft_cng_side_gain_fx( for ( b = 0; b < nbands_full; b++ ) { // hStereoCng->sg_average[b] += hStereoDft->sidSideGain[b]; hStereoCng->sg_average_fx[b] = L_add( hStereoCng->sg_average_fx[b], L_shr_r(hStereoDft->sidSideGain_fx[b],3) ); hStereoCng->sg_average_fx[b] = L_add( hStereoCng->sg_average_fx[b], L_shr_r(hStereoDft->sidSideGain_fx[b],5) ); } hStereoCng->sg_average_counter = add( hStereoCng->sg_average_counter, 1 ); Loading @@ -393,8 +393,8 @@ void stereo_dft_cng_side_gain_fx( hStereoCng->prev_sg_average_fx[b] = hStereoCng->sg_average_fx[b]; // hStereoCng->sg_average[b] = hStereoCng->sg_average[b] / (float) hStereoCng->sg_average_counter; hStereoCng->sg_average_fx[b] = BASOP_Util_Divide3232_Scale_cadence( hStereoCng->sg_average_fx[b], hStereoCng->sg_average_counter, &tmp_e ); tmp_e = sub(tmp_e, 31 - 3); hStereoCng->sg_average_fx[b] = L_shl_r( hStereoCng->sg_average_fx[b], sub(tmp_e,3) ); // Q31 tmp_e = sub(tmp_e, 31 - 5); hStereoCng->sg_average_fx[b] = L_shl_r( hStereoCng->sg_average_fx[b], sub(tmp_e,5) ); // Q31 } hStereoCng->prev_sg_average_counter = hStereoCng->sg_average_counter; Loading @@ -414,8 +414,8 @@ void stereo_dft_cng_side_gain_fx( tmp = hStereoCng->sg_average_fx[b]; // hStereoCng->sg_average[b] = ( hStereoCng->sg_average[b] + prev_weight * hStereoCng->prev_sg_average[b] ) / ( (float) hStereoCng->sg_average_counter + prev_weight * (float) hStereoCng->prev_sg_average_counter ); hStereoCng->sg_average_fx[b] = BASOP_Util_Divide3232_Scale_cadence( L_add( hStereoCng->sg_average_fx[b], Mpy_32_16_1( hStereoCng->prev_sg_average_fx[b], prev_weight ) ), L_add( L_shl( hStereoCng->sg_average_counter, Q15 ), L_mult0( prev_weight, hStereoCng->prev_sg_average_counter ) ), &tmp_e ); tmp_e = sub(tmp_e, 16 - 3); hStereoCng->sg_average_fx[b] = L_shl_r( hStereoCng->sg_average_fx[b], sub(tmp_e,3) ); // Q28 tmp_e = sub(tmp_e, 16 - 5); hStereoCng->sg_average_fx[b] = L_shl_r( hStereoCng->sg_average_fx[b], sub(tmp_e,5) ); // Q26 hStereoCng->prev_sg_average_fx[b] = tmp; } Loading @@ -435,12 +435,12 @@ void stereo_dft_cng_side_gain_fx( for ( b = 0; b < hStereoDft->nbands; b++ ) { // hStereoDft->sidSideGain[b] = hStereoCng->sg_average[2 * b] * ( band_limits_full[2 * b + 1] - band_limits_full[2 * b] ); W_tmp = W_shl(W_mult_32_32( hStereoCng->sg_average_fx[2 * b], sub( band_limits_full[2 * b + 1], band_limits_full[2 * b] ) ) ,3); //Q31 W_tmp = W_shl(W_mult_32_32( hStereoCng->sg_average_fx[2 * b], sub( band_limits_full[2 * b + 1], band_limits_full[2 * b] ) ) ,5); //Q31 sgSum = sub( band_limits_full[2 * b + 1], band_limits_full[2 * b] ); if ( ( 2 * b + 1 ) < nbands_full ) { // hStereoDft->sidSideGain[b] += hStereoCng->sg_average[2 * b + 1] * ( band_limits_full[2 * b + 2] - band_limits_full[2 * b + 1] ); W_tmp = W_add(W_tmp, W_shl(W_mult_32_32( hStereoCng->sg_average_fx[2 * b + 1], sub( band_limits_full[2 * b + 2], band_limits_full[2 * b + 1] ) ),3) ); //Q31 W_tmp = W_add(W_tmp, W_shl(W_mult_32_32( hStereoCng->sg_average_fx[2 * b + 1], sub( band_limits_full[2 * b + 2], band_limits_full[2 * b + 1] ) ),5) ); //Q31 sgSum = add( sgSum, sub( band_limits_full[2 * b + 2], band_limits_full[2 * b + 1] ) ); } // hStereoDft->sidSideGain[b] = hStereoDft->sidSideGain[b] / sgSum; Loading @@ -457,7 +457,7 @@ void stereo_dft_cng_side_gain_fx( Word32 sg_average_fx_q31; for ( b = 0; b < hStereoDft->nbands; b++ ) { sg_average_fx_q31 = L_shl(hStereoCng->sg_average_fx[b], 3);//Q31 sg_average_fx_q31 = L_shl(hStereoCng->sg_average_fx[b], 5);//Q31 stereo_dft_quantize_res_gains_fx( &sg_average_fx_q31, NULL, NULL, NULL, hStereoDft->side_gain_index_EC + b, NULL ); } } Loading @@ -470,7 +470,7 @@ void stereo_dft_cng_side_gain_fx( for ( b = 0; b < nbands_full; b++ ) { //hStereoCng->prev_sg_average[b] += hStereoDft->sidSideGain[b]; hStereoCng->prev_sg_average_fx[b] = L_add(hStereoCng->prev_sg_average_fx[b],L_shr_r(hStereoDft->sidSideGain_fx[b],3)); //Q28 hStereoCng->prev_sg_average_fx[b] = L_add(hStereoCng->prev_sg_average_fx[b],L_shr_r(hStereoDft->sidSideGain_fx[b],5)); //Q26 } hStereoCng->prev_sg_average_counter++; Loading Loading @@ -658,7 +658,7 @@ void stereo_cng_upd_counters_fx( for (b = 0; b < nbands; b++) { //hStereoCng->sg_average[b] += sidSideGain[b]; hStereoCng->sg_average_fx[b] = L_add(hStereoCng->sg_average_fx[b], L_shr_r(sidSideGain[b],3));//Q28 hStereoCng->sg_average_fx[b] = L_add(hStereoCng->sg_average_fx[b], L_shr_r(sidSideGain[b],5));//Q26 } hStereoCng->sg_average_counter++; } Loading