Commit 5a2b7410 authored by vaclav's avatar vaclav
Browse files

Merge remote-tracking branch 'remotes/origin/main' into 439-orientation-tracking-parameter-aspects

parents 03146aec f8063091
Loading
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -885,6 +885,9 @@ enum fea_names
#define MDCT_ST_PLC_FADEOUT_MIN_NOISE_NRG       0.001f
#define MDCT_ST_PLC_FADEOUT_MAX_CONC_FRAME      2 * FRAMES_PER_SEC
#define MDCT_ST_PLC_FADEOUT_TO_ZERO_LEN         20
#ifdef FIX_MDCT_ST_PLC_FADEOUT_DELAY
#define MDCT_ST_PLC_FADEOUT_DELAY_4_LSP_FADE    3
#endif

typedef enum {
    EQUAL_CORES,
+1 −0
Original line number Diff line number Diff line
@@ -214,6 +214,7 @@
#define FIX_DTX_428                                     /* FhG: fix for issue 428, crash with DTX and bitrate switching */

#define FIX_STEREO_474                                  /* FhG fix for issue 574, crash with SBA to stereo output at 512 kbps */
#define FIX_MDCT_ST_PLC_FADEOUT_DELAY

#define FIX_DIRAC_LS_SYNTHESIS_CONFIG_479               /* FhG: fix for issue 479, broken LS output with DirAC at high BRs */

+20 −1
Original line number Diff line number Diff line
@@ -551,20 +551,39 @@ void con_tcx(
    mvr2r( synth - M, buf, M );
    mvr2r( buf, mem_syn, M );


    if ( A_cng != NULL )
    {
#ifdef FIX_MDCT_ST_PLC_FADEOUT_DELAY
        float alpha_delayed;

        alpha_delayed = 1.0f;
        if ( st->nbLostCmpt > MDCT_ST_PLC_FADEOUT_DELAY_4_LSP_FADE )
        {
            alpha_delayed = Damping_fact( st->core_ext_mode, st->nbLostCmpt - MDCT_ST_PLC_FADEOUT_DELAY_4_LSP_FADE, st->last_good, st->stab_fac, &( st->lp_gainp ), ACELP_CORE );
        }

        if ( st->plcBackgroundNoiseUpdated && alpha_delayed != 1.0f )
#else
        if ( st->plcBackgroundNoiseUpdated && alpha != 1.0f )
#endif
        {
            float lsp_local[M], lsp_fade[M], alpha_inv;

#ifdef FIX_MDCT_ST_PLC_FADEOUT_DELAY
            alpha_inv = 1.0f - alpha_delayed;
#else
            alpha_inv = 1.0f - alpha;
#endif

            a2lsp_stab( A_local, lsp_local, lsp_local );

            for ( i = 0; i < M; i++ )
            {
#ifdef FIX_MDCT_ST_PLC_FADEOUT_DELAY
                lsp_fade[i] = alpha_delayed * lsp_local[i] + alpha_inv * st->lspold_cng[i];
#else
                lsp_fade[i] = alpha * lsp_local[i] + alpha_inv * st->lspold_cng[i];
#endif
            }

            lsp2a_stab( lsp_fade, A_local, M );