Loading lib_com/ivas_cnst.h +1 −0 Original line number Diff line number Diff line Loading @@ -154,6 +154,7 @@ typedef enum #else RENDERER_OSBA_LS #endif } RENDERER_TYPE; #define MAX_FREQUENCY_BANDS 64 Loading lib_com/ivas_prot_fx.h +30 −20 Original line number Diff line number Diff line Loading @@ -165,19 +165,23 @@ void ivas_omasa_combine_separate_ism_with_masa_fx( Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ Word32 *output[], /* o : output synthesis signal */ Word16 *output_q, /* i/o: output Q value */ const int16_t nchan_ism, /* i : number of ISMs */ const int16_t output_frame /* i : output frame length per channel */ const Word16 nchan_ism, /* i : number of ISMs */ const Word16 output_frame /* i : output frame length per channel */ ); #ifdef FIX_1161_REDUCE_OMASA_HEAP ivas_error ivas_omasa_objects_delay_open_fx( #else ivas_error ivas_omasa_render_objects_from_mix_open_fx( #endif Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ ); void ivas_omasa_render_objects_from_mix_fx( Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ Word32 *output[], /* o : output synthesis signal */ const int16_t nchan_ism, /* i : number of ISMs */ const int16_t output_frame, /* i : output frame length per channel */ const Word16 nchan_ism, /* i : number of ISMs */ const Word16 output_frame, /* i : output frame length per channel */ Word16 *output_q /* i/o: output Q value */ ); Loading @@ -191,6 +195,7 @@ ivas_error ivas_omasa_ism_metadata_dec_fx( const Word16 dirac_bs_md_write_idx, /* i : DirAC bitstream write index */ Word16 nb_bits_metadata[] /* o : number of ISM metadata bits */ ); ivas_error ivas_omasa_dec_config_fx( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ UWord16 *nSamplesRendered, /* o : number of samples flushed from the previous frame (JBM) */ Loading Loading @@ -3162,8 +3167,8 @@ void stereo_tcx_core_enc( Word16 pitch_buf_fx[NB_SUBFR16k], /* o : pitch for each subframe, Q6 */ const Word16 last_element_mode, /* i : last element mode, Q0 */ const Word16 vad_hover_flag, /* i : VAD hangover flag, Q0 */ Word16 Q_new ); Word16 Q_new ); Word16 transient_analysis_ivas_fx( TRAN_DET_HANDLE hTranDet, /* i : handle transient detection */ Loading Loading @@ -3289,20 +3294,24 @@ void ivas_fb_mixer_get_windowed_fr_fx( const Word16 length, /* i : number of new samples in time slot */ const Word16 mdft_len, /* i : MDFT frame length */ const Word16 nchan_fb_in, /* i : number of analysis channels */ Word16 gb ); Word16 gb ); void ivas_omasa_set_config_fx( OMASA_ENC_HANDLE hOMasa, /* i/o: OMASA encoder handle */ MASA_ENCODER_HANDLE hMasa, /* i : MASA encoder handle */ const Word32 input_Fs, /* i : Input sample rate */ const ISM_MODE ism_mode /* i : ISM mode */ ); Word16 ivas_omasa_ener_brate_fx( const Word16 nchan_ism, /* i : number of ISMs */ const Word32 ivas_total_brate, /* i : IVAS total bitrate */ Word32 *data_f[], /* i : Input / transport audio signals */ const Word16 input_frame, /* i : Input frame size */ Word16 data_e /*i:exponent for data_f */ const Word16 data_e /* i : exponent for data_f */ ); void computeDiffuseness_mdft_fx( Word32 **buffer_intensity[DIRAC_NUM_DIMS], const Word32 *buffer_energy, Loading Loading @@ -3341,6 +3350,7 @@ UWord8 ivas_masa_surrcoh_signicant_fx( ivas_error ivas_mcmasa_enc_open_fx( Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */ ); void ivas_mcmasa_enc_close_fx( MCMASA_ENC_HANDLE *hMcMasa, /* i/o: encoder McMASA handle */ const Word32 input_Fs /* i : input sampling rate */ Loading lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -87,6 +87,7 @@ #define FIX_1372_ISAR_POST_REND #define NONBE_FIX_984_OMASA_EXT_OUTPUT /* Nokia: issue #984: complete the OMASA EXT output implementation */ #define FIX_1161_REDUCE_OMASA_HEAP /* VA: reduction of OMASA heap memory */ #define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ #define FIX_WARNING_RENDER_CONFIG /* Orange: fix warning on windows build */ #define FIX_1052_EXT_OUTPUT /* VA: issue 1052: define EXT decoder output configuration for stereo and MC formats */ Loading lib_dec/ivas_init_dec_fx.c +45 −28 Original line number Diff line number Diff line Loading @@ -1359,7 +1359,6 @@ ivas_error ivas_init_decoder_fx( } } /*--------------------------------------------------------------------* * Allocate and initialize HRTF Statistics handle *--------------------------------------------------------------------*/ Loading Loading @@ -1532,7 +1531,6 @@ ivas_error ivas_init_decoder_fx( } } test(); test(); #ifdef NONBE_FIX_1052_SBA_EXT_FIX Loading Loading @@ -1727,7 +1725,6 @@ ivas_error ivas_init_decoder_fx( } } test(); test(); IF( NE_32( hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_FOA ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_MONO ) ) Loading Loading @@ -1865,6 +1862,7 @@ ivas_error ivas_init_decoder_fx( { k = add( k, 1 ); } test(); IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) ) { Loading Loading @@ -2198,7 +2196,6 @@ ivas_error ivas_init_decoder_fx( } } /*-----------------------------------------------------------------* * Allocate and initialize HP20 filter memories *-----------------------------------------------------------------*/ Loading Loading @@ -2350,10 +2347,8 @@ ivas_error ivas_init_decoder_fx( IF( ( EQ_32( st_ivas->ivas_format, MC_FORMAT ) ) && ( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) ) ) { granularity = NS2SA_FX2( output_Fs, CLDFB_SLOT_NS ); n_channels_transport_jbm = ivas_jbm_dec_get_num_tc_channels_fx( st_ivas ); IF( NE_32( ( error = ivas_jbm_dec_tc_buffer_open_fx( st_ivas, TC_BUFFER_MODE_RENDERER, n_channels_transport_jbm, MC_PARAMUPMIX_MAX_INPUT_CHANS, MC_PARAMUPMIX_MAX_INPUT_CHANS, granularity ) ), IVAS_ERR_OK ) ) { return error; Loading @@ -2380,10 +2375,12 @@ ivas_error ivas_init_decoder_fx( /* Allocate TD renderer for the objects in DISC mode */ Word16 SrcInd[MAX_NUM_TDREND_CHANNELS]; Word16 num_src; IF( NE_32( ( error = ivas_td_binaural_open_fx( st_ivas, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) { return error; } Word16 nchan_rend = num_src; move16(); test(); Loading @@ -2403,6 +2400,7 @@ ivas_error ivas_init_decoder_fx( SrcSpatial_p->q_Pos_p = Q31; move16(); } IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) { IF( NE_32( ( error = ivas_reverb_open_fx( &st_ivas->hReverb, st_ivas->hHrtfStatistics, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) Loading @@ -2411,16 +2409,50 @@ ivas_error ivas_init_decoder_fx( } } #ifdef FIX_1161_REDUCE_OMASA_HEAP /* Allocate memory for delay buffer within 'hMasaIsmData' */ IF( NE_32( ( error = ivas_omasa_objects_delay_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) { return error; } #else /* Allocate 'hIsmRendererData' handle and memory for delay buffer within 'hMasaIsmData' */ IF( NE_32( ( error = ivas_omasa_separate_object_renderer_open( st_ivas ) ), IVAS_ERR_OK ) ) { return error; } #endif } test(); test(); test(); IF( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) && ( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) ) { /* Allocate 'hIsmRendererData' handle and memory for delay buffer within 'hMasaIsmData' */ #ifdef FIX_1161_REDUCE_OMASA_HEAP IF( NE_32( ( error = ivas_omasa_objects_delay_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) { return error; } #endif IF( NE_32( ( error = ivas_omasa_separate_object_renderer_open( st_ivas ) ), IVAS_ERR_OK ) ) { return error; } } #ifdef NONBE_FIX_984_OMASA_EXT_OUTPUT IF( EQ_32( st_ivas->renderer_type, RENDERER_OMASA_OBJECT_EXT ) ) { /* Allocate 'hIsmRendererData' handle and memory for delay buffer within 'hMasaIsmData' */ #ifdef FIX_1161_REDUCE_OMASA_HEAP IF( NE_32( ( error = ivas_omasa_objects_delay_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) { return error; } #else error = ivas_omasa_render_objects_from_mix_open_fx( st_ivas ); move32(); Loading @@ -2428,12 +2460,9 @@ ivas_error ivas_init_decoder_fx( { return error; } #endif error = ivas_spat_hSpatParamRendCom_config_fx( &st_ivas->hSpatParamRendCom, DIRAC_OPEN, 0, st_ivas->ivas_format, st_ivas->mc_mode, output_Fs, 0, 0 ); move32(); IF( NE_32( error, IVAS_ERR_OK ) ) IF( ( ( error = ivas_spat_hSpatParamRendCom_config_fx( &st_ivas->hSpatParamRendCom, DIRAC_OPEN, 0, st_ivas->ivas_format, st_ivas->mc_mode, output_Fs, 0, 0 ) ), IVAS_ERR_OK ) ) { return error; } Loading @@ -2442,25 +2471,12 @@ ivas_error ivas_init_decoder_fx( IF( EQ_32( st_ivas->renderer_type, RENDERER_OMASA_MIX_EXT ) ) { /* Allocate 'hIsmRendererData' handle */ error = ivas_omasa_combine_separate_ism_with_masa_open_fx( st_ivas ); move32(); IF( NE_32( error, IVAS_ERR_OK ) ) IF( ( ( error = ivas_omasa_combine_separate_ism_with_masa_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) { return error; } } #endif test(); test(); test(); IF( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) && ( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) ) { /* Allocate 'hIsmRendererData' handle and memory for delay buffer within 'hMasaIsmData' */ IF( NE_32( ( error = ivas_omasa_separate_object_renderer_open( st_ivas ) ), IVAS_ERR_OK ) ) { return error; } } } test(); Loading Loading @@ -2536,7 +2552,6 @@ ivas_error ivas_init_decoder_fx( } } #ifndef NONBE_FIX_MC_LFE_LPF /*-----------------------------------------------------------------* * LFE handles for rendering after rendering to adjust LFE delay to binaural filter delay Loading Loading @@ -2573,7 +2588,6 @@ ivas_error ivas_init_decoder_fx( set32_fx( st_ivas->hLFE->prior_out_buffer_fx, 0, L_FRAME48k ); } #endif /*-----------------------------------------------------------------* * CLDFB handles for rendering *-----------------------------------------------------------------*/ Loading Loading @@ -2634,6 +2648,7 @@ ivas_error ivas_init_decoder_fx( /*-----------------------------------------------------------------* * LFE handles for rendering after rendering to adjust LFE delay to filter delay *-----------------------------------------------------------------*/ test(); IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCT ) || EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) ) { Loading Loading @@ -2738,6 +2753,7 @@ ivas_error ivas_init_decoder_fx( /*-----------------------------------------------------------------* * Allocate floating-point output audio buffers *-----------------------------------------------------------------*/ st_ivas->p_out_len = ivas_get_nchan_buffers_dec_fx( st_ivas, st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate ); move16(); FOR( n = 0; n < ivas_get_nchan_buffers_dec_fx( st_ivas, st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate ); n++ ) Loading @@ -2754,9 +2770,11 @@ ivas_error ivas_init_decoder_fx( { st_ivas->p_output_fx[n] = NULL; } return error; } /*------------------------------------------------------------------------- * destroy_core_dec() * Loading Loading @@ -3686,6 +3704,5 @@ static ivas_error doSanityChecks_IVAS( } } #endif return IVAS_ERR_OK; } lib_dec/ivas_ism_renderer_fx.c +4 −1 Original line number Diff line number Diff line Loading @@ -110,6 +110,7 @@ ivas_error ivas_ism_renderer_open_fx( interpolator_length = init_interpolator_length; move16(); } IF( ( st_ivas->hIsmRendererData->interpolator_fx = (Word16 *) malloc( sizeof( Word16 ) * init_interpolator_length ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for ISM renderer interpolator\n" ) ); Loading Loading @@ -411,7 +412,7 @@ void ivas_ism_get_stereo_gains_fx( } /*-------------------------------------------------------------------------* * ivas_masa_oism_separate_object_renderer_open() * ivas_omasa_separate_object_renderer_open() * * Open structures, reserve memory, and init values. *-------------------------------------------------------------------------*/ Loading Loading @@ -452,6 +453,7 @@ ivas_error ivas_omasa_separate_object_renderer_open( st_ivas->hIsmRendererData->interpolator_len = interpolator_length; move16(); #ifndef FIX_1161_REDUCE_OMASA_HEAP st_ivas->hMasaIsmData->delayBuffer_size = extract_l( ( st_ivas->hDecoderConfig->output_Fs / 50 ) / MAX_PARAM_SPATIAL_SUBFRAMES ); move16(); Loading Loading @@ -480,6 +482,7 @@ ivas_error ivas_omasa_separate_object_renderer_open( } set32_fx( st_ivas->hMasaIsmData->delayBuffer_fx[i], 0, st_ivas->hMasaIsmData->delayBuffer_size ); } #endif return IVAS_ERR_OK; } Loading Loading
lib_com/ivas_cnst.h +1 −0 Original line number Diff line number Diff line Loading @@ -154,6 +154,7 @@ typedef enum #else RENDERER_OSBA_LS #endif } RENDERER_TYPE; #define MAX_FREQUENCY_BANDS 64 Loading
lib_com/ivas_prot_fx.h +30 −20 Original line number Diff line number Diff line Loading @@ -165,19 +165,23 @@ void ivas_omasa_combine_separate_ism_with_masa_fx( Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ Word32 *output[], /* o : output synthesis signal */ Word16 *output_q, /* i/o: output Q value */ const int16_t nchan_ism, /* i : number of ISMs */ const int16_t output_frame /* i : output frame length per channel */ const Word16 nchan_ism, /* i : number of ISMs */ const Word16 output_frame /* i : output frame length per channel */ ); #ifdef FIX_1161_REDUCE_OMASA_HEAP ivas_error ivas_omasa_objects_delay_open_fx( #else ivas_error ivas_omasa_render_objects_from_mix_open_fx( #endif Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ ); void ivas_omasa_render_objects_from_mix_fx( Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ Word32 *output[], /* o : output synthesis signal */ const int16_t nchan_ism, /* i : number of ISMs */ const int16_t output_frame, /* i : output frame length per channel */ const Word16 nchan_ism, /* i : number of ISMs */ const Word16 output_frame, /* i : output frame length per channel */ Word16 *output_q /* i/o: output Q value */ ); Loading @@ -191,6 +195,7 @@ ivas_error ivas_omasa_ism_metadata_dec_fx( const Word16 dirac_bs_md_write_idx, /* i : DirAC bitstream write index */ Word16 nb_bits_metadata[] /* o : number of ISM metadata bits */ ); ivas_error ivas_omasa_dec_config_fx( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ UWord16 *nSamplesRendered, /* o : number of samples flushed from the previous frame (JBM) */ Loading Loading @@ -3162,8 +3167,8 @@ void stereo_tcx_core_enc( Word16 pitch_buf_fx[NB_SUBFR16k], /* o : pitch for each subframe, Q6 */ const Word16 last_element_mode, /* i : last element mode, Q0 */ const Word16 vad_hover_flag, /* i : VAD hangover flag, Q0 */ Word16 Q_new ); Word16 Q_new ); Word16 transient_analysis_ivas_fx( TRAN_DET_HANDLE hTranDet, /* i : handle transient detection */ Loading Loading @@ -3289,20 +3294,24 @@ void ivas_fb_mixer_get_windowed_fr_fx( const Word16 length, /* i : number of new samples in time slot */ const Word16 mdft_len, /* i : MDFT frame length */ const Word16 nchan_fb_in, /* i : number of analysis channels */ Word16 gb ); Word16 gb ); void ivas_omasa_set_config_fx( OMASA_ENC_HANDLE hOMasa, /* i/o: OMASA encoder handle */ MASA_ENCODER_HANDLE hMasa, /* i : MASA encoder handle */ const Word32 input_Fs, /* i : Input sample rate */ const ISM_MODE ism_mode /* i : ISM mode */ ); Word16 ivas_omasa_ener_brate_fx( const Word16 nchan_ism, /* i : number of ISMs */ const Word32 ivas_total_brate, /* i : IVAS total bitrate */ Word32 *data_f[], /* i : Input / transport audio signals */ const Word16 input_frame, /* i : Input frame size */ Word16 data_e /*i:exponent for data_f */ const Word16 data_e /* i : exponent for data_f */ ); void computeDiffuseness_mdft_fx( Word32 **buffer_intensity[DIRAC_NUM_DIMS], const Word32 *buffer_energy, Loading Loading @@ -3341,6 +3350,7 @@ UWord8 ivas_masa_surrcoh_signicant_fx( ivas_error ivas_mcmasa_enc_open_fx( Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */ ); void ivas_mcmasa_enc_close_fx( MCMASA_ENC_HANDLE *hMcMasa, /* i/o: encoder McMASA handle */ const Word32 input_Fs /* i : input sampling rate */ Loading
lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -87,6 +87,7 @@ #define FIX_1372_ISAR_POST_REND #define NONBE_FIX_984_OMASA_EXT_OUTPUT /* Nokia: issue #984: complete the OMASA EXT output implementation */ #define FIX_1161_REDUCE_OMASA_HEAP /* VA: reduction of OMASA heap memory */ #define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ #define FIX_WARNING_RENDER_CONFIG /* Orange: fix warning on windows build */ #define FIX_1052_EXT_OUTPUT /* VA: issue 1052: define EXT decoder output configuration for stereo and MC formats */ Loading
lib_dec/ivas_init_dec_fx.c +45 −28 Original line number Diff line number Diff line Loading @@ -1359,7 +1359,6 @@ ivas_error ivas_init_decoder_fx( } } /*--------------------------------------------------------------------* * Allocate and initialize HRTF Statistics handle *--------------------------------------------------------------------*/ Loading Loading @@ -1532,7 +1531,6 @@ ivas_error ivas_init_decoder_fx( } } test(); test(); #ifdef NONBE_FIX_1052_SBA_EXT_FIX Loading Loading @@ -1727,7 +1725,6 @@ ivas_error ivas_init_decoder_fx( } } test(); test(); IF( NE_32( hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_FOA ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_MONO ) ) Loading Loading @@ -1865,6 +1862,7 @@ ivas_error ivas_init_decoder_fx( { k = add( k, 1 ); } test(); IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) ) { Loading Loading @@ -2198,7 +2196,6 @@ ivas_error ivas_init_decoder_fx( } } /*-----------------------------------------------------------------* * Allocate and initialize HP20 filter memories *-----------------------------------------------------------------*/ Loading Loading @@ -2350,10 +2347,8 @@ ivas_error ivas_init_decoder_fx( IF( ( EQ_32( st_ivas->ivas_format, MC_FORMAT ) ) && ( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) ) ) { granularity = NS2SA_FX2( output_Fs, CLDFB_SLOT_NS ); n_channels_transport_jbm = ivas_jbm_dec_get_num_tc_channels_fx( st_ivas ); IF( NE_32( ( error = ivas_jbm_dec_tc_buffer_open_fx( st_ivas, TC_BUFFER_MODE_RENDERER, n_channels_transport_jbm, MC_PARAMUPMIX_MAX_INPUT_CHANS, MC_PARAMUPMIX_MAX_INPUT_CHANS, granularity ) ), IVAS_ERR_OK ) ) { return error; Loading @@ -2380,10 +2375,12 @@ ivas_error ivas_init_decoder_fx( /* Allocate TD renderer for the objects in DISC mode */ Word16 SrcInd[MAX_NUM_TDREND_CHANNELS]; Word16 num_src; IF( NE_32( ( error = ivas_td_binaural_open_fx( st_ivas, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) { return error; } Word16 nchan_rend = num_src; move16(); test(); Loading @@ -2403,6 +2400,7 @@ ivas_error ivas_init_decoder_fx( SrcSpatial_p->q_Pos_p = Q31; move16(); } IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) { IF( NE_32( ( error = ivas_reverb_open_fx( &st_ivas->hReverb, st_ivas->hHrtfStatistics, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) Loading @@ -2411,16 +2409,50 @@ ivas_error ivas_init_decoder_fx( } } #ifdef FIX_1161_REDUCE_OMASA_HEAP /* Allocate memory for delay buffer within 'hMasaIsmData' */ IF( NE_32( ( error = ivas_omasa_objects_delay_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) { return error; } #else /* Allocate 'hIsmRendererData' handle and memory for delay buffer within 'hMasaIsmData' */ IF( NE_32( ( error = ivas_omasa_separate_object_renderer_open( st_ivas ) ), IVAS_ERR_OK ) ) { return error; } #endif } test(); test(); test(); IF( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) && ( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) ) { /* Allocate 'hIsmRendererData' handle and memory for delay buffer within 'hMasaIsmData' */ #ifdef FIX_1161_REDUCE_OMASA_HEAP IF( NE_32( ( error = ivas_omasa_objects_delay_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) { return error; } #endif IF( NE_32( ( error = ivas_omasa_separate_object_renderer_open( st_ivas ) ), IVAS_ERR_OK ) ) { return error; } } #ifdef NONBE_FIX_984_OMASA_EXT_OUTPUT IF( EQ_32( st_ivas->renderer_type, RENDERER_OMASA_OBJECT_EXT ) ) { /* Allocate 'hIsmRendererData' handle and memory for delay buffer within 'hMasaIsmData' */ #ifdef FIX_1161_REDUCE_OMASA_HEAP IF( NE_32( ( error = ivas_omasa_objects_delay_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) { return error; } #else error = ivas_omasa_render_objects_from_mix_open_fx( st_ivas ); move32(); Loading @@ -2428,12 +2460,9 @@ ivas_error ivas_init_decoder_fx( { return error; } #endif error = ivas_spat_hSpatParamRendCom_config_fx( &st_ivas->hSpatParamRendCom, DIRAC_OPEN, 0, st_ivas->ivas_format, st_ivas->mc_mode, output_Fs, 0, 0 ); move32(); IF( NE_32( error, IVAS_ERR_OK ) ) IF( ( ( error = ivas_spat_hSpatParamRendCom_config_fx( &st_ivas->hSpatParamRendCom, DIRAC_OPEN, 0, st_ivas->ivas_format, st_ivas->mc_mode, output_Fs, 0, 0 ) ), IVAS_ERR_OK ) ) { return error; } Loading @@ -2442,25 +2471,12 @@ ivas_error ivas_init_decoder_fx( IF( EQ_32( st_ivas->renderer_type, RENDERER_OMASA_MIX_EXT ) ) { /* Allocate 'hIsmRendererData' handle */ error = ivas_omasa_combine_separate_ism_with_masa_open_fx( st_ivas ); move32(); IF( NE_32( error, IVAS_ERR_OK ) ) IF( ( ( error = ivas_omasa_combine_separate_ism_with_masa_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) { return error; } } #endif test(); test(); test(); IF( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) && ( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) ) { /* Allocate 'hIsmRendererData' handle and memory for delay buffer within 'hMasaIsmData' */ IF( NE_32( ( error = ivas_omasa_separate_object_renderer_open( st_ivas ) ), IVAS_ERR_OK ) ) { return error; } } } test(); Loading Loading @@ -2536,7 +2552,6 @@ ivas_error ivas_init_decoder_fx( } } #ifndef NONBE_FIX_MC_LFE_LPF /*-----------------------------------------------------------------* * LFE handles for rendering after rendering to adjust LFE delay to binaural filter delay Loading Loading @@ -2573,7 +2588,6 @@ ivas_error ivas_init_decoder_fx( set32_fx( st_ivas->hLFE->prior_out_buffer_fx, 0, L_FRAME48k ); } #endif /*-----------------------------------------------------------------* * CLDFB handles for rendering *-----------------------------------------------------------------*/ Loading Loading @@ -2634,6 +2648,7 @@ ivas_error ivas_init_decoder_fx( /*-----------------------------------------------------------------* * LFE handles for rendering after rendering to adjust LFE delay to filter delay *-----------------------------------------------------------------*/ test(); IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCT ) || EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) ) { Loading Loading @@ -2738,6 +2753,7 @@ ivas_error ivas_init_decoder_fx( /*-----------------------------------------------------------------* * Allocate floating-point output audio buffers *-----------------------------------------------------------------*/ st_ivas->p_out_len = ivas_get_nchan_buffers_dec_fx( st_ivas, st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate ); move16(); FOR( n = 0; n < ivas_get_nchan_buffers_dec_fx( st_ivas, st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate ); n++ ) Loading @@ -2754,9 +2770,11 @@ ivas_error ivas_init_decoder_fx( { st_ivas->p_output_fx[n] = NULL; } return error; } /*------------------------------------------------------------------------- * destroy_core_dec() * Loading Loading @@ -3686,6 +3704,5 @@ static ivas_error doSanityChecks_IVAS( } } #endif return IVAS_ERR_OK; }
lib_dec/ivas_ism_renderer_fx.c +4 −1 Original line number Diff line number Diff line Loading @@ -110,6 +110,7 @@ ivas_error ivas_ism_renderer_open_fx( interpolator_length = init_interpolator_length; move16(); } IF( ( st_ivas->hIsmRendererData->interpolator_fx = (Word16 *) malloc( sizeof( Word16 ) * init_interpolator_length ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for ISM renderer interpolator\n" ) ); Loading Loading @@ -411,7 +412,7 @@ void ivas_ism_get_stereo_gains_fx( } /*-------------------------------------------------------------------------* * ivas_masa_oism_separate_object_renderer_open() * ivas_omasa_separate_object_renderer_open() * * Open structures, reserve memory, and init values. *-------------------------------------------------------------------------*/ Loading Loading @@ -452,6 +453,7 @@ ivas_error ivas_omasa_separate_object_renderer_open( st_ivas->hIsmRendererData->interpolator_len = interpolator_length; move16(); #ifndef FIX_1161_REDUCE_OMASA_HEAP st_ivas->hMasaIsmData->delayBuffer_size = extract_l( ( st_ivas->hDecoderConfig->output_Fs / 50 ) / MAX_PARAM_SPATIAL_SUBFRAMES ); move16(); Loading Loading @@ -480,6 +482,7 @@ ivas_error ivas_omasa_separate_object_renderer_open( } set32_fx( st_ivas->hMasaIsmData->delayBuffer_fx[i], 0, st_ivas->hMasaIsmData->delayBuffer_size ); } #endif return IVAS_ERR_OK; } Loading