Commit e80f6837 authored by vaclav's avatar vaclav
Browse files

fix

parent d2aee022
Loading
Loading
Loading
Loading
+30 −18
Original line number Diff line number Diff line
@@ -1089,9 +1089,9 @@ ivas_error acelp_core_enc_ivas_fx(
                Word16 Q_cngNoise = Q31, zero_flag = 0;
                move16();
                move16();
                FOR( Word16 j = 0; j < NPART; j++ )
                FOR( i = 0; i < NPART; i++ )
                {
                    IF( st->hFdCngEnc->hFdCngCom->cngNoiseLevel[j] != 0 )
                    IF( st->hFdCngEnc->hFdCngCom->cngNoiseLevel[i] != 0 )
                    {
                        zero_flag = 1;
                        move16();
@@ -1508,6 +1508,14 @@ ivas_error acelp_core_enc_ivas_fx(
        /* save and delay synthesis to be used by SWB BWE */
        IF( st->hBWE_FD != NULL )
        {
#ifdef HARMONIZE_ACELP_ENC
        IF( st->element_mode == EVS_MONO )
        {
            save_old_syn_fx( st->L_frame, syn_fx, old_syn_12k8_16k, st->hBWE_FD->old_syn_12k8_16k_fx, st->preemph_fac, &st->hBWE_FD->mem_deemph_old_syn_fx );
        }
        ELSE
#endif
        {
            st->hBWE_FD->mem_deemph_old_syn_fx = shl_sat( st->hBWE_FD->mem_deemph_old_syn_fx, sub( s_min( st->Q_syn, st->hBWE_FD->q_mem_deemph_old_syn ), st->hBWE_FD->q_mem_deemph_old_syn ) ); // s_min( st->Q_syn, st->hBWE_FD->q_mem_deemph_old_syn )
            move16();
            Scale_sig( st->hBWE_FD->old_syn_12k8_16k_fx, NS2SA( 16000, DELAY_FD_BWE_ENC_NS ), sub( s_min( st->Q_syn, st->hBWE_FD->q_mem_deemph_old_syn ), st->hBWE_FD->q_mem_deemph_old_syn ) ); // s_min( st->Q_syn, st->hBWE_FD->q_mem_deemph_old_syn )
@@ -1523,24 +1531,26 @@ ivas_error acelp_core_enc_ivas_fx(
            move16();
            Scale_sig( syn_fx, st->L_frame, sub( st->Q_syn, s_min( st->Q_syn, st->hBWE_FD->q_mem_deemph_old_syn ) ) ); // st->Q_syn
            }
        }

        /*Update MODE2 core switching memory*/
#ifdef HARMONIZE_ACELP_ENC
        Copy( syn_fx, syn1_fx, st->L_frame ); // Q_syn
        E_UTIL_deemph2( sub( Q_new, 1 ), syn1_fx, st->preemph_fac, st->L_frame, &hLPDmem->syn[M] );
        Copy( syn1_fx + st->L_frame - M - 1, hLPDmem->syn, M + 1 ); // Q_syn
#else
        Copy( syn_fx, syn1_fx, st->L_frame ); // st->Q_syn
        
        Scale_sig( st->hLPDmem->syn, M + 1, sub( st->Q_syn, st->hLPDmem->q_lpd_syn ) ); // st->Q_syn
        st->hLPDmem->q_lpd_syn = st->Q_syn;
        move16();

        /*Update MODE2 core switching memory*/
#ifdef HARMONIZE_ACELP_ENC       
        IF( st->element_mode == EVS_MONO )
        {
            E_UTIL_deemph2( sub( Q_new, 1 ), syn1_fx, st->preemph_fac, st->L_frame, &hLPDmem->syn[M] );
        }
        ELSE
#endif
        {
            deemph_fx( syn1_fx, st->preemph_fac, st->L_frame, &( hLPDmem->syn[M] ) );

        }
        Copy( syn1_fx + add( st->L_frame, -M - 1 ), hLPDmem->syn, M + 1 ); // st->Q_syn
#endif

        test();
        IF( st->element_mode > EVS_MONO && st->hTcxEnc != NULL )
@@ -1722,26 +1732,28 @@ ivas_error acelp_core_enc_ivas_fx(
        Word16 q_exc = Q_new;
        move16();
        IF( st->element_mode > EVS_MONO )
#endif
        {
#endif
#ifndef HARMONIZE_ACELP_ENC
            Word16 q_exc = st->hTdCngEnc->cng_Qexc_buf[0];
            move16();
#endif
            FOR( Word16 ii = 0; ii < HO_HIST_SIZE; ii++ )
            FOR( i = 0; i < HO_HIST_SIZE; i++ )
            {
                q_exc = s_min( q_exc, st->hTdCngEnc->cng_Qexc_buf[ii] );
                q_exc = s_min( q_exc, st->hTdCngEnc->cng_Qexc_buf[i] );
            }
            q_exc = s_min( q_exc, Q_new );

            Scale_sig( exc_fx, L_EXC - L_EXC_MEM, sub( q_exc, Q_new ) ); // q_exc
            FOR( Word16 ii = 0; ii < HO_HIST_SIZE; ii++ )
            FOR( i = 0; i < HO_HIST_SIZE; i++ )
            {
                Scale_sig( st->hTdCngEnc->cng_exc2_buf + ii * L_FFT, L_FFT, sub( q_exc, st->hTdCngEnc->cng_Qexc_buf[ii] ) ); // Q_exc
                st->hTdCngEnc->cng_Qexc_buf[ii] = q_exc;
                Scale_sig( st->hTdCngEnc->cng_exc2_buf + i * L_FFT, L_FFT, sub( q_exc, st->hTdCngEnc->cng_Qexc_buf[i] ) ); // Q_exc
                st->hTdCngEnc->cng_Qexc_buf[i] = q_exc;
                move16();
            }
#ifdef HARMONIZE_ACELP_ENC
        }
#endif

        cng_params_upd_fx( lsp_new, exc_fx, st->L_frame, &st->hTdCngEnc->ho_circ_ptr, st->hTdCngEnc->ho_ener_circ_fx, &st->hTdCngEnc->ho_circ_size, st->hTdCngEnc->ho_lsp_circ_fx,
                           q_exc, ENC, st->hTdCngEnc->ho_env_circ_fx, &st->hTdCngEnc->cng_buf_cnt, st->hTdCngEnc->cng_exc2_buf, st->hTdCngEnc->cng_Qexc_buf, st->hTdCngEnc->cng_brate_buf, st->hDtxEnc->last_active_brate, st->element_mode, st->hFdCngEnc->hFdCngCom->CngBandwidth );