Loading lib_com/options.h +4 −2 Original line number Diff line number Diff line Loading @@ -156,6 +156,9 @@ #define SPLIT_REND_PRED_QUANT_63_PNTS #define SPLIT_REND_WITH_HEAD_ROT_PARAMBIN /* Nokia: Issue 623: Split rendering support for parambin renderer */ #define FIX_658_SPLIT_REND_MASA /*Dlb : Fix for issue 658, uninitialized memory access in MASA in Split rendering 0DOF mode*/ #ifdef SBA_AND_OBJECTS #define OSBA_SPLIT_RENDERING #endif #endif #define MASA_AND_OBJECTS /* Nokia: Combination of MASA and objects */ Loading @@ -163,7 +166,6 @@ #define SBA_AND_OBJECTS #ifdef SBA_AND_OBJECTS #define OSBA_BR_SWITCHING #define OSBA_SPLIT_RENDERING #endif #define FIX_264_AUDIO_CHANNELS_TO_HEAP /* VA: issue 243: Move audio channels memory from stack to heap */ Loading lib_dec/ivas_mc_paramupmix_dec.c +15 −3 Original line number Diff line number Diff line Loading @@ -60,7 +60,11 @@ static void ps_pred_process( MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix, float qmf_m static void ps_pred_process_sf( MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix, DECODER_TC_BUFFER_HANDLE hTcBuffer, float qmf_mod_re[JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float qmf_mod_im[JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float qmf_side_re[JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float qmf_side_im[JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float *param_interpol, const int16_t ch, const int16_t slots_rendered ); #ifdef SPLIT_REND_WITH_HEAD_ROT static void ivas_mc_paramupmix_dec_sf( Decoder_Struct *st_ivas, float *output_f[MAX_OUTPUT_CHANNELS], int16_t slot_index_start ); #else static void ivas_mc_paramupmix_dec_sf( Decoder_Struct *st_ivas, float *output_f[MAX_OUTPUT_CHANNELS] ); #endif static void ivas_param_upmix_dec_decorr_subframes( Decoder_Struct *st_ivas, const int16_t nSamplesForRendering ); Loading Loading @@ -562,7 +566,11 @@ void ivas_mc_paramupmix_dec_render( { int16_t n_samples_sf = slot_size * st_ivas->hTcBuffer->subframe_nbslots[subframe_idx]; #ifdef SPLIT_REND_WITH_HEAD_ROT ivas_mc_paramupmix_dec_sf( st_ivas, output_f_local, slot_index_start ); #else ivas_mc_paramupmix_dec_sf( st_ivas, output_f_local ); #endif slot_index_start += st_ivas->hTcBuffer->subframe_nbslots[subframe_idx]; for ( ch = 0; ch < MAX_OUTPUT_CHANNELS; ch++ ) { Loading Loading @@ -974,8 +982,12 @@ static void ps_pred_process_sf( static void ivas_mc_paramupmix_dec_sf( Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ float *output_f[MAX_OUTPUT_CHANNELS], /* i/o: synthesized core-coder transport channels */ int16_t slot_index_start ) float *output_f[MAX_OUTPUT_CHANNELS] /* i/o: synthesized core-coder transport channels */ #ifdef SPLIT_REND_WITH_HEAD_ROT , int16_t slot_index_start #endif ) { int16_t i, ch, slot_idx, k; float *pPcm_temp[MC_PARAMUPMIX_COMBINATIONS * 2]; /* decorrelated and undecorrelated*/ Loading lib_enc/ivas_init_enc.c +5 −1 Original line number Diff line number Diff line Loading @@ -417,7 +417,11 @@ ivas_error ivas_init_encoder( *-----------------------------------------------------------------*/ nchan_inp_buff = hEncoderConfig->nchan_inp; if ( ivas_format == MASA_ISM_FORMAT ) if ( ivas_format == MONO_FORMAT ) { nchan_inp_buff = 0; } else if ( ivas_format == MASA_ISM_FORMAT ) { if ( hEncoderConfig->nchan_inp - hEncoderConfig->nchan_ism == 1 ) /* mono is duplicated in monoMASA */ { Loading lib_rend/ivas_dirac_dec_binaural_functions.c +14 −0 Original line number Diff line number Diff line Loading @@ -102,7 +102,11 @@ typedef struct parambin_rend_config_data * Local function prototypes *------------------------------------------------------------------------*/ #ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN static void ivas_dirac_dec_binaural_internal( Decoder_Struct *st_ivas, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, float *output_f[], const int16_t nchan_transport, const int16_t subframe ); #else static void ivas_dirac_dec_binaural_internal( Decoder_Struct *st_ivas, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, const int16_t nchan_transport, const int16_t subframe ); #endif static void ivas_dirac_dec_decorrelate_slot( DIRAC_DEC_BIN_HANDLE hDiracDecBin, const int16_t num_freq_bands, const int16_t slot, float inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float decRe[][CLDFB_NO_CHANNELS_MAX], float decIm[][CLDFB_NO_CHANNELS_MAX] ); Loading Loading @@ -525,7 +529,11 @@ void ivas_dirac_dec_binaural_render( for ( subframe_idx = first_sf; subframe_idx < last_sf; subframe_idx++ ) { int16_t n_samples_sf = slot_size * hSpatParamRendCom->subframe_nbslots[subframe_idx]; #ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN ivas_dirac_dec_binaural_internal( st_ivas, st_ivas->hCombinedOrientationData, output_f_local, nchan_transport, subframe_idx ); #else ivas_dirac_dec_binaural_internal( st_ivas, st_ivas->hCombinedOrientationData, nchan_transport, subframe_idx ); #endif for ( ch = 0; ch < nchan_out; ch++ ) { Loading Loading @@ -695,7 +703,11 @@ void ivas_dirac_dec_binaural( { int16_t n_samples_sf = slot_size * hSpatParamRendCom->subframe_nbslots[subframe]; #ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN ivas_dirac_dec_binaural_internal( st_ivas, hCombinedOrientationData, p_output, nchan_transport, subframe ); #else ivas_dirac_dec_binaural_internal( st_ivas, hCombinedOrientationData, nchan_transport, subframe ); #endif for ( ch = 0; ch < 2 * BINAURAL_CHANNELS; ch++ ) { Loading @@ -720,7 +732,9 @@ void ivas_dirac_dec_binaural( static void ivas_dirac_dec_binaural_internal( Decoder_Struct *st_ivas, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, #ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN float *output_f[], #endif const int16_t nchan_transport, const int16_t subframe ) { Loading lib_rend/ivas_output_init.c +7 −1 Original line number Diff line number Diff line Loading @@ -274,7 +274,11 @@ int16_t ivas_get_nchan_buffers_dec( nchan_out_buff = MAX_OUTPUT_CHANNELS; if ( st_ivas->ivas_format == STEREO_FORMAT ) if ( st_ivas->ivas_format == MONO_FORMAT ) { nchan_out_buff = 0; } else if ( st_ivas->ivas_format == STEREO_FORMAT ) { nchan_out_buff = max( st_ivas->hDecoderConfig->nchan_out, CPE_CHANNELS ); } Loading Loading @@ -383,10 +387,12 @@ int16_t ivas_get_nchan_buffers_dec( } } #ifdef SPLIT_REND_WITH_HEAD_ROT if ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { nchan_out_buff = max( nchan_out_buff, st_ivas->splitBinRend.splitrend.multiBinPoseData.num_poses * BINAURAL_CHANNELS ); } #endif return nchan_out_buff; } Loading Loading
lib_com/options.h +4 −2 Original line number Diff line number Diff line Loading @@ -156,6 +156,9 @@ #define SPLIT_REND_PRED_QUANT_63_PNTS #define SPLIT_REND_WITH_HEAD_ROT_PARAMBIN /* Nokia: Issue 623: Split rendering support for parambin renderer */ #define FIX_658_SPLIT_REND_MASA /*Dlb : Fix for issue 658, uninitialized memory access in MASA in Split rendering 0DOF mode*/ #ifdef SBA_AND_OBJECTS #define OSBA_SPLIT_RENDERING #endif #endif #define MASA_AND_OBJECTS /* Nokia: Combination of MASA and objects */ Loading @@ -163,7 +166,6 @@ #define SBA_AND_OBJECTS #ifdef SBA_AND_OBJECTS #define OSBA_BR_SWITCHING #define OSBA_SPLIT_RENDERING #endif #define FIX_264_AUDIO_CHANNELS_TO_HEAP /* VA: issue 243: Move audio channels memory from stack to heap */ Loading
lib_dec/ivas_mc_paramupmix_dec.c +15 −3 Original line number Diff line number Diff line Loading @@ -60,7 +60,11 @@ static void ps_pred_process( MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix, float qmf_m static void ps_pred_process_sf( MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix, DECODER_TC_BUFFER_HANDLE hTcBuffer, float qmf_mod_re[JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float qmf_mod_im[JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float qmf_side_re[JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float qmf_side_im[JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float *param_interpol, const int16_t ch, const int16_t slots_rendered ); #ifdef SPLIT_REND_WITH_HEAD_ROT static void ivas_mc_paramupmix_dec_sf( Decoder_Struct *st_ivas, float *output_f[MAX_OUTPUT_CHANNELS], int16_t slot_index_start ); #else static void ivas_mc_paramupmix_dec_sf( Decoder_Struct *st_ivas, float *output_f[MAX_OUTPUT_CHANNELS] ); #endif static void ivas_param_upmix_dec_decorr_subframes( Decoder_Struct *st_ivas, const int16_t nSamplesForRendering ); Loading Loading @@ -562,7 +566,11 @@ void ivas_mc_paramupmix_dec_render( { int16_t n_samples_sf = slot_size * st_ivas->hTcBuffer->subframe_nbslots[subframe_idx]; #ifdef SPLIT_REND_WITH_HEAD_ROT ivas_mc_paramupmix_dec_sf( st_ivas, output_f_local, slot_index_start ); #else ivas_mc_paramupmix_dec_sf( st_ivas, output_f_local ); #endif slot_index_start += st_ivas->hTcBuffer->subframe_nbslots[subframe_idx]; for ( ch = 0; ch < MAX_OUTPUT_CHANNELS; ch++ ) { Loading Loading @@ -974,8 +982,12 @@ static void ps_pred_process_sf( static void ivas_mc_paramupmix_dec_sf( Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ float *output_f[MAX_OUTPUT_CHANNELS], /* i/o: synthesized core-coder transport channels */ int16_t slot_index_start ) float *output_f[MAX_OUTPUT_CHANNELS] /* i/o: synthesized core-coder transport channels */ #ifdef SPLIT_REND_WITH_HEAD_ROT , int16_t slot_index_start #endif ) { int16_t i, ch, slot_idx, k; float *pPcm_temp[MC_PARAMUPMIX_COMBINATIONS * 2]; /* decorrelated and undecorrelated*/ Loading
lib_enc/ivas_init_enc.c +5 −1 Original line number Diff line number Diff line Loading @@ -417,7 +417,11 @@ ivas_error ivas_init_encoder( *-----------------------------------------------------------------*/ nchan_inp_buff = hEncoderConfig->nchan_inp; if ( ivas_format == MASA_ISM_FORMAT ) if ( ivas_format == MONO_FORMAT ) { nchan_inp_buff = 0; } else if ( ivas_format == MASA_ISM_FORMAT ) { if ( hEncoderConfig->nchan_inp - hEncoderConfig->nchan_ism == 1 ) /* mono is duplicated in monoMASA */ { Loading
lib_rend/ivas_dirac_dec_binaural_functions.c +14 −0 Original line number Diff line number Diff line Loading @@ -102,7 +102,11 @@ typedef struct parambin_rend_config_data * Local function prototypes *------------------------------------------------------------------------*/ #ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN static void ivas_dirac_dec_binaural_internal( Decoder_Struct *st_ivas, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, float *output_f[], const int16_t nchan_transport, const int16_t subframe ); #else static void ivas_dirac_dec_binaural_internal( Decoder_Struct *st_ivas, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, const int16_t nchan_transport, const int16_t subframe ); #endif static void ivas_dirac_dec_decorrelate_slot( DIRAC_DEC_BIN_HANDLE hDiracDecBin, const int16_t num_freq_bands, const int16_t slot, float inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float decRe[][CLDFB_NO_CHANNELS_MAX], float decIm[][CLDFB_NO_CHANNELS_MAX] ); Loading Loading @@ -525,7 +529,11 @@ void ivas_dirac_dec_binaural_render( for ( subframe_idx = first_sf; subframe_idx < last_sf; subframe_idx++ ) { int16_t n_samples_sf = slot_size * hSpatParamRendCom->subframe_nbslots[subframe_idx]; #ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN ivas_dirac_dec_binaural_internal( st_ivas, st_ivas->hCombinedOrientationData, output_f_local, nchan_transport, subframe_idx ); #else ivas_dirac_dec_binaural_internal( st_ivas, st_ivas->hCombinedOrientationData, nchan_transport, subframe_idx ); #endif for ( ch = 0; ch < nchan_out; ch++ ) { Loading Loading @@ -695,7 +703,11 @@ void ivas_dirac_dec_binaural( { int16_t n_samples_sf = slot_size * hSpatParamRendCom->subframe_nbslots[subframe]; #ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN ivas_dirac_dec_binaural_internal( st_ivas, hCombinedOrientationData, p_output, nchan_transport, subframe ); #else ivas_dirac_dec_binaural_internal( st_ivas, hCombinedOrientationData, nchan_transport, subframe ); #endif for ( ch = 0; ch < 2 * BINAURAL_CHANNELS; ch++ ) { Loading @@ -720,7 +732,9 @@ void ivas_dirac_dec_binaural( static void ivas_dirac_dec_binaural_internal( Decoder_Struct *st_ivas, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, #ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN float *output_f[], #endif const int16_t nchan_transport, const int16_t subframe ) { Loading
lib_rend/ivas_output_init.c +7 −1 Original line number Diff line number Diff line Loading @@ -274,7 +274,11 @@ int16_t ivas_get_nchan_buffers_dec( nchan_out_buff = MAX_OUTPUT_CHANNELS; if ( st_ivas->ivas_format == STEREO_FORMAT ) if ( st_ivas->ivas_format == MONO_FORMAT ) { nchan_out_buff = 0; } else if ( st_ivas->ivas_format == STEREO_FORMAT ) { nchan_out_buff = max( st_ivas->hDecoderConfig->nchan_out, CPE_CHANNELS ); } Loading Loading @@ -383,10 +387,12 @@ int16_t ivas_get_nchan_buffers_dec( } } #ifdef SPLIT_REND_WITH_HEAD_ROT if ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { nchan_out_buff = max( nchan_out_buff, st_ivas->splitBinRend.splitrend.multiBinPoseData.num_poses * BINAURAL_CHANNELS ); } #endif return nchan_out_buff; } Loading