Commit df9f5c42 authored by vaillancour's avatar vaillancour
Browse files

Merge branch...

Merge branch 'basop-2432-spikes-in-omasa-ltv-at-160-kbps-with-16-khz-output-happens-also-with-ism4-coding' into 'main'

[non-BE] fix spikes in ISM decoding at 16kHz output sampling rate

See merge request !2523
parents 7a2247e2 9b34e74d
Loading
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -170,6 +170,8 @@
/* #################### Start NON-BE switches ############################ */
/* any switch which is non-be wrt. TS 26.258 V3.0 */

#define FIX_2432_ISM_SPIKES_16KHZ                       /* VA: basop issue 2432: fix spikes in ISM decoding at 16kHz output sampling rate */

/* ##################### End NON-BE switches ########################### */

/* ################## End MAINTENANCE switches ######################### */
+16 −0
Original line number Diff line number Diff line
@@ -76,7 +76,11 @@ ivas_error ivas_core_dec(
    float tmp_buffer[L_FRAME48k];
    int16_t tmps, incr;
    float *bwe_exc_extended[CPE_CHANNELS] = { NULL, NULL };
#ifdef FIX_2432_ISM_SPIKES_16KHZ
    int16_t flag_bwe_bws, flag_swb_tbe;
#else
    int16_t flag_bwe_bws;
#endif
    float voice_factors[CPE_CHANNELS][NB_SUBFR16k];
    int16_t core_switching_flag[CPE_CHANNELS];
    float old_syn_12k8_16k[CPE_CHANNELS][L_FRAME16k];
@@ -513,9 +517,16 @@ ivas_error ivas_core_dec(
         * SWB(FB) BWE decoding
         *---------------------------------------------------------------------*/

#ifdef FIX_2432_ISM_SPIKES_16KHZ
        flag_swb_tbe = ( st->extl == SWB_TBE || st->extl == FB_TBE || ( st->coder_type != AUDIO && st->coder_type != INACTIVE && st->core_brate >= SID_2k40 && st->core == ACELP_CORE && !st->con_tcx && output_Fs >= 32000 && st->bwidth > NB && st->bws_cnt > 0 ) );
#endif
        flag_bwe_bws = ( output_Fs >= 32000 && st->core == ACELP_CORE && st->bwidth > NB && st->bws_cnt > 0 && st->bfi == 0 );

#ifdef FIX_2432_ISM_SPIKES_16KHZ
        if ( flag_swb_tbe )
#else
        if ( st->extl == SWB_TBE || st->extl == FB_TBE || ( st->coder_type != AUDIO && st->coder_type != INACTIVE && st->core_brate >= SID_2k40 && st->core == ACELP_CORE && !st->con_tcx && output_Fs >= 32000 && st->bwidth > NB && st->bws_cnt > 0 ) )
#endif
        {
            /* SWB TBE decoder */
            swb_tbe_dec( st, hStereoICBWE, bwe_exc_extended[n], voice_factors[n], old_syn_12k8_16k[n], tmp_buffer /*fb_exc*/, hb_synth[n], pitch_buf[n] );
@@ -532,7 +543,12 @@ ivas_error ivas_core_dec(
            swb_bwe_dec( st, output[n], synth[n], hb_synth[n], use_cldfb_for_dft, output_frame );
        }

#ifdef FIX_2432_ISM_SPIKES_16KHZ
        /* set hb_synth[n] buffer to zeros in case of no BWE decoding */
        if ( ( st->core == ACELP_CORE && ( st->extl == -1 || st->extl == SWB_CNG || ( st->extl == WB_BWE && st->bws_cnt > 0 && flag_swb_tbe == 0 ) ) ) && flag_bwe_bws == 0 )
#else
        if ( ( st->core == ACELP_CORE && ( st->extl == -1 || st->extl == SWB_CNG ) ) && flag_bwe_bws == 0 )
#endif
        {
            set_f( hb_synth[n], 0.0f, L_FRAME48k );
        }