Commit 1f410439 authored by fotopoulou's avatar fotopoulou
Browse files

Merge branch 'main' into basop-2620-dead-always-overwritten-clamp-on-log-domain-gsMapping

parents 52d624a0 8b76d0b5
Loading
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -100,6 +100,8 @@
#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 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];

+3 −0
Original line number Diff line number Diff line
@@ -853,6 +853,9 @@ void stereo_switching_enc_fx(

        /* no secondary channel in the previous frame -> memory resets */
        set16_fx( sts[1]->old_inp_12k8_fx, 0, L_INP_MEM );
#ifdef FIX_BASOP_2612_RESET_DECIM_MEM
        set16_fx( sts[1]->mem_decim16k_fx, 0, 2 * L_FILT_MAX );
#endif
        set16_fx( sts[1]->mem_decim_fx, 0, 2 * L_FILT_MAX );
        sts[1]->q_mem_decim_fx = Q15;
        move16();