Commit 69312e13 authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Merge branch 'bugfix/issue909' into 'main'

Fixed calculation of energy (Energy_16, EnergyL_16) in SWB_BWE_decoding [allow regression]

See merge request !841
parents f7dbe7fb 21a8b6e4
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -388,8 +388,7 @@ void SWB_BWE_decoding_fx(
    Word16 *prev_weight,         /* i/o: excitation weight value of last frame */
    const Word16 extl,           /* i  : extension layer                       */
    Word16 Q_syn,
    const Word16 last_extl, /* i  : extension layer of last frame         */
    Word16 element_mode     /* i  : element mode  */
    const Word16 last_extl /* i  : extension layer of last frame         */
);
void time_envelop_shaping_fx(
@@ -2719,8 +2718,7 @@ void SWB_BWE_decoding_fx(
    Word16 *prev_weight,         /* i/o: excitation weight value of last frame */
    const Word16 extl,           /* i  : extension layer                       */
    Word16 Q_syn,
    const Word16 last_extl, /* i  : extension layer of last frame         */
    Word16 element_mode     /* i  : element mode  */
    const Word16 last_extl /* i  : extension layer of last frame         */
);
void time_envelop_shaping_fx(
+7 −18
Original line number Diff line number Diff line
@@ -1377,8 +1377,7 @@ void SWB_BWE_decoding_fx(
    Word16 *prev_weight,         /* i/o: excitation weight value of last frame */
    const Word16 extl,           /* i  : extension layer                       */
    Word16 Q_syn,
    const Word16 last_extl, /* i  : extension layer of last frame         */
    Word16 element_mode     /* i  : element mode                          */
    const Word16 last_extl /* i  : extension layer of last frame         */
)
{
    Word16 n_freq, n_band, L, L_swb_norm;
@@ -1581,22 +1580,12 @@ void SWB_BWE_decoding_fx(
        exp = norm_s( SWB_FENV );
        tmp = div_s( shl( 1, sub( 14, exp ) ), SWB_FENV ); /*Q(29-exp) */
        L_tmp = Mult_32_16( L_energy, tmp );               /*Q(1+29-exp+1)->Q(15-exp) */
        IF( EQ_16( element_mode, EVS_MONO ) )
        {
#ifdef BASOP_NOGLOB
            Energy_16 = round_fx_sat( L_shl_sat( L_tmp, add( exp, 4 ) ) );
#else
            EnergyL_16 = round_fx( L_shl( L_tmp, add( exp, 4 ) ) );
#endif
        }
        ELSE
        {

#ifdef BASOP_NOGLOB
            EnergyL_16 = round_fx_sat( L_shl_sat( L_tmp, add( exp, 4 ) ) ); /* Q3 */
        Energy_16 = round_fx_sat( L_shl_sat( L_tmp, add( exp, 4 ) ) ); /* Q3 */
#else
        Energy_16 = round_fx( L_shl( L_tmp, add( exp, 4 ) ) );                                            /*Q3 */
#endif
        }

        test();
        IF( NE_16( last_extl, SWB_BWE ) && NE_16( last_extl, FB_BWE ) )
+2 −2
Original line number Diff line number Diff line
@@ -473,11 +473,11 @@ Word16 swb_bwe_dec_fx32(

    IF( EQ_16( st_fx->L_frame, L_FRAME16k ) )
    {
        SWB_BWE_decoding_fx( ysynth_fx, SWB_fenv_fx, yerror_fx, L_FRAME32k - 80, mode, &frica_flag, &hBWE_FD->prev_Energy_fx, st_fx->prev_SWB_fenv_fx, &hBWE_FD->prev_L_swb_norm, st_fx->tilt_wb_fx, &hBWE_FD->Seed, 80, &hBWE_FD->prev_weight_fx, st_fx->extl, Q_syn, st_fx->last_extl, st_fx->element_mode );
        SWB_BWE_decoding_fx( ysynth_fx, SWB_fenv_fx, yerror_fx, L_FRAME32k - 80, mode, &frica_flag, &hBWE_FD->prev_Energy_fx, st_fx->prev_SWB_fenv_fx, &hBWE_FD->prev_L_swb_norm, st_fx->tilt_wb_fx, &hBWE_FD->Seed, 80, &hBWE_FD->prev_weight_fx, st_fx->extl, Q_syn, st_fx->last_extl );
    }
    ELSE
    {
        SWB_BWE_decoding_fx( ysynth_fx, SWB_fenv_fx, yerror_fx, L_FRAME32k - 80, mode, &frica_flag, &hBWE_FD->prev_Energy_fx, st_fx->prev_SWB_fenv_fx, &hBWE_FD->prev_L_swb_norm, st_fx->tilt_wb_fx, &hBWE_FD->Seed, 6, &hBWE_FD->prev_weight_fx, st_fx->extl, Q_syn, st_fx->last_extl, st_fx->element_mode );
        SWB_BWE_decoding_fx( ysynth_fx, SWB_fenv_fx, yerror_fx, L_FRAME32k - 80, mode, &frica_flag, &hBWE_FD->prev_Energy_fx, st_fx->prev_SWB_fenv_fx, &hBWE_FD->prev_L_swb_norm, st_fx->tilt_wb_fx, &hBWE_FD->Seed, 6, &hBWE_FD->prev_weight_fx, st_fx->extl, Q_syn, st_fx->last_extl );
    }

    test();
+2 −3
Original line number Diff line number Diff line
@@ -1071,13 +1071,12 @@ Word16 swb_bwe_dec_fx( /*o :Q_syn_hb*/
    IF( EQ_16( st_fx->L_frame, L_FRAME16k ) )
    {
        SWB_BWE_decoding_fx( ysynth_fx, SWB_fenv_fx, ysynth_32, L_FRAME32k - 80, mode, &frica_flag, &hBWE_FD->prev_Energy_fx, st_fx->prev_SWB_fenv_fx,
                             &hBWE_FD->prev_L_swb_norm, st_fx->tilt_wb_fx, &hBWE_FD->Seed, 80, &hBWE_FD->prev_weight_fx, st_fx->extl, Q_syn, st_fx->last_extl, st_fx->element_mode );
                             &hBWE_FD->prev_L_swb_norm, st_fx->tilt_wb_fx, &hBWE_FD->Seed, 80, &hBWE_FD->prev_weight_fx, st_fx->extl, Q_syn, st_fx->last_extl );
    }
    ELSE
    {
        SWB_BWE_decoding_fx( ysynth_fx, SWB_fenv_fx, ysynth_32, L_FRAME32k - 80, mode, &frica_flag, &hBWE_FD->prev_Energy_fx, st_fx->prev_SWB_fenv_fx,
                             &hBWE_FD->prev_L_swb_norm, st_fx->tilt_wb_fx, &hBWE_FD->Seed, 6, &hBWE_FD->prev_weight_fx, st_fx->extl, Q_syn,
                             st_fx->last_extl, st_fx->element_mode );
                             &hBWE_FD->prev_L_swb_norm, st_fx->tilt_wb_fx, &hBWE_FD->Seed, 6, &hBWE_FD->prev_weight_fx, st_fx->extl, Q_syn, st_fx->last_extl );
    }

    test();