Commit 7e8ca9f0 authored by vaclav's avatar vaclav
Browse files

fix within NONBE_FIX_1087_OOB_SBA_DTX_RS

parent ae549108
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -87,6 +87,9 @@ ivas_error ivas_mct_dec(
    STnsData tnsData[MCT_MAX_BLOCKS][CPE_CHANNELS][NB_DIV];
    Decoder_State **sts;
    float synth[CPE_CHANNELS][L_FRAME_PLUS];
#ifdef NONBE_FIX_1087_OOB_SBA_DTX_RS
    float *p_output_orig[2];
#endif
    float output_lfe_ch[L_FRAME48k];
    int32_t ivas_total_brate;
    ivas_error error;
@@ -149,12 +152,12 @@ ivas_error ivas_mct_dec(
    ivas_mct_side_bits( hMCT, st_ivas->hCPE, nCPE, st_ivas->hCPE[0]->hCoreCoder[0], st_ivas->bfi, st_ivas->hCPE[0]->hCoreCoder[0]->bit_stream, ivas_total_brate, nb_bits_metadata );

#ifdef NONBE_FIX_1087_OOB_SBA_DTX_RS
    /* in case of switching from an SID frame (with ACELP core) to MCT, buffer of 1200 samples is needed -> use synth[] as a temporary buffer */
    /* the pointers are moved back when calling ivas_mdct_core_reconstruct() */
    /* in case of switching from an SID frame (with ACELP core) to MCT, buffer of L_FRAME_PLUS samples is needed -> use synth[] as a temporary buffer */
    if ( st_ivas->hCPE[0]->hCoreCoder[0]->last_core == ACELP_CORE )
    {
        for ( n = 0; n < CPE_CHANNELS; n++ )
        {
            p_output_orig[n] = output[n];
            output[n] = synth[n];
        }
    }
@@ -244,6 +247,17 @@ ivas_error ivas_mct_dec(

        ivas_mdct_core_reconstruct( hCPE, x, synth, fUseTns[cpe_id], 1 );

#ifdef NONBE_FIX_1087_OOB_SBA_DTX_RS
        /* set pointers back */
        if ( cpe_id == 0 && st_ivas->hCPE[0]->hCoreCoder[0]->last_core == ACELP_CORE )
        {
            for ( n = 0; n < CPE_CHANNELS; n++ )
            {
                output[n] = p_output_orig[n];
            }
        }

#endif
        /*----------------------------------------------------------------*
         * CoreCoder Post-processing and updates
         *----------------------------------------------------------------*/