Commit 84fb5fdd authored by Mohammadreza Naghibzadeh's avatar Mohammadreza Naghibzadeh
Browse files

fix CLDFB buffers scaling

parent 643bcca5
Loading
Loading
Loading
Loading
Loading
+33 −2
Original line number Diff line number Diff line
@@ -697,9 +697,8 @@ ivas_error ivas_core_enc_fx(
        {
            /* Common pre-processing for SWB(FB) TBE and SWB(FB) BWE */
            /* Scaling cldfb_state_fx */
            scale_sig32( st->cldfbSynTd->cldfb_state_fx, st->cldfbSynTd->p_filter_length, sub( q_re_im_buf[n], st->cldfbSynTd->Q_cldfb_state ) ); // st->cldfbSynTd->Q_cldfb_state -> q_realImagBuffer
#ifdef FIX_2021_BANDWIDTH_EXTENSION_PROBLEM
            Word16 scf_min = 31;
            Word16 shift, scf_cldfb, scf_min = 31;
            move16();
            FOR( int i = 0; i < CLDFB_NO_COL_MAX; i++ )
            {
@@ -712,11 +711,43 @@ ivas_error ivas_core_enc_fx(
                scale_sig32( imagBuffer_fx[n][i], CLDFB_NO_CHANNELS_MAX, scf_min );
            }
            q_re_im_buf[n] = add( q_re_im_buf[n], scf_min );

            scf_cldfb = L_norm_arr( st->cldfbSynTd->cldfb_state_fx, st->cldfbSynTd->p_filter_length );

            IF( NE_32( scf_cldfb, 31 ) )
            {
                scale_sig32( st->cldfbSynTd->cldfb_state_fx, st->cldfbSynTd->p_filter_length, scf_cldfb ); // st->cldfbSynTd->Q_cldfb_state -> q_realImagBuffer
                st->cldfbSynTd->Q_cldfb_state = add( st->cldfbSynTd->Q_cldfb_state, scf_cldfb );

                shift = sub( st->cldfbSynTd->Q_cldfb_state, sub( q_re_im_buf[n], 1 ) );
                IF( GT_32( sub( q_re_im_buf[n], 1 ), st->cldfbSynTd->Q_cldfb_state ) )
                {
                    FOR( int i = 0; i < CLDFB_NO_COL_MAX; i++ )
                    {
                        scale_sig32( realBuffer_fx[n][i], CLDFB_NO_CHANNELS_MAX, shift );
                        scale_sig32( imagBuffer_fx[n][i], CLDFB_NO_CHANNELS_MAX, shift );
                    }
                    q_re_im_buf[n] = add( st->cldfbSynTd->Q_cldfb_state, 1 );
                }
                ELSE
                {
                    scale_sig32( st->cldfbSynTd->cldfb_state_fx, st->cldfbSynTd->p_filter_length, negate( shift ) ); // st->cldfbSynTd->Q_cldfb_state -> q_realImagBuffer
                    st->cldfbSynTd->Q_cldfb_state = q_re_im_buf[n];
                }
            }

#else
            scale_sig32( st->cldfbSynTd->cldfb_state_fx, st->cldfbSynTd->p_filter_length, sub( q_re_im_buf[n], st->cldfbSynTd->Q_cldfb_state ) );           // st->cldfbSynTd->Q_cldfb_state -> q_realImagBuffer
#endif

            swb_pre_proc_ivas_fx( st, new_swb_speech_fx_16, new_swb_speech_fx, shb_speech_fx, &Q_shb_spch, realBuffer_fx[n], imagBuffer_fx[n], q_re_im_buf[n], hCPE );

#ifdef FIX_2021_BANDWIDTH_EXTENSION_PROBLEM
            st->cldfbSynTd->Q_cldfb_state = sub( q_re_im_buf[n], 1 );
#else
            /* Re-scaling cldfb_state_fx */
            scale_sig32( st->cldfbSynTd->cldfb_state_fx, st->cldfbSynTd->p_filter_length, negate( sub( q_re_im_buf[n], st->cldfbSynTd->Q_cldfb_state ) ) ); // q_realImagBuffer -> st->cldfbSynTd->Q_cldfb_state
#endif
        }
        ELSE IF( GE_32( input_Fs, 32000 ) )
        {