Loading lib_com/options.h +0 −1 Original line number Diff line number Diff line Loading @@ -100,7 +100,6 @@ #define FIX_1576_LCLD_CRASH_DIFFERENT_CODEC_ISAR_FRAME_SIZE /* Dolby: float issue 1576: fix for crash in LCLD mode when codec frame size is less than isar frame size */ #define NONBE_FIX_ISSUE_2206_MDCT_STEREO_FIX_2549 /* FhG: Correct scale inconsistency of old_inp_16k_fx buffer scale. */ #define NONBE_FIX_2575 /* Fhg: Fix issue 2575, precision loss in FD CNG */ #define FIX_2584_TD_SM_ISSUE /* VA: Fix inconsistencies in the SM part of the TD stereo */ #define FIX_2556_ALIGN_CONDITIONS /* VA: Fix different conditions that were not exact between float and fix, BE on self-test */ #define FIX_2585_BIT_ALLOCATION_DIFF /* VA : issue 2585, bit allocation different behaviors between float and fixed-point for corner cases */ Loading lib_dec/acelp_core_dec_fx.c +0 −15 Original line number Diff line number Diff line Loading @@ -686,21 +686,6 @@ ivas_error acelp_core_dec_fx( move32(); } #ifndef NONBE_FIX_2575 ApplyFdCng_fx( psyn_fx, st->Q_syn, NULL, 0, realBuffer_fx, imagBuffer_fx, NULL, st, 0, ( st->coder_type == AUDIO && !st->GSC_noisy_speech ) ); Word16 new_sidNoiseEstExp = 31 - Q4; move16(); Scale_sig32( st->hFdCngDec->hFdCngCom->sidNoiseEstLp, NPART, sub( st->hFdCngDec->hFdCngCom->sidNoiseEstExp, new_sidNoiseEstExp ) ); // Q(31-sidNoiseEstExp) Scale_sig32( st->hFdCngDec->hFdCngCom->sidNoiseEst, NPART, sub( st->hFdCngDec->hFdCngCom->sidNoiseEstExp, new_sidNoiseEstExp ) ); // Q(31-sidNoiseEstExp) st->hFdCngDec->hFdCngCom->sidNoiseEstExp = new_sidNoiseEstExp; move16(); Word16 new_cngNoiseLevelExp = 31 - Q4; move16(); Scale_sig32( st->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, sub( st->hFdCngDec->hFdCngCom->cngNoiseLevelExp, new_cngNoiseLevelExp ) ); // Q(31-cngNoiseLevelExp) st->hFdCngDec->hFdCngCom->cngNoiseLevelExp = new_cngNoiseLevelExp; move16(); #endif test(); ApplyFdCng_fx( psyn_fx, st->Q_syn, NULL, 0, realBuffer_fx, imagBuffer_fx, NULL, st, 0, ( EQ_16( st->coder_type, AUDIO ) && !st->GSC_noisy_speech ) ); Loading lib_dec/ivas_stereo_cng_dec_fx.c +0 −42 Original line number Diff line number Diff line Loading @@ -118,11 +118,7 @@ static void stereo_dft_generate_comfort_noise_fx( Word16 trigo_step; Word32 tmp32_1, tmp32_2; Word16 q_div, q_sqrt1, q_sqrt2, q_sqrt, sqrt_res; #ifdef NONBE_FIX_2575 Word16 q_shift; #else Word16 q_shift, q_shift_1, q_shift_2, min_q; #endif Word16 tmp16, tmp_p, tmp_s; hFdCngCom = st->hFdCngDec->hFdCngCom; Loading Loading @@ -798,37 +794,18 @@ static void stereo_dft_generate_comfort_noise_fx( IF( ( chan == 0 ) && LE_32( st->core_brate, SID_2k40 ) ) { /* update smoothed periodogram used by stereo CNA in SID and NO_DATA frames from cngNoiseLevel_flt */ #ifdef NONBE_FIX_2575 Word16 smoothed_psd_exp[L_FRAME16k], smoothed_psd_exp_max = MIN_16; move16(); #else q_shift_1 = L_norm_arr( st->hFdCngDec->smoothed_psd_fx, L_FRAME16k ); q_shift_2 = L_norm_arr( hFdCngCom->cngNoiseLevel, FFTCLDFBLEN ); min_q = sub( s_min( add( q_shift_1, sub( Q31, st->hFdCngDec->smoothed_psd_exp ) ), add( q_shift_2, sub( Q31, hFdCngCom->cngNoiseLevelExp ) ) ), 1 /* Guard bit */ ); scale_sig32( st->hFdCngDec->smoothed_psd_fx, L_FRAME16k, sub( min_q, sub( Q31, st->hFdCngDec->smoothed_psd_exp ) ) ); /* Q31 - st->hFdCngDec->smoothed_psd_exp */ st->hFdCngDec->smoothed_psd_exp = sub( Q31, min_q ); move16(); scale_sig32( hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, sub( min_q, sub( Q31, hFdCngCom->cngNoiseLevelExp ) ) ); /* Q31 - hFdCngCom->cngNoiseLevelExp */ hFdCngCom->cngNoiseLevelExp = st->hFdCngDec->smoothed_psd_exp; move16(); #endif FOR( i = hFdCngCom->startBand; i < hFdCngCom->stopFFTbin; i++ ) { #ifdef NONBE_FIX_2575 Word16 ftmp_exp; ftmp = hFdCngCom->cngNoiseLevel[i - hFdCngCom->startBand]; move32(); ftmp_exp = hFdCngCom->cngNoiseLevelExp; move16(); #else ftmp = hFdCngCom->cngNoiseLevel[i - hFdCngCom->startBand]; move32(); #endif IF( !st->hFdCngDec->first_cna_noise_updated ) { /* very first update */ Loading @@ -841,28 +818,15 @@ static void stereo_dft_generate_comfort_noise_fx( move16(); test(); #ifdef NONBE_FIX_2575 IF( ( st->hFdCngDec->smoothed_psd_fx[i] > 0 ) && EQ_16( BASOP_Util_Cmp_Mant32Exp( Mpy_32_16_1( ftmp, (Word16) 0x3333 ), ftmp_exp, st->hFdCngDec->smoothed_psd_fx[i], st->hFdCngDec->smoothed_psd_exp ), 1 ) ) #else IF( ( st->hFdCngDec->smoothed_psd_fx[i] > 0 ) && GT_32( Mpy_32_16_1( ftmp, (Word16) 0x3333 ), st->hFdCngDec->smoothed_psd_fx[i] ) ) #endif { /* prevent abrupt upward update steps */ #ifdef NONBE_FIX_2575 ftmp = L_add( L_shr( st->hFdCngDec->smoothed_psd_fx[i], 2 - 1 ), L_shr( st->hFdCngDec->smoothed_psd_fx[i], 2 + 1 ) ); /* ftmp_exp */ move16(); ftmp_exp = add( st->hFdCngDec->smoothed_psd_exp, 2 ); move16(); #else ftmp = L_add( L_shl( st->hFdCngDec->smoothed_psd_fx[i], 1 ), L_shr( st->hFdCngDec->smoothed_psd_fx[i], 1 ) ); /* st->hFdCngDec->smoothed_psd_exp */ move16(); #endif } #ifdef NONBE_FIX_2575 ELSE IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( ftmp, ftmp_exp, st->hFdCngDec->smoothed_psd_fx[i], st->hFdCngDec->smoothed_psd_exp ), -1 ) ) #else ELSE IF( LT_32( ftmp, st->hFdCngDec->smoothed_psd_fx[i] ) ) #endif { /* faster downward updates */ alpha = (Word16) ( 0x599A ); Loading @@ -871,16 +835,11 @@ static void stereo_dft_generate_comfort_noise_fx( } /* smoothing */ #ifdef NONBE_FIX_2575 st->hFdCngDec->smoothed_psd_fx[i] = BASOP_Util_Add_Mant32Exp( Mpy_32_16_1( st->hFdCngDec->smoothed_psd_fx[i], alpha ), st->hFdCngDec->smoothed_psd_exp, Mpy_32_16_1( ftmp, sub( MAX_16, alpha ) ), ftmp_exp, &smoothed_psd_exp[i] ); /* smoothed_psd_exp[i] */ smoothed_psd_exp_max = s_max( smoothed_psd_exp_max, smoothed_psd_exp[i] ); #else st->hFdCngDec->smoothed_psd_fx[i] = L_add( Mpy_32_16_1( st->hFdCngDec->smoothed_psd_fx[i], alpha ), Mpy_32_16_1( ftmp, sub( MAX_16, alpha ) ) ); /* st->hFdCngDec->smoothed_psd_exp */ #endif move32(); } #ifdef NONBE_FIX_2575 /* Find common exponent for smoothed_psd_fx[] */ FOR( i = hFdCngCom->startBand; i < hFdCngCom->stopFFTbin; i++ ) { Loading @@ -888,7 +847,6 @@ static void stereo_dft_generate_comfort_noise_fx( } st->hFdCngDec->smoothed_psd_exp = smoothed_psd_exp_max; move16(); #endif /* update msNoiseEst in SID and NO_DATA frames */ bandcombinepow( &st->hFdCngDec->smoothed_psd_fx[hFdCngCom->startBand], st->hFdCngDec->smoothed_psd_exp, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), st->hFdCngDec->part_shaping, st->hFdCngDec->nFFTpart_shaping, st->hFdCngDec->psize_inv_shaping, st->hFdCngDec->msNoiseEst, &st->hFdCngDec->msNoiseEst_exp ); Loading Loading
lib_com/options.h +0 −1 Original line number Diff line number Diff line Loading @@ -100,7 +100,6 @@ #define FIX_1576_LCLD_CRASH_DIFFERENT_CODEC_ISAR_FRAME_SIZE /* Dolby: float issue 1576: fix for crash in LCLD mode when codec frame size is less than isar frame size */ #define NONBE_FIX_ISSUE_2206_MDCT_STEREO_FIX_2549 /* FhG: Correct scale inconsistency of old_inp_16k_fx buffer scale. */ #define NONBE_FIX_2575 /* Fhg: Fix issue 2575, precision loss in FD CNG */ #define FIX_2584_TD_SM_ISSUE /* VA: Fix inconsistencies in the SM part of the TD stereo */ #define FIX_2556_ALIGN_CONDITIONS /* VA: Fix different conditions that were not exact between float and fix, BE on self-test */ #define FIX_2585_BIT_ALLOCATION_DIFF /* VA : issue 2585, bit allocation different behaviors between float and fixed-point for corner cases */ Loading
lib_dec/acelp_core_dec_fx.c +0 −15 Original line number Diff line number Diff line Loading @@ -686,21 +686,6 @@ ivas_error acelp_core_dec_fx( move32(); } #ifndef NONBE_FIX_2575 ApplyFdCng_fx( psyn_fx, st->Q_syn, NULL, 0, realBuffer_fx, imagBuffer_fx, NULL, st, 0, ( st->coder_type == AUDIO && !st->GSC_noisy_speech ) ); Word16 new_sidNoiseEstExp = 31 - Q4; move16(); Scale_sig32( st->hFdCngDec->hFdCngCom->sidNoiseEstLp, NPART, sub( st->hFdCngDec->hFdCngCom->sidNoiseEstExp, new_sidNoiseEstExp ) ); // Q(31-sidNoiseEstExp) Scale_sig32( st->hFdCngDec->hFdCngCom->sidNoiseEst, NPART, sub( st->hFdCngDec->hFdCngCom->sidNoiseEstExp, new_sidNoiseEstExp ) ); // Q(31-sidNoiseEstExp) st->hFdCngDec->hFdCngCom->sidNoiseEstExp = new_sidNoiseEstExp; move16(); Word16 new_cngNoiseLevelExp = 31 - Q4; move16(); Scale_sig32( st->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, sub( st->hFdCngDec->hFdCngCom->cngNoiseLevelExp, new_cngNoiseLevelExp ) ); // Q(31-cngNoiseLevelExp) st->hFdCngDec->hFdCngCom->cngNoiseLevelExp = new_cngNoiseLevelExp; move16(); #endif test(); ApplyFdCng_fx( psyn_fx, st->Q_syn, NULL, 0, realBuffer_fx, imagBuffer_fx, NULL, st, 0, ( EQ_16( st->coder_type, AUDIO ) && !st->GSC_noisy_speech ) ); Loading
lib_dec/ivas_stereo_cng_dec_fx.c +0 −42 Original line number Diff line number Diff line Loading @@ -118,11 +118,7 @@ static void stereo_dft_generate_comfort_noise_fx( Word16 trigo_step; Word32 tmp32_1, tmp32_2; Word16 q_div, q_sqrt1, q_sqrt2, q_sqrt, sqrt_res; #ifdef NONBE_FIX_2575 Word16 q_shift; #else Word16 q_shift, q_shift_1, q_shift_2, min_q; #endif Word16 tmp16, tmp_p, tmp_s; hFdCngCom = st->hFdCngDec->hFdCngCom; Loading Loading @@ -798,37 +794,18 @@ static void stereo_dft_generate_comfort_noise_fx( IF( ( chan == 0 ) && LE_32( st->core_brate, SID_2k40 ) ) { /* update smoothed periodogram used by stereo CNA in SID and NO_DATA frames from cngNoiseLevel_flt */ #ifdef NONBE_FIX_2575 Word16 smoothed_psd_exp[L_FRAME16k], smoothed_psd_exp_max = MIN_16; move16(); #else q_shift_1 = L_norm_arr( st->hFdCngDec->smoothed_psd_fx, L_FRAME16k ); q_shift_2 = L_norm_arr( hFdCngCom->cngNoiseLevel, FFTCLDFBLEN ); min_q = sub( s_min( add( q_shift_1, sub( Q31, st->hFdCngDec->smoothed_psd_exp ) ), add( q_shift_2, sub( Q31, hFdCngCom->cngNoiseLevelExp ) ) ), 1 /* Guard bit */ ); scale_sig32( st->hFdCngDec->smoothed_psd_fx, L_FRAME16k, sub( min_q, sub( Q31, st->hFdCngDec->smoothed_psd_exp ) ) ); /* Q31 - st->hFdCngDec->smoothed_psd_exp */ st->hFdCngDec->smoothed_psd_exp = sub( Q31, min_q ); move16(); scale_sig32( hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, sub( min_q, sub( Q31, hFdCngCom->cngNoiseLevelExp ) ) ); /* Q31 - hFdCngCom->cngNoiseLevelExp */ hFdCngCom->cngNoiseLevelExp = st->hFdCngDec->smoothed_psd_exp; move16(); #endif FOR( i = hFdCngCom->startBand; i < hFdCngCom->stopFFTbin; i++ ) { #ifdef NONBE_FIX_2575 Word16 ftmp_exp; ftmp = hFdCngCom->cngNoiseLevel[i - hFdCngCom->startBand]; move32(); ftmp_exp = hFdCngCom->cngNoiseLevelExp; move16(); #else ftmp = hFdCngCom->cngNoiseLevel[i - hFdCngCom->startBand]; move32(); #endif IF( !st->hFdCngDec->first_cna_noise_updated ) { /* very first update */ Loading @@ -841,28 +818,15 @@ static void stereo_dft_generate_comfort_noise_fx( move16(); test(); #ifdef NONBE_FIX_2575 IF( ( st->hFdCngDec->smoothed_psd_fx[i] > 0 ) && EQ_16( BASOP_Util_Cmp_Mant32Exp( Mpy_32_16_1( ftmp, (Word16) 0x3333 ), ftmp_exp, st->hFdCngDec->smoothed_psd_fx[i], st->hFdCngDec->smoothed_psd_exp ), 1 ) ) #else IF( ( st->hFdCngDec->smoothed_psd_fx[i] > 0 ) && GT_32( Mpy_32_16_1( ftmp, (Word16) 0x3333 ), st->hFdCngDec->smoothed_psd_fx[i] ) ) #endif { /* prevent abrupt upward update steps */ #ifdef NONBE_FIX_2575 ftmp = L_add( L_shr( st->hFdCngDec->smoothed_psd_fx[i], 2 - 1 ), L_shr( st->hFdCngDec->smoothed_psd_fx[i], 2 + 1 ) ); /* ftmp_exp */ move16(); ftmp_exp = add( st->hFdCngDec->smoothed_psd_exp, 2 ); move16(); #else ftmp = L_add( L_shl( st->hFdCngDec->smoothed_psd_fx[i], 1 ), L_shr( st->hFdCngDec->smoothed_psd_fx[i], 1 ) ); /* st->hFdCngDec->smoothed_psd_exp */ move16(); #endif } #ifdef NONBE_FIX_2575 ELSE IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( ftmp, ftmp_exp, st->hFdCngDec->smoothed_psd_fx[i], st->hFdCngDec->smoothed_psd_exp ), -1 ) ) #else ELSE IF( LT_32( ftmp, st->hFdCngDec->smoothed_psd_fx[i] ) ) #endif { /* faster downward updates */ alpha = (Word16) ( 0x599A ); Loading @@ -871,16 +835,11 @@ static void stereo_dft_generate_comfort_noise_fx( } /* smoothing */ #ifdef NONBE_FIX_2575 st->hFdCngDec->smoothed_psd_fx[i] = BASOP_Util_Add_Mant32Exp( Mpy_32_16_1( st->hFdCngDec->smoothed_psd_fx[i], alpha ), st->hFdCngDec->smoothed_psd_exp, Mpy_32_16_1( ftmp, sub( MAX_16, alpha ) ), ftmp_exp, &smoothed_psd_exp[i] ); /* smoothed_psd_exp[i] */ smoothed_psd_exp_max = s_max( smoothed_psd_exp_max, smoothed_psd_exp[i] ); #else st->hFdCngDec->smoothed_psd_fx[i] = L_add( Mpy_32_16_1( st->hFdCngDec->smoothed_psd_fx[i], alpha ), Mpy_32_16_1( ftmp, sub( MAX_16, alpha ) ) ); /* st->hFdCngDec->smoothed_psd_exp */ #endif move32(); } #ifdef NONBE_FIX_2575 /* Find common exponent for smoothed_psd_fx[] */ FOR( i = hFdCngCom->startBand; i < hFdCngCom->stopFFTbin; i++ ) { Loading @@ -888,7 +847,6 @@ static void stereo_dft_generate_comfort_noise_fx( } st->hFdCngDec->smoothed_psd_exp = smoothed_psd_exp_max; move16(); #endif /* update msNoiseEst in SID and NO_DATA frames */ bandcombinepow( &st->hFdCngDec->smoothed_psd_fx[hFdCngCom->startBand], st->hFdCngDec->smoothed_psd_exp, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), st->hFdCngDec->part_shaping, st->hFdCngDec->nFFTpart_shaping, st->hFdCngDec->psize_inv_shaping, st->hFdCngDec->msNoiseEst, &st->hFdCngDec->msNoiseEst_exp ); Loading