Commit b848ed39 authored by Jan Kiene's avatar Jan Kiene
Browse files

Accept FIX_FMSW_DEC

parent 186bdf69
Loading
Loading
Loading
Loading
+0 −184
Original line number Diff line number Diff line
@@ -164,16 +164,9 @@ static ivas_error decodeG192( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS
#else
static ivas_error decodeG192( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtfBinary, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, ObjectEditFileReader *objectEditFileReader, ISAR_SPLIT_REND_BITS_DATA *splitRendBits, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf );
#endif
#ifdef FIX_FMSW_DEC
static ivas_error decodeVoIP( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtf, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, ObjectEditFileReader *objectEditFileReader, ISAR_SPLIT_REND_BITS_DATA *splitRendBits, IVAS_DEC_HANDLE *phIvasDec, int16_t *pcmBuf );
#else
static ivas_error decodeVoIP( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtf, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, ObjectEditFileReader *objectEditFileReader, ISAR_SPLIT_REND_BITS_DATA *splitRendBits, IVAS_RENDER_CONFIG_DATA *renderConfig, IVAS_DEC_HANDLE *phIvasDec, int16_t *pcmBuf );
#endif
static ivas_error load_hrtf_from_file( IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtfBinary, IVAS_DEC_HANDLE hIvasDec, const IVAS_AUDIO_CONFIG OutputConfig, const int32_t output_Fs );
static void do_object_editing_fx( IVAS_EDITABLE_PARAMETERS *editableParameters, ObjectEditFileReader *objectEditFileReader );
#ifndef FIX_FMSW_DEC
static ivas_error restartDecoder( IVAS_DEC_HANDLE *phIvasDec, const IVAS_DEC_MODE decMode, DecArguments *arg, IVAS_RENDER_CONFIG_DATA *renderConfig, IVAS_CUSTOM_LS_DATA *hLsCustomData );
#endif


/*------------------------------------------------------------------------------------------*
@@ -673,11 +666,7 @@ int main(

    if ( arg.voipMode )
    {
#ifdef FIX_FMSW_DEC
        error = decodeVoIP( arg, hBsReader, &hHrtfBinary, headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, objectEditFileReader, &splitRendBits, &hIvasDec, pcmBuf );
#else
        error = decodeVoIP( arg, hBsReader, &hHrtfBinary, headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, objectEditFileReader, &splitRendBits, &renderConfig, &hIvasDec, pcmBuf );
#endif
    }
    else
    {
@@ -2316,34 +2305,11 @@ static ivas_error decodeG192(

                if ( restartNeeded )
                {
#ifdef FIX_FMSW_DEC
                    if ( ( error = IVAS_DEC_Restart( hIvasDec, IVAS_DEC_MODE_IVAS ) ) != IVAS_ERR_OK ) /* note: only switching within IVAS formats is supported in G.192 */
                    {
                        fprintf( stderr, "\nIVAS_DEC_Restart restart failed: %s\n", IVAS_DEC_GetErrorMessage( error ) );
                        goto cleanup;
                    }
#else
                    IVAS_DEC_BS_FORMAT tempFormat;
                    if ( ( error = IVAS_DEC_GetFormat( hIvasDec, &tempFormat ) ) != IVAS_ERR_OK )
                    {
                        fprintf( stderr, "\nError in IVAS_DEC_GetFormat, code: %d\n", error );
                        goto cleanup;
                    }
                    IVAS_DEC_MODE codecMode = ( tempFormat == IVAS_DEC_BS_MONO ) ? IVAS_DEC_MODE_EVS : IVAS_DEC_MODE_IVAS;
                    error = restartDecoder(
                        &hIvasDec,
                        codecMode,
                        &arg,
                        NULL, /* ToDo : Provide rendererConfig */
                        NULL  /* ToDo : Provide LS Custom Data */
                    );
                    if ( error != IVAS_ERR_OK )
                    {
                        fprintf( stderr, "\nFailed to restart decoder\n" );
                        goto cleanup;
                    }
                    *phIvasDec = hIvasDec; /* Update for main()' s free */
#endif
                }
#endif

@@ -2823,9 +2789,6 @@ static ivas_error decodeVoIP(
    Vector3PairFileReader *referenceVectorReader,
    ObjectEditFileReader *objectEditFileReader,
    ISAR_SPLIT_REND_BITS_DATA *splitRendBits,
#ifndef FIX_FMSW_DEC
    IVAS_RENDER_CONFIG_DATA *renderConfig,
#endif
    IVAS_DEC_HANDLE *phIvasDec,
    int16_t *pcmBuf )
{
@@ -3023,29 +2986,12 @@ static ivas_error decodeVoIP(
        /* restart decoder in case of format switching */
        if ( ivasRtp.restartNeeded )
        {
#ifdef FIX_FMSW_DEC
            arg.decMode = ( ivasRtp.codecId == IVAS_RTP_EVS ) ? IVAS_DEC_MODE_EVS : IVAS_DEC_MODE_IVAS;
            if ( ( error = IVAS_DEC_Restart( hIvasDec, arg.decMode ) ) != IVAS_ERR_OK ) /* note: switching between EVS and IVAS is supported in RTP */
            {
                fprintf( stderr, "\nIVAS_DEC_Restart restart failed: %s\n", IVAS_DEC_GetErrorMessage( error ) );
                goto cleanup;
            }
#else
            IVAS_DEC_MODE newDecModeInPacket = ( ivasRtp.codecId == IVAS_RTP_EVS ) ? IVAS_DEC_MODE_EVS : IVAS_DEC_MODE_IVAS;
            if ( ( error = restartDecoder(
                       &hIvasDec,
                       newDecModeInPacket,
                       &arg,
                       renderConfig,
                       NULL /* ToDo : Provide LS Custom Data */
                       ) ) != IVAS_ERR_OK )
            {
                fprintf( stderr, "\nFailed to restart decoder from %d to %d\n", arg.decMode, newDecModeInPacket );
                goto cleanup;
            }

            *phIvasDec = hIvasDec; /* Update for main()' s free */
#endif
            ivasRtp.restartNeeded = false;
            bitstreamReadDone = false;
            parametersAvailableForEditing = false;
@@ -3277,35 +3223,11 @@ static ivas_error decodeVoIP(

                if ( restartNeeded )
                {
#ifdef FIX_FMSW_DEC
                    if ( ( error = IVAS_DEC_Restart( hIvasDec, IVAS_DEC_MODE_IVAS ) ) != IVAS_ERR_OK ) /* note: only switching within IVAS formats is supported in non-RTP VoIP */
                    {
                        fprintf( stderr, "\nIVAS_DEC_Restart restart failed: %s\n", IVAS_DEC_GetErrorMessage( error ) );
                        goto cleanup;
                    }
#else
                    IVAS_DEC_BS_FORMAT tempBsFormat;
                    if ( ( error = IVAS_DEC_GetFormat( hIvasDec, &tempBsFormat ) ) != IVAS_ERR_OK )
                    {
                        fprintf( stderr, "\nError in IVAS_DEC_GetFormat, code: %d\n", error );
                        goto cleanup;
                    }

                    IVAS_DEC_MODE newDecModeInPacket = ( tempBsFormat == IVAS_DEC_BS_MONO ) ? IVAS_DEC_MODE_EVS : IVAS_DEC_MODE_IVAS;
                    if ( ( error = restartDecoder(
                               &hIvasDec,
                               newDecModeInPacket,
                               &arg,
                               NULL, /* ToDo : Provide rendererConfig */
                               NULL  /* ToDo : Provide LS Custom Data */
                               ) ) != IVAS_ERR_OK )
                    {
                        fprintf( stderr, "\nFailed to restart decoder\n" );
                        goto cleanup;
                    }

                    *phIvasDec = hIvasDec; /* Update for main()' s free */
#endif
                    bitstreamReadDone = false;
                    parametersAvailableForEditing = false;
                }
@@ -3998,110 +3920,4 @@ static ivas_error load_hrtf_from_file(
    return IVAS_ERR_OK;
}

#ifndef FIX_FMSW_DEC
/*---------------------------------------------------------------------*
 * restartDecoder()
 *
 * Restart decoder in case of IVAS format switching
 *---------------------------------------------------------------------*/

static ivas_error restartDecoder(
    IVAS_DEC_HANDLE *phIvasDec,
    const IVAS_DEC_MODE decMode,
    DecArguments *arg,
    IVAS_RENDER_CONFIG_DATA *renderConfig,
    IVAS_CUSTOM_LS_DATA *hLsCustomData )
{
    ivas_error error = IVAS_ERR_OK;
    IVAS_DEC_HANDLE hIvasDec;

    if ( phIvasDec == NULL )
    {
        return IVAS_ERR_UNEXPECTED_NULL_POINTER;
    }

    if ( NULL != *phIvasDec )
    {
        IVAS_DEC_Close( phIvasDec );
    }

    if ( ( error = IVAS_DEC_Open( phIvasDec, decMode ) ) != IVAS_ERR_OK )
    {
        fprintf( stderr, "Open failed: %s\n", IVAS_DEC_GetErrorMessage( error ) );
        goto cleanup;
    }

    arg->decMode = decMode;

    hIvasDec = *phIvasDec;

    uint16_t aeID = arg->aeSequence.count > 0 ? arg->aeSequence.pID[0] : IVAS_DEFAULT_AEID;

    IVAS_AUDIO_CONFIG outputConfig = ( decMode == IVAS_DEC_MODE_IVAS ) ? arg->outputConfig : IVAS_AUDIO_CONFIG_MONO;

    if ( ( error = IVAS_DEC_Configure( hIvasDec, arg->output_Fs, outputConfig, arg->render_num_subframes, arg->customLsOutputEnabled, arg->hrtfReaderEnabled,
                                       arg->enableHeadRotation, arg->enableExternalOrientation, arg->orientation_tracking, arg->renderConfigEnabled, arg->roomSize, arg->non_diegetic_pan_enabled,
                                       arg->non_diegetic_pan_gain_fx, arg->dpidEnabled, aeID, arg->objEditEnabled, arg->delayCompensationEnabled ) ) != IVAS_ERR_OK )
    {
        fprintf( stderr, "\nConfigure failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) );
        goto cleanup;
    }

    if ( arg->outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || arg->outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM )
    {
        if ( ( error = IVAS_DEC_EnableSplitRendering( hIvasDec ) ) != IVAS_ERR_OK )
        {
            fprintf( stderr, "\nSplit rendering configure failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) );
            goto cleanup;
        }
    }

    if ( ( error = IVAS_DEC_GetRenderNumSubfr( hIvasDec, &arg->render_num_subframes ) ) != IVAS_ERR_OK )
    {
        fprintf( stderr, "\nIVAS_DEC_GetRenderNumSubfr failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) );
        goto cleanup;
    }

    if ( arg->voipMode )
    {
        if ( ( error = IVAS_DEC_EnableVoIP( hIvasDec, 60, arg->inputFormat ) ) != IVAS_ERR_OK )
        {
            fprintf( stderr, "\nCould not enable VOIP: %s\n\n", IVAS_DEC_GetErrorMessage( error ) );
            goto cleanup;
        }
    }

    /* ISAR frame size is set from command line, not renderer config file.
     * This will be ignored if output format is not split rendering. */
    if ( renderConfig != NULL )
    {
        renderConfig->split_rend_config.isar_frame_size_ms = (int16_t) arg->render_num_subframes * 5;
    }

    if ( arg->renderConfigEnabled && renderConfig != NULL )
    {
        if ( ( error = IVAS_DEC_FeedRenderConfig( hIvasDec, *renderConfig ) ) != IVAS_ERR_OK )
        {
            fprintf( stderr, "\nIVAS_DEC_FeedRenderConfig failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) );
            goto cleanup;
        }
    }

    if ( arg->customLsOutputEnabled && hLsCustomData != NULL )
    {
        if ( ( error = IVAS_DEC_FeedCustomLsData( hIvasDec, *hLsCustomData ) ) != IVAS_ERR_OK )
        {
            fprintf( stderr, "\nIVAS_DEC_FeedCustomLsData failed: %s\n", IVAS_DEC_GetErrorMessage( error ) );
            goto cleanup;
        }
    }

    return IVAS_ERR_OK;

cleanup:
    IVAS_DEC_Close( phIvasDec );

    return error;
}
#endif
#undef WMC_TOOL_SKIP
+0 −15
Original line number Diff line number Diff line
@@ -363,7 +363,6 @@ int main(
        }
    }

#ifdef FIX_FMSW_DEC
    /*------------------------------------------------------------------------------------------*
     * Open remote requests file for rtp packing (E-bytes)
     *------------------------------------------------------------------------------------------*/
@@ -383,7 +382,6 @@ int main(
            goto cleanup;
        }
    }
#endif

    /*------------------------------------------------------------------------------------------*
     * Handle Channel-aware mode
@@ -678,19 +676,6 @@ int main(
        }
    }

#ifndef FIX_FMSW_DEC
    /*------------------------------------------------------------------------------------------*
     * Open remote requests file for rtp packing (E-bytes)
     *------------------------------------------------------------------------------------------*/
    if ( arg.requestsFileName != NULL )
    {
        if ( ( error = RequestsFileReader_open( arg.requestsFileName, &requestsFileReader ) ) != IVAS_ERR_OK )
        {
            fprintf( stderr, "\nError: Can't open requests file %s \n\n", arg.requestsFileName );
            goto cleanup;
        }
    }
#endif
    /*------------------------------------------------------------------------------------------*
     * Run the encoder
     *------------------------------------------------------------------------------------------*/
+0 −9
Original line number Diff line number Diff line
@@ -2062,11 +2062,7 @@ void destroy_core_dec_fx(
);

void ivas_destroy_dec_fx(
#ifdef FIX_FMSW_DEC
    Decoder_Struct **st_ivas                                    /* i/o: IVAS decoder structure                      */
#else
    Decoder_Struct *st_ivas                                     /* i/o: IVAS decoder structure                      */
#endif
);

ivas_error ivas_ism_dec_config_fx(
@@ -3731,11 +3727,6 @@ Word16 getNumChanSynthesis(
    Decoder_Struct *st_ivas                                     /* i  : IVAS decoder structure                      */
);

#ifndef FIX_FMSW_DEC
void ivas_destroy_dec_fx(
    Decoder_Struct *st_ivas                                     /* i/o: IVAS decoder structure                      */
);
#endif
ivas_error ivas_core_dec_fx(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                      */
    SCE_DEC_HANDLE hSCE,                                        /* i/o: SCE decoder structure                       */
+0 −2
Original line number Diff line number Diff line
@@ -100,8 +100,6 @@

#define FIX_1576_LCLD_CRASH_DIFFERENT_CODEC_ISAR_FRAME_SIZE  /* Dolby: float issue 1576: fix for crash in LCLD mode when codec frame size is less than isar frame size */
#define NONBE_FIX_ISSUE_2206_MDCT_STEREO_FIX_2549       /* FhG: Correct scale inconsistency of old_inp_16k_fx buffer scale. */
#define FIX_FMSW_DEC                                    /* float issue 1542: fix JBM issue in format switching */
#define FIX_FMSW_DEC_2                                  /* float issue 1575: fix crash for format switching when bitsream starts with EVS */
#define FIX_BASOP_2562_HQ_PREECHO_SAT                   /* Eri/Orange: Basop issue 2562: Add saturation to L_add in preecho calculations */
#define FIX_BASOP_2561_STEREO_DFT_ENC_COMPUTE_ITD       /* BASOP issue 2561: fix diffs in stereo_dft_enc_compute_itd() between float and BASOP */
#define FIX_BASOP_2517_CLICK_IN_OMASA_LTV               /* FhG: BASOP #2517: preserve precision by removing one-bit headroom from Q_min and allowing saturation during buffer scaling */
+0 −51
Original line number Diff line number Diff line
@@ -1572,12 +1572,8 @@ ivas_error ivas_init_decoder_front(
     * Allocate and initialize Custom loudspeaker layout handle
     *--------------------------------------------------------------------*/

#ifdef FIX_FMSW_DEC
    test();
    IF( st_ivas->hDecoderConfig->Opt_LsCustom && st_ivas->hLsSetupCustom == NULL )
#else
    IF( st_ivas->hDecoderConfig->Opt_LsCustom )
#endif
    {
        IF( EQ_32( ( error = ivas_ls_custom_open_fx( &( st_ivas->hLsSetupCustom ) ) ), IVAS_ERR_OK ) )
        {
@@ -1594,12 +1590,8 @@ ivas_error ivas_init_decoder_front(
     * Allocate and initialize Head-Tracking handle
     *--------------------------------------------------------------------*/

#ifdef FIX_FMSW_DEC
    test();
    IF( st_ivas->hDecoderConfig->Opt_Headrotation && st_ivas->hHeadTrackData == NULL )
#else
    IF( st_ivas->hDecoderConfig->Opt_Headrotation )
#endif
    {
        IF( NE_32( ( error = ivas_headTrack_open_fx( &( st_ivas->hHeadTrackData ) ) ), IVAS_ERR_OK ) )
        {
@@ -1616,12 +1608,8 @@ ivas_error ivas_init_decoder_front(
     * Allocate and initialize external orientation handle
     *--------------------------------------------------------------------*/

#ifdef FIX_FMSW_DEC
    test();
    IF( st_ivas->hDecoderConfig->Opt_ExternalOrientation && st_ivas->hExtOrientationData == NULL )
#else
    IF( st_ivas->hDecoderConfig->Opt_ExternalOrientation )
#endif
    {
        IF( NE_32( ( error = ivas_external_orientation_open_fx( &( st_ivas->hExtOrientationData ), st_ivas->hDecoderConfig->render_num_subframes ) ), IVAS_ERR_OK ) )
        {
@@ -1634,12 +1622,8 @@ ivas_error ivas_init_decoder_front(
     *--------------------------------------------------------------------*/

    test();
#ifdef FIX_FMSW_DEC
    test();
    IF( ( st_ivas->hDecoderConfig->Opt_Headrotation || st_ivas->hDecoderConfig->Opt_ExternalOrientation ) && st_ivas->hCombinedOrientationData == NULL )
#else
    IF( st_ivas->hDecoderConfig->Opt_Headrotation || st_ivas->hDecoderConfig->Opt_ExternalOrientation )
#endif
    {
        IF( NE_32( ( error = ivas_combined_orientation_open_fx( &( st_ivas->hCombinedOrientationData ), st_ivas->hDecoderConfig->output_Fs, st_ivas->hDecoderConfig->render_num_subframes ) ), IVAS_ERR_OK ) )
        {
@@ -1657,15 +1641,10 @@ ivas_error ivas_init_decoder_front(
    test();
    test();
    test();
#ifdef FIX_FMSW_DEC
    test();
    IF( ( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ||
          ( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) && st_ivas->hDecoderConfig->Opt_non_diegetic_pan ) ) &&
        st_ivas->hRenderConfig == NULL )
#else
    IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ||
        ( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) && st_ivas->hDecoderConfig->Opt_non_diegetic_pan ) )
#endif
    {
        IF( NE_32( ( error = ivas_render_config_open_fx( &( st_ivas->hRenderConfig ) ) ), IVAS_ERR_OK ) )
        {
@@ -3364,14 +3343,10 @@ void ivas_initialize_handles_dec(
        st_ivas->hCPE[i] = NULL;
    }

#ifdef FIX_FMSW_DEC
    IF( !st_ivas->restartNeeded )
    {
#endif
        st_ivas->bit_stream = NULL;
#ifdef FIX_FMSW_DEC
    }
#endif
    st_ivas->hLimiter = NULL;

    /* ISM metadata handles */
@@ -3415,10 +3390,8 @@ void ivas_initialize_handles_dec(
    st_ivas->hMasaIsmData = NULL;
    st_ivas->hSbaIsmData = NULL;

#ifdef FIX_FMSW_DEC
    IF( !st_ivas->restartNeeded )
    {
#endif
        st_ivas->hHeadTrackData = NULL;
        st_ivas->hHrtfTD = NULL;
        st_ivas->hLsSetupCustom = NULL;
@@ -3428,9 +3401,7 @@ void ivas_initialize_handles_dec(
        st_ivas->acousticEnvironmentsCount = 0;
        move16();
        st_ivas->pAcousticEnvironments = NULL;
#ifdef FIX_FMSW_DEC
    }
#endif

    st_ivas->hSplitBinRend = NULL;
    FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i )
@@ -3459,17 +3430,11 @@ void ivas_initialize_handles_dec(
 *-------------------------------------------------------------------------*/

void ivas_destroy_dec_fx(
#ifdef FIX_FMSW_DEC
    Decoder_Struct **st_ivas_out /* i/o: IVAS decoder handle      */
#else
    Decoder_Struct *st_ivas /* i/o: IVAS decoder handle      */
#endif
)
{
    Word16 i;
#ifdef FIX_FMSW_DEC
    Decoder_Struct *st_ivas = *st_ivas_out;
#endif

    /* CLDFB handles */
    FOR( i = 0; i < MAX_INTERN_CHANNELS; i++ )
@@ -3599,18 +3564,14 @@ void ivas_destroy_dec_fx(
    ivas_ls_setup_conversion_close_fx( &st_ivas->hLsSetUpConversion );

    /* Custom LS configuration handle */
#ifdef FIX_FMSW_DEC
    IF( !st_ivas->restartNeeded )
    {
#endif
        IF( st_ivas->hLsSetupCustom != NULL )
        {
            free( st_ivas->hLsSetupCustom );
            st_ivas->hLsSetupCustom = NULL;
        }
#ifdef FIX_FMSW_DEC
    }
#endif

    /* Mono downmix structure */
    ivas_mono_dmx_renderer_close( &st_ivas->hMonoDmxRenderer );
@@ -3646,13 +3607,11 @@ void ivas_destroy_dec_fx(
    /* HRTF statistics */
    ivas_HRTF_statistics_binary_close_fx( &st_ivas->hHrtfStatistics );

#ifdef FIX_FMSW_DEC
    /* Limiter struct */
    ivas_limiter_close_fx( &( st_ivas->hLimiter ) );

    IF( !st_ivas->restartNeeded )
    {
#endif
        /* Config. Renderer */
        ivas_render_config_close_fx( &( st_ivas->hRenderConfig ) );

@@ -3663,17 +3622,12 @@ void ivas_destroy_dec_fx(
            st_ivas->pAcousticEnvironments = NULL;
        }

#ifndef FIX_FMSW_DEC
        /* Limiter struct */
        ivas_limiter_close_fx( &( st_ivas->hLimiter ) );
#endif
        /* Decoder configuration structure */
        IF( st_ivas->hDecoderConfig != NULL )
        {
            free( st_ivas->hDecoderConfig );
            st_ivas->hDecoderConfig = NULL;
        }
#ifdef FIX_FMSW_DEC
    }
    ELSE
    {
@@ -3687,7 +3641,6 @@ void ivas_destroy_dec_fx(
        move16();
        move16();
    }
#endif

    /* TC buffer structure */
    ivas_dec_tc_buffer_close_fx( &st_ivas->hTcBuffer );
@@ -3705,15 +3658,11 @@ void ivas_destroy_dec_fx(
    }

    /* main IVAS handle */
#ifdef FIX_FMSW_DEC
    if ( !st_ivas->restartNeeded )
    {
        free( *st_ivas_out );
        *st_ivas_out = NULL;
    }
#else
    free( st_ivas );
#endif

    return;
}
Loading