Commit fd53c8fc authored by Tapani Pihlajakuja's avatar Tapani Pihlajakuja
Browse files

Fixes issue 79 on MASA 2TC bitrate switching crash.

parent 95efcdf9
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -150,6 +150,7 @@
#define DIRAC_DRCT_GAIN_TUNING                          /* issue 64: tuning of DirAC energy-compensation gains */
#define MDFT_ROM_OPTIMIZE                               /*Optimise ROM tables for MDFT/iMDFT*/
#define LFE_NO_ENTROPY_CODING                           /* issue 65: changes to add no entropy coding in LFE */
#define FIX_79_MASA2TC_BITRATE_SWITCHING                /* Nokia: Fix issue 79 on MASA 2TC bitrate switching crash in decoder. */

/* ################## End DEVELOPMENT switches ######################### */
/* clang-format on */
+30 −0
Original line number Diff line number Diff line
@@ -891,6 +891,14 @@ ivas_error stereo_memory_dec(
                count_free( hCPE->prev_synth_chs[1] );
                hCPE->prev_synth_chs[1] = NULL;
            }
#ifdef FIX_79_MASA2TC_BITRATE_SWITCHING

            if ( hCPE->hStereoICBWE != NULL )
            {
                count_free( hCPE->hStereoICBWE );
                hCPE->hStereoICBWE = NULL;
            }
#endif
        }
        else /* nchan_out == 2 */
        {
@@ -909,6 +917,28 @@ ivas_error stereo_memory_dec(
                }
                set_zero( hCPE->prev_synth_chs[1], NS2SA( st->output_Fs, FRAME_SIZE_NS ) );
            }
#ifdef FIX_79_MASA2TC_BITRATE_SWITCHING

            if ( hCPE->hStereoICBWE == NULL && hCPE->element_mode == IVAS_CPE_DFT )
            {
                if ( ( hCPE->hStereoICBWE = (STEREO_ICBWE_DEC_HANDLE) count_malloc( sizeof( STEREO_ICBWE_DEC_DATA ) ) ) == NULL )
                {
                    return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Stereo ICBWE \n" ) );
                }

                stereo_icBWE_init_dec( hCPE->hStereoICBWE );
            }

            if ( hCPE->hStereoTCA == NULL && ( hCPE->element_mode == IVAS_CPE_DFT || hCPE->element_mode == IVAS_CPE_TD ) )
            {
                if ( ( hCPE->hStereoTCA = (STEREO_TCA_DEC_HANDLE) count_malloc( sizeof( STEREO_TCA_DEC_DATA ) ) ) == NULL )
                {
                    return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Stereo TCA\n" ) );
                }

                stereo_tca_init_dec( hCPE->hStereoTCA );
            }
#endif
        }
    }