Commit 8b76d0b5 authored by fotopoulou's avatar fotopoulou
Browse files

Merge branch 'basop-2621-flag_noisy_speech-threshold-mis-scaled-Q23-vs-Q0' into 'main'

Resolve: "flag_noisy_speech threshold mis-scaled (Q23 vs Q0)"

See merge request !3073
parents e40623cf 5fcec405
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -100,6 +100,7 @@
#define FIX_BASOP_2442_MASA2TC_TO_MONO_AND_AMBI         /* Nokia: BASOP issue 2442: Increase accuracy of computations and add additional gain clamp for low energy decorrelated signal rendering. */
#define FIX_FMSW_DEC_EXT                                /* float issue 1566: fix EXT output in format switching */
#define FIX_BASOP_2612_RESET_DECIM_MEM                  /* FhG: BASOP #2612: reset (zero) the 16k resampler memory of the secondary channel on DFT->TD stereo switch (otherwise -> fx overshoot) */
#define FIX_BASOP_2621_STEREO_CNG_NOISY_SPEECH_QSHIFT   /* FhG: BASOP #2621: stereo_dft_generate_comfort_noise_fx flag_noisy_speech: compare (lp_speech-lp_noise) Q23 diff against 28.0 in Q23 (was vs integer 28 with q_lp_noise=0) */

/* ##################### End NON-BE switches ########################### */

+2 −2
Original line number Diff line number Diff line
@@ -2128,7 +2128,7 @@ void noisy_speech_detection_fx(
            logTotalNoise = Mpy_32_16_1( L_add( logTotalNoise, logTotalNoiseExp ), 24660 /*0.75257498916 Q15*/ ); /*Q31 - logTotalNoiseExp*/
        }

        hFdCngDec->lp_noise = L_add( Mpy_32_16_1( hFdCngDec->lp_noise, 32604 /*0.995 Q15*/ ), L_shr( Mpy_32_16_1( logTotalNoise, 20972 /*0.64 Q15*/ ), 7 ) ); /*hFdCngDec->q_lp_noise*/
        hFdCngDec->lp_noise = L_add( Mpy_32_16_1( hFdCngDec->lp_noise, 32604 /*0.995 Q15*/ ), L_shr( Mpy_32_16_1( logTotalNoise, 20972 /*0.64 Q15*/ ), 7 ) ); /*Q23*/
        move32();
    }
    ELSE
@@ -2175,7 +2175,7 @@ void noisy_speech_detection_fx(
            }
        }

        hFdCngDec->lp_speech = L_add( Mpy_32_16_1( hFdCngDec->lp_speech, 32604 /*0.995 Q15*/ ), L_shr( Mpy_32_16_1( logEtot, 20972 /*0.64 Q15*/ ), 7 ) ); /*hFdCngDec->q_lp_speech*/
        hFdCngDec->lp_speech = L_add( Mpy_32_16_1( hFdCngDec->lp_speech, 32604 /*0.995 Q15*/ ), L_shr( Mpy_32_16_1( logEtot, 20972 /*0.64 Q15*/ ), 7 ) ); /*Q23*/
        move32();
    }

+6 −0
Original line number Diff line number Diff line
@@ -772,8 +772,10 @@ static void stereo_dft_generate_comfort_noise_fx(
    }
    ELSE IF( ( chan == 0 ) )
    {
#ifndef FIX_BASOP_2621_STEREO_CNG_NOISY_SPEECH_QSHIFT
        Word16 q_lp_noise = 0; // st->hFdCngDec->q_lp_noise; // to be populated appropriately.
        move16();
#endif
        Word32 log_lp_noise = L_add( L_shl( lp_noise_e, Q25 ), BASOP_Util_Log2( L_add( lp_noise, DELTA_FX ) ) ); /* Q25 */
        // log10(x) is computed as log2(x) * log10(2)
        // log_lp_noise at this stage is in Q25. where as the structure value is in Q23
@@ -783,7 +785,11 @@ static void stereo_dft_generate_comfort_noise_fx(
        move32();
        st->lp_noise = st->hFdCngDec->lp_noise; /* Q23 */
        move32();
#ifdef FIX_BASOP_2621_STEREO_CNG_NOISY_SPEECH_QSHIFT
        st->hFdCngDec->hFdCngCom->flag_noisy_speech = extract_l( LT_32( L_sub( st->hFdCngDec->lp_speech, st->hFdCngDec->lp_noise ), 234881024 /* 28.0f in Q23 */ ) ); /* Q0 */
#else
        st->hFdCngDec->hFdCngCom->flag_noisy_speech = extract_l( LT_32( L_shr( L_sub( st->hFdCngDec->lp_speech, st->hFdCngDec->lp_noise ), q_lp_noise ), 28 ) ); /* Q0 */
#endif
        move16();
        st->hFdCngDec->hFdCngCom->likelihood_noisy_speech = add( mult_r( 32440 /* 0.99 in Q15 */, st->hFdCngDec->hFdCngCom->likelihood_noisy_speech ),
                                                                 mult_r( 328 /* 0.01 in Q15 */, st->hFdCngDec->hFdCngCom->flag_noisy_speech ) ); /* Q15 */
+4 −0
Original line number Diff line number Diff line
@@ -137,10 +137,14 @@ typedef struct

    Word16 flag_dtx_mode;
    Word32 lp_speech; /* format: Q9.23 */
#ifndef FIX_BASOP_2621_STEREO_CNG_NOISY_SPEECH_QSHIFT
    Word16 q_lp_speech;
#endif

    Word32 lp_noise; /* format: Q9.23 */
#ifndef FIX_BASOP_2621_STEREO_CNG_NOISY_SPEECH_QSHIFT
    Word16 q_lp_noise;
#endif

    Word16 msPeriodogBuf[MSBUFLEN * NPART_SHAPING];