Commit 8d829881 authored by vaclav's avatar vaclav
Browse files

issue 898: fix decoder crash in ISM bitrate switching with DTX and binaural...

issue 898: fix decoder crash in ISM bitrate switching with DTX and binaural output; under NONBE_FIX_898_ISM_BRATE_CRASH
parent 332bc972
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -165,6 +165,7 @@
#define NONBE_FIX_871_ACELP_CRASH_IN_OSBA                     /* FhG: isse 871: crash in ACELP core encoder with OSBA */
#define NONBE_FIX_225_MASA_EXT_REND                           /* Nokia: Resolve #225: Complete MASA external renderer implementation */
#define NONBE_FIX_897_USAN_WITH_MASA_RENDERING                /* Nokia: issue #897: USAN null pointer in MASA external renderer to Ambisonics */
#define NONBE_FIX_898_ISM_BRATE_CRASH                         /* VA: issue 898: fix decoder crash in ISM bitrate switching with DTX and binaural output */

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

+23 −0
Original line number Diff line number Diff line
@@ -636,8 +636,16 @@ ivas_error ivas_dec_setup(
            }
        }

#ifdef NONBE_FIX_898_ISM_BRATE_CRASH
        if ( st_ivas->ivas_format == ISM_FORMAT )
#else
        if ( st_ivas->ini_frame == 0 && st_ivas->ivas_format == ISM_FORMAT )
#endif
        {
#ifdef NONBE_FIX_898_ISM_BRATE_CRASH
            ISM_MODE last_ism_mode = st_ivas->ism_mode;
#endif

            /* read the number of objects */
            st_ivas->nchan_transport = 1;
            nchan_ism = 1;
@@ -660,10 +668,25 @@ ivas_error ivas_dec_setup(
                st_ivas->ism_mode = (ISM_MODE) ( idx + 1 );
            }

#ifdef NONBE_FIX_898_ISM_BRATE_CRASH
            if ( st_ivas->ini_frame == 0 )
            {
                last_ism_mode = st_ivas->ism_mode;
            }
#endif

#ifdef SPLIT_REND_WITH_HEAD_ROT
#ifdef NONBE_FIX_898_ISM_BRATE_CRASH
            if ( ( error = ivas_ism_dec_config( st_ivas, last_ism_mode, nSamplesRendered, pcm_resolution, data ) ) != IVAS_ERR_OK )
#else
            if ( ( error = ivas_ism_dec_config( st_ivas, st_ivas->ism_mode, nSamplesRendered, pcm_resolution, data ) ) != IVAS_ERR_OK )
#endif
#else
#ifdef NONBE_FIX_898_ISM_BRATE_CRASH
            if ( ( error = ivas_ism_dec_config( st_ivas, last_ism_mode, nSamplesRendered, data ) ) != IVAS_ERR_OK )
#else
            if ( ( error = ivas_ism_dec_config( st_ivas, st_ivas->ism_mode, nSamplesRendered, data ) ) != IVAS_ERR_OK )
#endif
#endif
            {
                return error;
+4 −0
Original line number Diff line number Diff line
@@ -86,6 +86,9 @@ ivas_error ivas_ism_dtx_dec(

        last_ism_mode = st_ivas->ism_mode;

#ifdef NONBE_FIX_898_ISM_BRATE_CRASH
        /* ism_mode was read in ivas_dec_setup() as well as reconfiguration ivas_ism_dec_config() */
#else
        /* read ism_mode */
        if ( nchan_ism > 2 )
        {
@@ -104,6 +107,7 @@ ivas_error ivas_ism_dtx_dec(
        {
            return error;
        }
#endif
    }
    else
    {