From 55990f2cfa68316faf146aed4ee851261f062673 Mon Sep 17 00:00:00 2001 From: vaclav Date: Mon, 24 Jun 2024 09:59:26 +0200 Subject: [PATCH] issue 1117: call ISAR malloc() only at the initialization; under FIX_1117_ISAR_MALLOC --- lib_com/options.h | 1 + lib_dec/lib_dec.c | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index 8e314ba4f1..4eb731960b 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -164,6 +164,7 @@ #define FIX_1099_JBM_MD_HANDLE_ALLOC /* VA: issue 1099: Limit the allocation of `hJbmMetadata` handle to MASA and OMASA only */ #define FIX_1111_TDM_LSP_BUFFER /* VA: issue 1111: remove unused buffer `tdm_lspQ_PCh[]' */ #define FIX_1101_CLEANING_JBM_CALL /* VA: issue 1101: remove obsolete call of ivas_jbm_dec_tc_buffer_open() */ +#define FIX_1117_ISAR_MALLOC /* VA: issue 1117: call ISAR malloc() only at the initialization. */ /* #################### End BE switches ################################## */ diff --git a/lib_dec/lib_dec.c b/lib_dec/lib_dec.c index 66032833c1..b51e5423e6 100644 --- a/lib_dec/lib_dec.c +++ b/lib_dec/lib_dec.c @@ -268,11 +268,13 @@ static ivas_error isar_set_split_rend_setup( splitRendBits->isar_frame_size_ms = 0; splitRendBits->lc3plus_highres = 0; +#ifndef FIX_1117_ISAR_MALLOC if ( ( hSplitBinRend->hMultiBinCldfbData = (ISAR_DEC_SPLIT_REND_MULTI_BIN_CLDFB_DATA_HANDLE) malloc( sizeof( ISAR_DEC_SPLIT_REND_MULTI_BIN_CLDFB_DATA ) ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for split rendering structure" ); } +#endif ISAR_PRE_REND_GetMultiBinPoseData( hSplitBinConfig, &hSplitBinRend->splitrend.multiBinPoseData, ( hCombinedOrientationData != NULL ) ? hCombinedOrientationData->sr_pose_pred_axis : DEFAULT_AXIS ); if ( hCombinedOrientationData != NULL ) @@ -1236,8 +1238,10 @@ ivas_error IVAS_DEC_GetSplitBinauralBitstream( ivas_syn_output( pOutput, numSamplesPerChannelToDecode, st_ivas->hDecoderConfig->nchan_out, (int16_t *) pcmBuf_out ); } +#ifndef FIX_1117_ISAR_MALLOC free( st_ivas->hSplitBinRend->hMultiBinCldfbData ); +#endif return error; } @@ -3918,6 +3922,11 @@ static void ivas_destroy_handle_isar( { if ( *hSplitBinRend != NULL ) { +#ifdef FIX_1117_ISAR_MALLOC + free( ( *hSplitBinRend )->hMultiBinCldfbData ); + ( *hSplitBinRend )->hMultiBinCldfbData = NULL; + +#endif ISAR_PRE_REND_close( &( *hSplitBinRend )->splitrend, NULL ); if ( ( *hSplitBinRend )->hCldfbDataOut != NULL ) @@ -4113,6 +4122,14 @@ static ivas_error ivas_dec_init_split_rend( cldfb_in_flag = 1; } +#ifdef FIX_1117_ISAR_MALLOC + /* note: this is intra-frame heap memory */ + if ( ( st_ivas->hSplitBinRend->hMultiBinCldfbData = (ISAR_DEC_SPLIT_REND_MULTI_BIN_CLDFB_DATA_HANDLE) malloc( sizeof( ISAR_DEC_SPLIT_REND_MULTI_BIN_CLDFB_DATA ) ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for split rendering structure" ); + } + +#endif ISAR_PRE_REND_GetMultiBinPoseData( &st_ivas->hRenderConfig->split_rend_config, &st_ivas->hSplitBinRend->splitrend.multiBinPoseData, ( st_ivas->hHeadTrackData != NULL ) ? st_ivas->hHeadTrackData->sr_pose_pred_axis : DEFAULT_AXIS ); if ( cldfb_in_flag == 1 && ( st_ivas->hSplitBinRend->splitrend.multiBinPoseData.poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE ) ) -- GitLab