Commit f67fd052 authored by janssonfr's avatar janssonfr
Browse files

Merge branch '395-unified-stereo-dtx-with-limited-bandwidth' into 'main'

Add fix for issue 395

See merge request !535
parents ad02a6b1 9d4d5937
Loading
Loading
Loading
Loading
Loading

lib_com/options.h

100755 → 100644
+2 −1
Original line number Diff line number Diff line
@@ -168,6 +168,7 @@
#define FIX_506                                         /* FhG: Compiler warnings */
#define FIX_511_OPTIMIZE_PARAMBIN_GAIN_FETCH            /* Nokia: Issue 511, significant optimization of parametric binauralizer gain fetching. */
#define FIX_531_BWS_ISM_BFI                             /* VA: issue 531: fix MemorySanitizer: use-of-uninitialized-value in ISM2 rate switching with frame errors */
#define FIX_395_CNG_BW                                  /* Eri: Issue 395 - CNG bandwidth issue for unified stereo */

#define EXTERNAL_ORIENTATIONS                           /* Nokia: Contribution 41: (external) orientation information handling */

+2 −1
Original line number Diff line number Diff line
@@ -574,8 +574,9 @@ ivas_error ivas_cpe_enc(
#ifdef DEBUG_MODE_DFT
                hCPE->hStereoDft->res_cod_bits = 0;
#endif

#ifndef FIX_395_CNG_BW
                stereo_dft_enc_update( hCPE->hStereoDft, min( SWB, sts[0]->max_bwidth ) );
#endif
            }
            else
            {
+19 −0
Original line number Diff line number Diff line
@@ -624,6 +624,7 @@ void stereo_dft_enc_update(

    /* update band limits in case of rate switching assuming max_bwidth as BWD output not yet know here */
    NFFT_inner = STEREO_DFT_N_MAX_ENC * inner_frame_tbl[max_bwidth] / L_FRAME48k;

    hStereoDft->nbands = stereo_dft_band_config( hStereoDft->band_limits, hStereoDft->hConfig->band_res, NFFT_inner, ENC );
    hStereoDft->nbands_dmx = stereo_dft_band_config( hStereoDft->band_limits_dmx, 1, NFFT_inner, ENC );

@@ -2161,6 +2162,23 @@ void stereo_dft_enc_write_BS(
    k_offset = STEREO_DFT_OFFSET;

    nbands_full = hStereoDft->nbands;

#ifdef FIX_395_CNG_BW
    if ( core_brate == FRAME_NO_DATA || core_brate == SID_2k40 )
    {
        NFFT_inner = min( STEREO_DFT_N_32k_ENC, STEREO_DFT_N_MAX_ENC * inner_frame_tbl[hCPE->hCoreCoder[0]->bwidth] / L_FRAME48k );
        hStereoDft->band_res[k_offset] = hStereoDft->hConfig->band_res;
        hStereoDft->res_pred_mode[k_offset] = 0;
        hStereoDft->res_cod_mode[k_offset] = 0;
    }
    else
    {
        NFFT_inner = STEREO_DFT_N_MAX_ENC * inner_frame_tbl[hCPE->hCoreCoder[0]->bwidth] / L_FRAME48k;
    }

    /* set number of bands according to bandwidth after BWD */
    hStereoDft->nbands = stereo_dft_band_config( hStereoDft->band_limits, hStereoDft->band_res[k_offset], NFFT_inner, ENC );
#else
    NFFT_inner = STEREO_DFT_N_MAX_ENC * inner_frame_tbl[hCPE->hCoreCoder[0]->bwidth] / L_FRAME48k;

    if ( !( core_brate == SID_2k40 || core_brate == FRAME_NO_DATA ) )
@@ -2168,6 +2186,7 @@ void stereo_dft_enc_write_BS(
        /* set number of bands according to bandwidth after BWD */
        hStereoDft->nbands = stereo_dft_band_config( hStereoDft->band_limits, hStereoDft->band_res[k_offset], NFFT_inner, ENC );
    }
#endif

    if ( core_brate == FRAME_NO_DATA )
    {