Loading lib_com/options.h +4 −0 Original line number Diff line number Diff line Loading @@ -182,6 +182,7 @@ #define NONBE_FIX_809_EXTERNAL_TARGET_INTERPOLATION /* FhG: issue 809: unify external target interpolation inter and intra frame behaviour */ #define NONBE_FIX_775_OSBA_BR_SWITCHING_CRASH /* FhG: issue 775: fix crash in OSBA with bitrate switching and output order lower than input order */ #define NONBE_FIX_827_JBM_CREND_EARLY_REFLECTIONS /* FhG: issue #827: Resolve "JBM Crend early reflections are wrong" */ #define NONBE_FIX_833_OSBA_JBM_OBJECT_GAINS /* Fhg: issue #833: Resolve "JBM OSBA: the gains for the discrete objects are not computed" */ #define JBM_FOR_OSBA /* FhG: implement OSBA format in the JBM path */ #ifdef JBM_FOR_OSBA #define OSBA_ROOM_IR Loading @@ -190,6 +191,9 @@ #define NONBE_FIX_825_SBA_JBM_MONO_STEREO_OUTPUT /* FhG: issue #825: Resolve "JBM SBA: AGC and PCA run twice for MONO and STEREO output" */ #define NONBE_FIX_808_JBM_PARAMUPMIX_RS /* FhG: Issue 808: fix JBM MC rate switching */ #define NONBE_FIX_846_JBM_MASA_SIDSTART /* FhG: Issue #846: fix JBM for MASA DTX when the first frame is a SID frame */ #define NONBE_FIX_841_MC_RS_TDOBJ_RENDERER /* FhG: Issue #841: [Non-BE] Resolve "MC RS HRFT handle not set to NULL" */ #define NONBE_FIX_840_PARAMMC_RS /* FhG: Issue #840: Resolve "MC RS ParamMC hoa encoder wrongly set to zero" */ #define NONBE_FIX_826_JBM_MASA_CNA_CNG /* FhG: issue #826: Resolve "JBM MASA: CNA and CNG not in sync with non-JBM decoding" */ /* ##################### End NON-BE switches ########################### */ Loading lib_dec/ivas_ism_param_dec.c +20 −3 Original line number Diff line number Diff line Loading @@ -996,6 +996,11 @@ void ivas_ism_dec_digest_tc( st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM || #ifdef NONBE_FIX_833_OSBA_JBM_OBJECT_GAINS st_ivas->renderer_type == RENDERER_OSBA_AMBI || st_ivas->renderer_type == RENDERER_OSBA_LS || st_ivas->renderer_type == RENDERER_OSBA_STEREO || #endif ( st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM && st_ivas->hDecoderConfig->Opt_Headrotation == 0 ) ) { int16_t i, num_objects; Loading @@ -1006,7 +1011,11 @@ void ivas_ism_dec_digest_tc( if ( ( st_ivas->hDecoderConfig->output_Fs / FRAMES_PER_SEC ) == st_ivas->hTcBuffer->n_samples_available ) { int16_t interpolator_length = (int16_t) ( st_ivas->hDecoderConfig->output_Fs / FRAMES_PER_SEC ); if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV ) if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC || #ifdef NONBE_FIX_833_OSBA_JBM_OBJECT_GAINS st_ivas->renderer_type == RENDERER_OSBA_AMBI || #endif st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV ) { st_ivas->hIsmRendererData->interpolator[0] = 0.0f; for ( i = 1; i < interpolator_length; i++ ) Loading Loading @@ -1043,7 +1052,11 @@ void ivas_ism_dec_digest_tc( azimuth = (int16_t) floorf( st_ivas->hIsmMetaData[i]->azimuth + 0.5f ); elevation = (int16_t) floorf( st_ivas->hIsmMetaData[i]->elevation + 0.5f ); if ( ( st_ivas->renderer_type == RENDERER_TD_PANNING || st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) && if ( ( st_ivas->renderer_type == RENDERER_TD_PANNING || #ifdef NONBE_FIX_833_OSBA_JBM_OBJECT_GAINS st_ivas->renderer_type == RENDERER_OSBA_LS || #endif st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) && st_ivas->hCombinedOrientationData == NULL ) { if ( st_ivas->hIntSetup.is_planar_setup ) Loading @@ -1057,7 +1070,11 @@ void ivas_ism_dec_digest_tc( efap_determine_gains( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains[i], azimuth, elevation, EFAP_MODE_EFAP ); } } else if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV ) else if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC || #ifdef NONBE_FIX_833_OSBA_JBM_OBJECT_GAINS st_ivas->renderer_type == RENDERER_OSBA_AMBI || #endif st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV ) { /*get HOA gets for direction (ACN/SN3D)*/ ivas_dirac_dec_get_response( azimuth, elevation, st_ivas->hIsmRendererData->gains[i], st_ivas->hIntSetup.ambisonics_order ); Loading lib_dec/ivas_masa_dec.c +29 −1 Original line number Diff line number Diff line Loading @@ -628,6 +628,9 @@ ivas_error ivas_masa_dec_open( { int16_t nchan_to_allocate; TC_BUFFER_MODE buffer_mode; #ifdef NONBE_FIX_826_JBM_MASA_CNA_CNG int16_t nchan_transport; #endif buffer_mode = TC_BUFFER_MODE_RENDERER; if ( st_ivas->mc_mode == MC_MODE_MCMASA && ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_STEREO || st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_MONO ) ) Loading @@ -639,13 +642,32 @@ ivas_error ivas_masa_dec_open( buffer_mode = TC_BUFFER_MODE_BUFFER; } #ifdef NONBE_FIX_826_JBM_MASA_CNA_CNG nchan_transport = ivas_jbm_dec_get_num_tc_channels( st_ivas ); nchan_to_allocate = nchan_transport; #else nchan_to_allocate = ivas_jbm_dec_get_num_tc_channels( st_ivas ); #endif if ( st_ivas->ivas_format == MASA_ISM_FORMAT && st_ivas->renderer_type == RENDERER_MONO_DOWNMIX ) { #ifdef NONBE_FIX_826_JBM_MASA_CNA_CNG nchan_transport = 1; #endif nchan_to_allocate = 1; } #ifdef NONBE_FIX_826_JBM_MASA_CNA_CNG else if ( st_ivas->nchan_transport == 1 && ( st_ivas->renderer_type == RENDERER_DIRAC ) ) { /* addtl channel for CNG */ nchan_to_allocate++; } #endif #ifdef NONBE_FIX_826_JBM_MASA_CNA_CNG if ( ( error = ivas_jbm_dec_tc_buffer_open( st_ivas, buffer_mode, nchan_transport, nchan_to_allocate, nchan_to_allocate, NS2SA( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ) ) ) != IVAS_ERR_OK ) #else if ( ( error = ivas_jbm_dec_tc_buffer_open( st_ivas, buffer_mode, nchan_to_allocate, nchan_to_allocate, nchan_to_allocate, NS2SA( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ) ) ) != IVAS_ERR_OK ) #endif { return error; } Loading Loading @@ -1494,7 +1516,13 @@ ivas_error ivas_masa_dec_reconfigure( } } } #ifdef NONBE_FIX_826_JBM_MASA_CNA_CNG else if ( st_ivas->nchan_transport == 1 && ( st_ivas->renderer_type == RENDERER_DIRAC && st_ivas->hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) ) { /* addtl channel for CNG */ tc_nchan_to_allocate++; } #endif if ( tc_nchan_transport != st_ivas->hTcBuffer->nchan_transport_jbm || tc_nchan_to_allocate != st_ivas->hTcBuffer->nchan_transport_internal || buffer_mode_new != st_ivas->hTcBuffer->tc_buffer_mode ) { if ( ( error = ivas_jbm_dec_tc_buffer_reconfigure( st_ivas, buffer_mode_new, tc_nchan_transport, tc_nchan_to_allocate, tc_nchan_to_allocate, n_samples_granularity ) ) != IVAS_ERR_OK ) Loading lib_dec/ivas_mc_param_dec.c +2 −0 Original line number Diff line number Diff line Loading @@ -584,7 +584,9 @@ ivas_error ivas_param_mc_dec_reconfig( hTransportSetup = st_ivas->hTransSetup; mc_ls_setup = ivas_mc_map_output_config_to_mc_ls_setup( st_ivas->transport_config ); nchan_out_transport = st_ivas->hTransSetup.nchan_out_woLFE + st_ivas->hTransSetup.num_lfe; #ifndef NONBE_FIX_840_PARAMMC_RS hParamMC->hoa_encoder = NULL; #endif if ( hParamMC->synthesis_conf == PARAM_MC_SYNTH_LS_CONV_COV || hParamMC->synthesis_conf == PARAM_MC_SYNTH_MONO_STEREO ) { Loading lib_dec/ivas_mct_dec.c +3 −0 Original line number Diff line number Diff line Loading @@ -1218,6 +1218,9 @@ static ivas_error ivas_mc_dec_reconfig( if ( st_ivas->hBinRendererTd != NULL && ( st_ivas->renderer_type != RENDERER_BINAURAL_OBJECTS_TD ) ) { ivas_td_binaural_close( &st_ivas->hBinRendererTd ); #ifdef NONBE_FIX_841_MC_RS_TDOBJ_RENDERER st_ivas->hHrtfTD = NULL; #endif } #ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN Loading Loading
lib_com/options.h +4 −0 Original line number Diff line number Diff line Loading @@ -182,6 +182,7 @@ #define NONBE_FIX_809_EXTERNAL_TARGET_INTERPOLATION /* FhG: issue 809: unify external target interpolation inter and intra frame behaviour */ #define NONBE_FIX_775_OSBA_BR_SWITCHING_CRASH /* FhG: issue 775: fix crash in OSBA with bitrate switching and output order lower than input order */ #define NONBE_FIX_827_JBM_CREND_EARLY_REFLECTIONS /* FhG: issue #827: Resolve "JBM Crend early reflections are wrong" */ #define NONBE_FIX_833_OSBA_JBM_OBJECT_GAINS /* Fhg: issue #833: Resolve "JBM OSBA: the gains for the discrete objects are not computed" */ #define JBM_FOR_OSBA /* FhG: implement OSBA format in the JBM path */ #ifdef JBM_FOR_OSBA #define OSBA_ROOM_IR Loading @@ -190,6 +191,9 @@ #define NONBE_FIX_825_SBA_JBM_MONO_STEREO_OUTPUT /* FhG: issue #825: Resolve "JBM SBA: AGC and PCA run twice for MONO and STEREO output" */ #define NONBE_FIX_808_JBM_PARAMUPMIX_RS /* FhG: Issue 808: fix JBM MC rate switching */ #define NONBE_FIX_846_JBM_MASA_SIDSTART /* FhG: Issue #846: fix JBM for MASA DTX when the first frame is a SID frame */ #define NONBE_FIX_841_MC_RS_TDOBJ_RENDERER /* FhG: Issue #841: [Non-BE] Resolve "MC RS HRFT handle not set to NULL" */ #define NONBE_FIX_840_PARAMMC_RS /* FhG: Issue #840: Resolve "MC RS ParamMC hoa encoder wrongly set to zero" */ #define NONBE_FIX_826_JBM_MASA_CNA_CNG /* FhG: issue #826: Resolve "JBM MASA: CNA and CNG not in sync with non-JBM decoding" */ /* ##################### End NON-BE switches ########################### */ Loading
lib_dec/ivas_ism_param_dec.c +20 −3 Original line number Diff line number Diff line Loading @@ -996,6 +996,11 @@ void ivas_ism_dec_digest_tc( st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM || #ifdef NONBE_FIX_833_OSBA_JBM_OBJECT_GAINS st_ivas->renderer_type == RENDERER_OSBA_AMBI || st_ivas->renderer_type == RENDERER_OSBA_LS || st_ivas->renderer_type == RENDERER_OSBA_STEREO || #endif ( st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM && st_ivas->hDecoderConfig->Opt_Headrotation == 0 ) ) { int16_t i, num_objects; Loading @@ -1006,7 +1011,11 @@ void ivas_ism_dec_digest_tc( if ( ( st_ivas->hDecoderConfig->output_Fs / FRAMES_PER_SEC ) == st_ivas->hTcBuffer->n_samples_available ) { int16_t interpolator_length = (int16_t) ( st_ivas->hDecoderConfig->output_Fs / FRAMES_PER_SEC ); if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV ) if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC || #ifdef NONBE_FIX_833_OSBA_JBM_OBJECT_GAINS st_ivas->renderer_type == RENDERER_OSBA_AMBI || #endif st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV ) { st_ivas->hIsmRendererData->interpolator[0] = 0.0f; for ( i = 1; i < interpolator_length; i++ ) Loading Loading @@ -1043,7 +1052,11 @@ void ivas_ism_dec_digest_tc( azimuth = (int16_t) floorf( st_ivas->hIsmMetaData[i]->azimuth + 0.5f ); elevation = (int16_t) floorf( st_ivas->hIsmMetaData[i]->elevation + 0.5f ); if ( ( st_ivas->renderer_type == RENDERER_TD_PANNING || st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) && if ( ( st_ivas->renderer_type == RENDERER_TD_PANNING || #ifdef NONBE_FIX_833_OSBA_JBM_OBJECT_GAINS st_ivas->renderer_type == RENDERER_OSBA_LS || #endif st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) && st_ivas->hCombinedOrientationData == NULL ) { if ( st_ivas->hIntSetup.is_planar_setup ) Loading @@ -1057,7 +1070,11 @@ void ivas_ism_dec_digest_tc( efap_determine_gains( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains[i], azimuth, elevation, EFAP_MODE_EFAP ); } } else if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV ) else if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC || #ifdef NONBE_FIX_833_OSBA_JBM_OBJECT_GAINS st_ivas->renderer_type == RENDERER_OSBA_AMBI || #endif st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV ) { /*get HOA gets for direction (ACN/SN3D)*/ ivas_dirac_dec_get_response( azimuth, elevation, st_ivas->hIsmRendererData->gains[i], st_ivas->hIntSetup.ambisonics_order ); Loading
lib_dec/ivas_masa_dec.c +29 −1 Original line number Diff line number Diff line Loading @@ -628,6 +628,9 @@ ivas_error ivas_masa_dec_open( { int16_t nchan_to_allocate; TC_BUFFER_MODE buffer_mode; #ifdef NONBE_FIX_826_JBM_MASA_CNA_CNG int16_t nchan_transport; #endif buffer_mode = TC_BUFFER_MODE_RENDERER; if ( st_ivas->mc_mode == MC_MODE_MCMASA && ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_STEREO || st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_MONO ) ) Loading @@ -639,13 +642,32 @@ ivas_error ivas_masa_dec_open( buffer_mode = TC_BUFFER_MODE_BUFFER; } #ifdef NONBE_FIX_826_JBM_MASA_CNA_CNG nchan_transport = ivas_jbm_dec_get_num_tc_channels( st_ivas ); nchan_to_allocate = nchan_transport; #else nchan_to_allocate = ivas_jbm_dec_get_num_tc_channels( st_ivas ); #endif if ( st_ivas->ivas_format == MASA_ISM_FORMAT && st_ivas->renderer_type == RENDERER_MONO_DOWNMIX ) { #ifdef NONBE_FIX_826_JBM_MASA_CNA_CNG nchan_transport = 1; #endif nchan_to_allocate = 1; } #ifdef NONBE_FIX_826_JBM_MASA_CNA_CNG else if ( st_ivas->nchan_transport == 1 && ( st_ivas->renderer_type == RENDERER_DIRAC ) ) { /* addtl channel for CNG */ nchan_to_allocate++; } #endif #ifdef NONBE_FIX_826_JBM_MASA_CNA_CNG if ( ( error = ivas_jbm_dec_tc_buffer_open( st_ivas, buffer_mode, nchan_transport, nchan_to_allocate, nchan_to_allocate, NS2SA( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ) ) ) != IVAS_ERR_OK ) #else if ( ( error = ivas_jbm_dec_tc_buffer_open( st_ivas, buffer_mode, nchan_to_allocate, nchan_to_allocate, nchan_to_allocate, NS2SA( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ) ) ) != IVAS_ERR_OK ) #endif { return error; } Loading Loading @@ -1494,7 +1516,13 @@ ivas_error ivas_masa_dec_reconfigure( } } } #ifdef NONBE_FIX_826_JBM_MASA_CNA_CNG else if ( st_ivas->nchan_transport == 1 && ( st_ivas->renderer_type == RENDERER_DIRAC && st_ivas->hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) ) { /* addtl channel for CNG */ tc_nchan_to_allocate++; } #endif if ( tc_nchan_transport != st_ivas->hTcBuffer->nchan_transport_jbm || tc_nchan_to_allocate != st_ivas->hTcBuffer->nchan_transport_internal || buffer_mode_new != st_ivas->hTcBuffer->tc_buffer_mode ) { if ( ( error = ivas_jbm_dec_tc_buffer_reconfigure( st_ivas, buffer_mode_new, tc_nchan_transport, tc_nchan_to_allocate, tc_nchan_to_allocate, n_samples_granularity ) ) != IVAS_ERR_OK ) Loading
lib_dec/ivas_mc_param_dec.c +2 −0 Original line number Diff line number Diff line Loading @@ -584,7 +584,9 @@ ivas_error ivas_param_mc_dec_reconfig( hTransportSetup = st_ivas->hTransSetup; mc_ls_setup = ivas_mc_map_output_config_to_mc_ls_setup( st_ivas->transport_config ); nchan_out_transport = st_ivas->hTransSetup.nchan_out_woLFE + st_ivas->hTransSetup.num_lfe; #ifndef NONBE_FIX_840_PARAMMC_RS hParamMC->hoa_encoder = NULL; #endif if ( hParamMC->synthesis_conf == PARAM_MC_SYNTH_LS_CONV_COV || hParamMC->synthesis_conf == PARAM_MC_SYNTH_MONO_STEREO ) { Loading
lib_dec/ivas_mct_dec.c +3 −0 Original line number Diff line number Diff line Loading @@ -1218,6 +1218,9 @@ static ivas_error ivas_mc_dec_reconfig( if ( st_ivas->hBinRendererTd != NULL && ( st_ivas->renderer_type != RENDERER_BINAURAL_OBJECTS_TD ) ) { ivas_td_binaural_close( &st_ivas->hBinRendererTd ); #ifdef NONBE_FIX_841_MC_RS_TDOBJ_RENDERER st_ivas->hHrtfTD = NULL; #endif } #ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN Loading