Commit 39881aa8 authored by Nishant S Kulgod's avatar Nishant S Kulgod
Browse files

some LTV fixes

parent 68f7be1d
Loading
Loading
Loading
Loading
Loading
+18 −4
Original line number Diff line number Diff line
@@ -1384,16 +1384,24 @@ Word16 ApplyFdCng_ivas_fx(
                    IF( NE_16( s2, -( WORD32_BITS - 1 ) ) )
                    {
                        s = sub( *cngNoiseLevel_exp, add( hFdCngDec->bandNoiseShape_exp, s2 ) );
                        Word16 e_shift=0;
                        if (s > 0) {
                            Word16 q_norm = L_norm_arr(&cngNoiseLevel[j], sub(FFTCLDFBLEN, j));
                            if (GT_16(s, q_norm)) {
                                scale_sig32(cngNoiseLevel, j, sub(q_norm, s));
                                e_shift = sub(s, q_norm);
                            }
                        }
                        FOR( ; k < hFdCngCom->npart; k++ )
                        {
                            FOR( ; j <= hFdCngCom->part[k]; j++ )
                            {
                                cngNoiseLevel[j] = L_shl( cngNoiseLevel[j], s );
                                cngNoiseLevel[j] = L_shl( cngNoiseLevel[j], sub( s, e_shift ) );
                                move32();
                            }
                        }

                        *cngNoiseLevel_exp = add( hFdCngDec->bandNoiseShape_exp, s2 );
                        *cngNoiseLevel_exp = add( add( hFdCngDec->bandNoiseShape_exp, s2 ), e_shift );
                        move16();
                    }
                }
@@ -2793,8 +2801,14 @@ void perform_noise_estimation_dec_ivas_fx(
                {
                    alpha = Inv16( add( hFdCngDec->first_cna_noise_update_cnt, 1 ), &e );
                    alpha = shl_sat( alpha, e ); // Q15
                    IF (LT_16(hFdCngDec->msPeriodog_exp, hFdCngDec->msNoiseEst_exp)) {
                        scale_sig32(hFdCngDec->msPeriodog, NPART_SHAPING, sub(hFdCngDec->msPeriodog_exp,hFdCngDec->msNoiseEst_exp));
                        hFdCngDec->msPeriodog_exp=hFdCngDec->msNoiseEst_exp;
                    }
                    ELSE IF (GT_16(hFdCngDec->msPeriodog_exp, hFdCngDec->msNoiseEst_exp)) {
                        scale_sig32(msNoiseEst, NPART_SHAPING, sub(hFdCngDec->msNoiseEst_exp, hFdCngDec->msPeriodog_exp));
                        hFdCngDec->msNoiseEst_exp = hFdCngDec->msPeriodog_exp;
                    }
                    FOR( p = 0; p < npart; p++ )
                    {
                        temp = msPeriodog[p];
+9 −1
Original line number Diff line number Diff line
@@ -1273,13 +1273,21 @@ static void stereo_dft_generate_comfort_noise_fx(
                FOR( k = 0; k < sub( hFdCngCom->nFFTpart, 2 ); k++ )
                {
                    factor = BASOP_Util_Divide3232_Scale_cadence( L_add( hFdCngCom->sidNoiseEstLp[k], DELTA_FX ), L_add( st->hFdCngDec->partNoiseShape[k], DELTA_FX ), &q_div );
                    factor = s_min( add( hStereoDft->scale_fx, extract_l( Mpy_32_16_1( L_mult( sub( extract_h( factor ), hStereoDft->scale_fx ), hStereoCng->xfade_frame_counter ), ONE_BY_MAX_K ) ) ), extract_h( factor ) );
                    q_div = add(q_div, sub(hFdCngCom->sidNoiseEstExp, st->hFdCngDec->partNoiseShape_exp));
                    if (q_div < 0) {
                        factor = L_shl(factor, q_div); //Q31
                        q_div = 0;
                    }
                    //factor = s_min( add( hStereoDft->scale_fx, extract_l( Mpy_32_16_1( L_mult( sub( extract_h( factor ), hStereoDft->scale_fx ), hStereoCng->xfade_frame_counter ), ONE_BY_MAX_K ) ) ), extract_h( factor ) );
                    factor = L_min( L_add( L_shl( hStereoDft->scale_fx, sub( 16, q_div ) ), W_extract_l( W_mult0_32_32( Mpy_32_16_1( L_sub( factor, L_shl( hStereoDft->scale_fx, sub( 16, q_div ) ) ), ONE_BY_MAX_K ), hStereoCng->xfade_frame_counter ) ) ), factor );
                    FOR( ; j <= hFdCngCom->part[k]; j++ )
                    {
                        hFdCngCom->cngNoiseLevel[j] = Mpy_32_32( st->hFdCngDec->bandNoiseShape[j], factor );
                        hFdCngCom->cngNoiseLevel[j] = L_shl(hFdCngCom->cngNoiseLevel[j], q_div);
                        move32();
                    }
                }
                hFdCngCom->cngNoiseLevelExp = st->hFdCngDec->bandNoiseShape_exp;
            }
        }
        scale = shr( output_frame, 1 );