From 999f17fdf0474084e7314304a0b7f6972bf538f9 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Wed, 3 Dec 2025 14:22:41 +0100 Subject: [PATCH 1/9] add external renderer support for mono/stereo upmix --- lib_com/options.h | 1 + lib_rend/lib_rend.c | 113 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index 11f9b1f26e..db9bc1c926 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -161,6 +161,7 @@ /*#define FIX_I4_OL_PITCH*/ /* fix open-loop pitch used for EVS core switching */ #define TMP_1342_WORKAROUND_DEC_FLUSH_BROKEN_IN_SR /* FhG: Temporary workaround for incorrect implementation of decoder flush with split rendering */ +#define FIX_1466_EXTREND /* FhG: issue 1466: enable rendering of mono/stereo to other formats in the external renderer */ #define NONBE_1122_KEEP_EVS_MODE_UNCHANGED /* FhG: Disables fix for issue 1122 in EVS mode to keep BE tests green. This switch should be removed once the 1122 fix is added to EVS via a CR. */ diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index 9462886b3f..ac8abba935 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -1262,11 +1262,26 @@ static bool isIoConfigPairSupported( const AUDIO_CONFIG inConfig, const AUDIO_CONFIG outConfig ) { +#ifdef FIX_1466_EXTREND + /* input config cannot be binaural */ + if ( ( getAudioConfigType( inConfig ) == IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) && + ( inConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && inConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) + { + return false; + } + + /* output config cannot be object based */ + if ( getAudioConfigType( outConfig ) == IVAS_REND_AUDIO_CONFIG_TYPE_OBJECT_BASED ) + { + return false; + } +#else /* Rendering mono or stereo to binaural is not supported */ if ( ( inConfig == IVAS_AUDIO_CONFIG_MONO || inConfig == IVAS_AUDIO_CONFIG_STEREO ) && getAudioConfigType( outConfig ) == IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) { return false; } +#endif /* If not returned so far, config pair is supported */ return true; @@ -2208,15 +2223,47 @@ static ivas_error updateMcPanGainsForAmbiOut( { int16_t ch_in, ch_out, lfeIdx; int16_t numNonLfeInChannels, outAmbiOrder; +#ifdef FIX_1466_EXTREND + AUDIO_CONFIG inConfig; +#endif const float *spkAzi, *spkEle; ivas_error error; +#ifdef FIX_1466_EXTREND + inConfig = inputMc->base.inConfig; + +#endif if ( ( error = getAmbisonicsOrder( outConfig, &outAmbiOrder ) ) != IVAS_ERR_OK ) { return error; } +#ifdef FIX_1466_EXTREND + if ( inConfig == IVAS_AUDIO_CONFIG_MONO || + inConfig == IVAS_AUDIO_CONFIG_STEREO ) + { + setZeroPanMatrix( inputMc->panGains ); + if ( inConfig == IVAS_AUDIO_CONFIG_MONO ) + { + /* W = Mono */ + inputMc->panGains[0][0] = 1.f; + } + else + { + /* W = 0.5 * ( L + R ) */ + inputMc->panGains[0][0] = 0.5f; + inputMc->panGains[0][1] = 0.5f; + /* Y = 0.5 * ( L - R ) */ + inputMc->panGains[1][0] = 0.5f; + inputMc->panGains[1][1] = -0.5f; + } + + return IVAS_ERR_OK; + } + else if ( inConfig != IVAS_AUDIO_CONFIG_LS_CUSTOM ) +#else if ( inputMc->base.inConfig != IVAS_AUDIO_CONFIG_LS_CUSTOM ) +#endif { if ( ( error = getNumNonLfeChannelsInSpeakerLayout( inputMc->base.inConfig, &numNonLfeInChannels ) ) != IVAS_ERR_OK ) { @@ -2272,6 +2319,26 @@ static ivas_error updateMcPanGainsForAmbiOut( return IVAS_ERR_OK; } +#ifdef FIX_1466_EXTREND +static ivas_error updateMcPanGainsForBinauralOut( + input_mc *inputMc ) +{ + setZeroPanMatrix( inputMc->panGains ); + if ( inputMc->base.inConfig == IVAS_AUDIO_CONFIG_MONO ) + { + inputMc->panGains[0][0] = ( inputMc->nonDiegeticPanGain + 1.f ) * 0.5f; + inputMc->panGains[0][1] = 1.f - inputMc->panGains[0][0]; + } + else + { + /* stereo passthrough */ + inputMc->panGains[0][0] = 1.f; + inputMc->panGains[1][1] = 1.f; + } + + return IVAS_ERR_OK; +} +#endif static ivas_error updateMcPanGains( input_mc *inputMc, @@ -2293,6 +2360,15 @@ static ivas_error updateMcPanGains( error = updateMcPanGainsForAmbiOut( inputMc, outConfig ); break; case IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL: +#ifdef FIX_1466_EXTREND + if ( inputMc->base.inConfig == IVAS_AUDIO_CONFIG_MONO || inputMc->base.inConfig == IVAS_AUDIO_CONFIG_STEREO ) + { + error = updateMcPanGainsForBinauralOut( inputMc ); + break; + } + + /* not mono or stereo */ +#endif switch ( outConfig ) { case IVAS_AUDIO_CONFIG_BINAURAL: @@ -2351,6 +2427,13 @@ static ivas_error initMcBinauralRendering( int32_t binauralDelayNs; int32_t outSampleRate; int8_t useTDRend; +#ifdef FIX_1466_EXTREND + + if ( inputMc->base.inConfig == IVAS_AUDIO_CONFIG_MONO || inputMc->base.inConfig == IVAS_AUDIO_CONFIG_STEREO ) + { + return IVAS_ERR_OK; + } +#endif /* Allocate TD binaural renderer for custom loudspeaker layouts (regardless of headrotation) or planar MC layouts with headrotation, CREND for the rest */ @@ -6246,6 +6329,27 @@ static ivas_error renderActiveInputsIsm( return IVAS_ERR_OK; } +#ifdef FIX_1466_EXTREND +static void renderMonoStereoToBinaural( + const input_mc *mcInput, + IVAS_REND_AudioBuffer outAudio ) +{ + int16_t i; + IVAS_REND_AudioBuffer inAudio; + + push_wmops( "renderMonoStereoToBinaural" ); + inAudio = mcInput->base.inputBuffer; + + for ( i = 0; i < inAudio.config.numChannels; ++i ) + { + renderBufferChannel( inAudio, i, mcInput->panGains[i], outAudio ); + } + + pop_wmops(); + + return; +} +#endif static ivas_error renderLfeToBinaural( const input_mc *mcInput, @@ -6846,6 +6950,15 @@ static ivas_error renderInputMc( renderMcToSba( mcInput, outAudio ); break; case IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL: +#ifdef FIX_1466_EXTREND + if ( mcInput->base.inConfig == IVAS_AUDIO_CONFIG_MONO || mcInput->base.inConfig == IVAS_AUDIO_CONFIG_STEREO ) + { + renderMonoStereoToBinaural( mcInput, outAudio ); + break; + } + + /* not mono or stereo */ +#endif switch ( outConfig ) { case IVAS_AUDIO_CONFIG_BINAURAL: -- GitLab From dd53c4749f076cd2e6920d4d343f40380480859b Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Wed, 3 Dec 2025 16:28:48 +0100 Subject: [PATCH 2/9] [CI] enable renderer tests for mono/stereo upmix --- tests/renderer/test_renderer.py | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/tests/renderer/test_renderer.py b/tests/renderer/test_renderer.py index d12cb47b19..48892f1fd2 100644 --- a/tests/renderer/test_renderer.py +++ b/tests/renderer/test_renderer.py @@ -208,9 +208,6 @@ def test_dynamic_acoustic_environment( aeid, split_comparison, ): - if in_fmt in ["MONO", "STEREO"]: - pytest.skip("MONO or STEREO to Binaural rendering unsupported") - rend_config_path = TEST_VECTOR_DIR.joinpath("rend_config_combined.cfg") rend_config_path.with_stem("rend_config") @@ -263,9 +260,6 @@ def test_dynamic_acoustic_environment_file( get_odg_bin, split_comparison, ): - if in_fmt in ["MONO", "STEREO"]: - pytest.skip("MONO or STEREO to Binaural rendering unsupported") - rend_config_path = TEST_VECTOR_DIR.joinpath("rend_config_combined.cfg") rend_config_path.with_stem("rend_config") @@ -350,9 +344,6 @@ def test_multichannel_binaural_static( get_odg_bin, split_comparison, ): - if in_fmt in ["MONO", "STEREO"]: - pytest.skip("MONO or STEREO to Binaural rendering unsupported") - run_renderer( record_property, props_to_record, @@ -392,9 +383,6 @@ def test_multichannel_binaural_headrotation( get_odg_bin, split_comparison, ): - if in_fmt in ["MONO", "STEREO"]: - pytest.skip("MONO or STEREO to Binaural rendering unsupported") - run_renderer( record_property, props_to_record, @@ -1569,9 +1557,6 @@ def test_multichannel_binaural_headrotation_refvec_rotating( if test_info.config.option.create_ref or test_info.config.option.create_cut: pytest.skip("OTR tests only run for smoke test") - if in_fmt in ["MONO", "STEREO"]: - pytest.skip("MONO or STEREO to Binaural rendering unsupported") - compare_renderer_args( record_property, props_to_record, -- GitLab From 3978415a6d2d98c0ae2e39a6d51f85b40a0955f7 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Wed, 3 Dec 2025 16:29:02 +0100 Subject: [PATCH 3/9] [CI] add mono/stereo upmix tests to ivas_modes.json --- scripts/config/ivas_modes.json | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/scripts/config/ivas_modes.json b/scripts/config/ivas_modes.json index 72941df459..af96830e05 100644 --- a/scripts/config/ivas_modes.json +++ b/scripts/config/ivas_modes.json @@ -8,7 +8,20 @@ "{bandwidth}" ], "dec": { - "MONO": [] + "MONO": [], + "STEREO": [], + "5_1": [], + "5_1_2": [], + "5_1_4": [], + "7_1": [], + "7_1_4": [], + "BINAURAL": [], + "BINAURAL_ROOM_IR": [], + "BINAURAL_ROOM_REVERB": [], + "EXT": [], + "FOA": [], + "HOA2": [], + "HOA3": [] }, "in_config": "MONO", "table_name": "Mono@{table_bitrate} kbps {bandwidth}", @@ -4334,7 +4347,13 @@ "5_1": [], "mono": [], "stereo": [], - "EXT": [] + "EXT": [], + "BINAURAL": [], + "BINAURAL_ROOM_IR": [], + "BINAURAL_ROOM_REVERB": [], + "FOA": [], + "HOA2": [], + "HOA3": [] }, "in_config": "STEREO", "table_name": "Stereo@{table_bitrate} kbps {bandwidth}", -- GitLab From bcf810c8a312c58024ede4295d9af071c9e0d586 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Wed, 3 Dec 2025 16:52:53 +0100 Subject: [PATCH 4/9] patch IvasModeRunner.py to add -evs option and support EVS output formats --- scripts/pyivastest/IvasModeRunner.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/pyivastest/IvasModeRunner.py b/scripts/pyivastest/IvasModeRunner.py index 1251f10586..a0883688b9 100644 --- a/scripts/pyivastest/IvasModeRunner.py +++ b/scripts/pyivastest/IvasModeRunner.py @@ -297,8 +297,9 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): self.logger.error("Exception in ivas_dec_thread(): " + str(e)) return - if not config["mono"]: - dec_options.extend([output_config]) + if config["mono"]: + dec_options.extend(["-evs"]) + dec_options.extend([output_config]) dec_options = [ x.format(dec_file_name=dec_file_name) if "{dec_file_name}" in x else x for x in dec_options -- GitLab From 5775172dea5f12ccff81136ddf8cef58178d83ac Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Thu, 4 Dec 2025 11:27:27 +0100 Subject: [PATCH 5/9] split off mono upmix into separate key in ivas_modes.json + format IvasModeRunner.py --- scripts/config/ivas_modes.json | 71 ++++++++++++++++++++++++---- scripts/pyivastest/IvasModeRunner.py | 61 ++++++++++++++++-------- 2 files changed, 103 insertions(+), 29 deletions(-) diff --git a/scripts/config/ivas_modes.json b/scripts/config/ivas_modes.json index af96830e05..ff4728ec66 100644 --- a/scripts/config/ivas_modes.json +++ b/scripts/config/ivas_modes.json @@ -8,7 +8,66 @@ "{bandwidth}" ], "dec": { - "MONO": [], + "MONO": [] + }, + "in_config": "MONO", + "table_name": "Mono@{table_bitrate} kbps {bandwidth}", + "nummetadata": 0, + "metadatafilenames": [], + "rs": false, + "amr": false, + "mono": true, + "bitrates": { + "nb": [ + 7200, + 8000, + 9600, + 13200, + 16400, + 24400 + ], + "wb": [ + 7200, + 8000, + 9600, + 13200, + 16400, + 24400, + 32000, + 48000, + 64000, + 96000, + 128000 + ], + "swb": [ + 9600, + 13200, + 16400, + 24400, + 32000, + 48000, + 64000, + 96000, + 128000 + ], + "fb": [ + 16400, + 24400, + 32000, + 48000, + 64000, + 96000, + 128000 + ] + } + }, + "mono_upmix_b{bitrate}_{bandwidth}_cbr": { + "encmodeoption": [], + "encoptions": [ + "-max_band", + "{bandwidth}" + ], + "dec": { "STEREO": [], "5_1": [], "5_1_2": [], @@ -24,21 +83,13 @@ "HOA3": [] }, "in_config": "MONO", - "table_name": "Mono@{table_bitrate} kbps {bandwidth}", + "table_name": "Mono Upmix@{table_bitrate} kbps {bandwidth}", "nummetadata": 0, "metadatafilenames": [], "rs": false, "amr": false, "mono": true, "bitrates": { - "nb": [ - 7200, - 8000, - 9600, - 13200, - 16400, - 24400 - ], "wb": [ 7200, 8000, diff --git a/scripts/pyivastest/IvasModeRunner.py b/scripts/pyivastest/IvasModeRunner.py index a0883688b9..fea9e8bfde 100644 --- a/scripts/pyivastest/IvasModeRunner.py +++ b/scripts/pyivastest/IvasModeRunner.py @@ -245,7 +245,10 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): with self.lock: if self.stats: if not self.run_encoder: - if config["config"]["num_dec_remaining"] == config["config"]["num_dec"]: + if ( + config["config"]["num_dec_remaining"] + == config["config"]["num_dec"] + ): self.stats["num_modes_running"] += 1 self.stats["num_decs_running"] += 1 config["config"]["num_dec_remaining"] -= 1 @@ -297,16 +300,27 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): self.logger.error("Exception in ivas_dec_thread(): " + str(e)) return - if config["mono"]: + if config["mono"] and output_config.lower() != "mono": dec_options.extend(["-evs"]) - dec_options.extend([output_config]) + + # additional output configs for mono only supported for WB and above + if not config["mono"] or ( + config["mono"] and config["config"]["cmd"]["bw"] != "nb" + ): + dec_options.extend([output_config]) dec_options = [ - x.format(dec_file_name=dec_file_name) if "{dec_file_name}" in x else x + ( + x.format(dec_file_name=dec_file_name) + if "{dec_file_name}" in x + else x + ) for x in dec_options if x != [] ] enc_file_name = config["enc_file_name"] - self.logger.info("Decoding {} to {}".format(enc_file_name, dec_file_name)) + self.logger.info( + "Decoding {} to {}".format(enc_file_name, dec_file_name) + ) if self.test_tool != "": dec_cmd = ( self.test_tool @@ -454,7 +468,9 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): if isinstance(in_file_name, list): metadata_file_names = in_file_name[1:] in_file_name = in_file_name[0] - self.logger.info("Encoding Mode {} input file {}".format(mode, in_file_name)) + self.logger.info( + "Encoding Mode {} input file {}".format(mode, in_file_name) + ) with self.lock: if self.stats: @@ -539,12 +555,8 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): ) ) - pcm_log_name_tmp = "".join( - [pcm_base_name, constants.LOG_FILE_EXT] - ) - pcm_log_name = os.path.join( - self.dir_name, "logs", pcm_log_name_tmp - ) + pcm_log_name_tmp = "".join([pcm_base_name, constants.LOG_FILE_EXT]) + pcm_log_name = os.path.join(self.dir_name, "logs", pcm_log_name_tmp) with open(pcm_log_name, "w") as pcm_log: pcm_name_res_tmp = pcm_name + ".res.wav" @@ -595,8 +607,8 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): cut_len_samples = end_time_samples - start_time_samples if ( - cut_len_samples + start_time_samples < in_len - or start_time_samples > 0 + cut_len_samples + start_time_samples < in_len + or start_time_samples > 0 ): end_time_samples = min(end_time_samples, in_len) sig = ar.cut( @@ -768,7 +780,9 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): if error == 0 and "bitstream_processing" in enc_dec_cmd: bs_in_file = enc_file_name - proc_chain = deepcopy(enc_dec_cmd["bitstream_processing"]["proc_chain"]) + proc_chain = deepcopy( + enc_dec_cmd["bitstream_processing"]["proc_chain"] + ) for processing in proc_chain: suffix = processing.pop() bs_out_file = ".".join( @@ -824,7 +838,9 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): os.remove(pcm_name) self.logger.console( - "Exception when encoding item {}: {}".format(enc_file_name, str(exc)), + "Exception when encoding item {}: {}".format( + enc_file_name, str(exc) + ), logging.ERROR, ) self.logger.console( @@ -842,7 +858,10 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): if not self.run_decoder: self.stats["num_modes_running"] -= 1 self.stats["num_modes_finished"] -= 1 - if self.enc_queue["num_modes_enc"] == self.enc_queue["num_modes_enc_done"]: + if ( + self.enc_queue["num_modes_enc"] + == self.enc_queue["num_modes_enc_done"] + ): self.dec_queue["all_encoded"] = True self.stats["num_encs_finished"] += 1 self.stats["num_encs_running"] -= 1 @@ -1207,7 +1226,9 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): ] enc_log.write(" ".join(proc_cmd)) - proc_result = subprocess.run(proc_cmd, capture_output=True, text=True) + proc_result = subprocess.run( + proc_cmd, capture_output=True, text=True + ) enc_log.write(proc_result.stderr) enc_log.write(proc_result.stdout) error = proc_result.returncode @@ -1225,7 +1246,9 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): bs_in_file = bs_out_file except Exception as exc: self.logger.error( - "Exception processing bitstream {}: {}".format(enc_file_name, str(exc)) + "Exception processing bitstream {}: {}".format( + enc_file_name, str(exc) + ) ) self.logger.error("failed command: {}".format(" ".join(proc_cmd))) self.logger.error( -- GitLab From fcfb971eb07d7a1b95ba50347ec56b5303ea28a6 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Thu, 4 Dec 2025 12:32:57 +0100 Subject: [PATCH 6/9] [fix] if condition in IvasModeRunner.py --- scripts/pyivastest/IvasModeRunner.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/scripts/pyivastest/IvasModeRunner.py b/scripts/pyivastest/IvasModeRunner.py index fea9e8bfde..1aa44078fd 100644 --- a/scripts/pyivastest/IvasModeRunner.py +++ b/scripts/pyivastest/IvasModeRunner.py @@ -302,12 +302,10 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): if config["mono"] and output_config.lower() != "mono": dec_options.extend(["-evs"]) - - # additional output configs for mono only supported for WB and above - if not config["mono"] or ( - config["mono"] and config["config"]["cmd"]["bw"] != "nb" - ): dec_options.extend([output_config]) + elif not config["mono"]: + dec_options.extend([output_config]) + dec_options = [ ( x.format(dec_file_name=dec_file_name) -- GitLab From 7dc4826d5bfe1660c981381d2f645f68b4cf590b Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 5 Dec 2025 12:05:06 +0100 Subject: [PATCH 7/9] [fix] add leftovers from FIX_1435_MOVE_STEREO_PANNING --- lib_dec/ivas_output_config.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib_dec/ivas_output_config.c b/lib_dec/ivas_output_config.c index 14a56f8adf..54b6426e05 100644 --- a/lib_dec/ivas_output_config.c +++ b/lib_dec/ivas_output_config.c @@ -228,9 +228,17 @@ void ivas_renderer_select( * Non-binaural rendering configurations *-----------------------------------------------------------------*/ +#ifdef FIX_1435_MOVE_STEREO_PANNING + else if ( st_ivas->ivas_format == MONO_FORMAT || st_ivas->ivas_format == STEREO_FORMAT ) +#else else if ( st_ivas->ivas_format == MONO_FORMAT ) +#endif { +#ifdef FIX_1435_MOVE_STEREO_PANNING + if ( st_ivas->ivas_format == MONO_FORMAT && output_config == IVAS_AUDIO_CONFIG_STEREO ) +#else if ( output_config == IVAS_AUDIO_CONFIG_STEREO ) +#endif { *renderer_type = RENDERER_NON_DIEGETIC_DOWNMIX; } @@ -238,6 +246,12 @@ void ivas_renderer_select( { *renderer_type = RENDERER_MC; } +#ifdef FIX_1435_MOVE_STEREO_PANNING + else if ( output_config == IVAS_AUDIO_CONFIG_FOA || output_config == IVAS_AUDIO_CONFIG_HOA2 || output_config == IVAS_AUDIO_CONFIG_HOA3 ) + { + *renderer_type = RENDERER_SBA_LINEAR_ENC; + } +#endif } else if ( st_ivas->ivas_format == ISM_FORMAT ) { -- GitLab From 039bc7bc971c07575e85e6fbdda1bb1003aeaac0 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 5 Dec 2025 12:14:57 +0100 Subject: [PATCH 8/9] [fix] set RENDERER_SBA_LINEAR_ENC only for stereo upmix --- lib_dec/ivas_output_config.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib_dec/ivas_output_config.c b/lib_dec/ivas_output_config.c index 54b6426e05..09fa8052f1 100644 --- a/lib_dec/ivas_output_config.c +++ b/lib_dec/ivas_output_config.c @@ -247,7 +247,8 @@ void ivas_renderer_select( *renderer_type = RENDERER_MC; } #ifdef FIX_1435_MOVE_STEREO_PANNING - else if ( output_config == IVAS_AUDIO_CONFIG_FOA || output_config == IVAS_AUDIO_CONFIG_HOA2 || output_config == IVAS_AUDIO_CONFIG_HOA3 ) + else if ( st_ivas->ivas_format == STEREO_FORMAT && + ( output_config == IVAS_AUDIO_CONFIG_FOA || output_config == IVAS_AUDIO_CONFIG_HOA2 || output_config == IVAS_AUDIO_CONFIG_HOA3 ) ) { *renderer_type = RENDERER_SBA_LINEAR_ENC; } -- GitLab From 2dc5aeb1fa47e39d98d1a992f18e452f25a26341 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Tue, 9 Dec 2025 13:52:50 +0100 Subject: [PATCH 9/9] revert changes to test_renderer.py --- tests/renderer/test_renderer.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/renderer/test_renderer.py b/tests/renderer/test_renderer.py index 48892f1fd2..d12cb47b19 100644 --- a/tests/renderer/test_renderer.py +++ b/tests/renderer/test_renderer.py @@ -208,6 +208,9 @@ def test_dynamic_acoustic_environment( aeid, split_comparison, ): + if in_fmt in ["MONO", "STEREO"]: + pytest.skip("MONO or STEREO to Binaural rendering unsupported") + rend_config_path = TEST_VECTOR_DIR.joinpath("rend_config_combined.cfg") rend_config_path.with_stem("rend_config") @@ -260,6 +263,9 @@ def test_dynamic_acoustic_environment_file( get_odg_bin, split_comparison, ): + if in_fmt in ["MONO", "STEREO"]: + pytest.skip("MONO or STEREO to Binaural rendering unsupported") + rend_config_path = TEST_VECTOR_DIR.joinpath("rend_config_combined.cfg") rend_config_path.with_stem("rend_config") @@ -344,6 +350,9 @@ def test_multichannel_binaural_static( get_odg_bin, split_comparison, ): + if in_fmt in ["MONO", "STEREO"]: + pytest.skip("MONO or STEREO to Binaural rendering unsupported") + run_renderer( record_property, props_to_record, @@ -383,6 +392,9 @@ def test_multichannel_binaural_headrotation( get_odg_bin, split_comparison, ): + if in_fmt in ["MONO", "STEREO"]: + pytest.skip("MONO or STEREO to Binaural rendering unsupported") + run_renderer( record_property, props_to_record, @@ -1557,6 +1569,9 @@ def test_multichannel_binaural_headrotation_refvec_rotating( if test_info.config.option.create_ref or test_info.config.option.create_cut: pytest.skip("OTR tests only run for smoke test") + if in_fmt in ["MONO", "STEREO"]: + pytest.skip("MONO or STEREO to Binaural rendering unsupported") + compare_renderer_args( record_property, props_to_record, -- GitLab