From a2befffac66384a342e237b0eeec5a7c8b1fe7bf Mon Sep 17 00:00:00 2001 From: Vidhya V P <100825@ittiam.com> Date: Thu, 17 Aug 2023 10:38:26 +0530 Subject: [PATCH 1/7] Resolving the issue #715 --- lib_com/options.h | 1 + 1 file changed, 1 insertion(+) diff --git a/lib_com/options.h b/lib_com/options.h index b556709497..2a4b93c9cc 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -156,6 +156,7 @@ #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*/ #define OSBA_SPLIT_RENDERING +#define ROM_TO_RAM #endif -- GitLab From 730b1cbe4324c6ea5d8bd572771681f002c0bb93 Mon Sep 17 00:00:00 2001 From: Vidhya V P <100825@ittiam.com> Date: Thu, 17 Aug 2023 16:20:05 +0530 Subject: [PATCH 2/7] Minor change to resolve a compilation warning --- lib_rend/ivas_lcld_decoder.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_rend/ivas_lcld_decoder.c b/lib_rend/ivas_lcld_decoder.c index 7e9734e763..46c8c24838 100644 --- a/lib_rend/ivas_lcld_decoder.c +++ b/lib_rend/ivas_lcld_decoder.c @@ -701,7 +701,7 @@ void DeleteLCLDDecoder( LCLDDecoder *psLCLDDecoder ) } #ifdef ROM_TO_RAM - for ( uint32_t n = 0; n < ALLOC_TABLE_SIZE * 2; n++ ) + for ( n = 0; n < ALLOC_TABLE_SIZE * 2; n++ ) { if ( psLCLDDecoder->num_decode_table[n] > 1 ) { -- GitLab From b58f0a070d298c2b0afe4258c301655e44c85e0a Mon Sep 17 00:00:00 2001 From: Ke Zhao Date: Fri, 18 Aug 2023 15:00:03 +1000 Subject: [PATCH 3/7] Add split rendering full-chain OSBA BE tests --- tests/renderer/constants.py | 12 ++++++ tests/split_rendering/README.md | 5 ++- tests/split_rendering/constants.py | 39 ++++++++++--------- tests/split_rendering/test_split_rendering.py | 8 +++- .../test_split_rendering_be_comparison.py | 23 +++++++++++ tests/split_rendering/utils.py | 15 ++++--- 6 files changed, 75 insertions(+), 27 deletions(-) diff --git a/tests/renderer/constants.py b/tests/renderer/constants.py index 499c432973..9df5bdac56 100644 --- a/tests/renderer/constants.py +++ b/tests/renderer/constants.py @@ -130,6 +130,18 @@ FORMAT_TO_FILE_COMPARETEST = { "ISM4": TESTV_DIR.joinpath("stv4ISM48s.wav"), "MASA1": TESTV_DIR.joinpath("stv1MASA1TC48c.wav"), "MASA2": TESTV_DIR.joinpath("stv2MASA2TC48c.wav"), + "OSBA_1_1": TESTV_DIR.joinpath("stvOSBA_1ISM_FOA48c.wav"), + "OSBA_1_2": TESTV_DIR.joinpath("stvOSBA_1ISM_2OA48c.wav"), + "OSBA_1_3": TESTV_DIR.joinpath("stvOSBA_1ISM_3OA48c.wav"), + "OSBA_2_1": TESTV_DIR.joinpath("stvOSBA_2ISM_FOA48c.wav"), + "OSBA_2_2": TESTV_DIR.joinpath("stvOSBA_2ISM_2OA48c.wav"), + "OSBA_2_3": TESTV_DIR.joinpath("stvOSBA_2ISM_3OA48c.wav"), + "OSBA_3_1": TESTV_DIR.joinpath("stvOSBA_3ISM_FOA48c.wav"), + "OSBA_3_2": TESTV_DIR.joinpath("stvOSBA_3ISM_2OA48c.wav"), + "OSBA_3_3": TESTV_DIR.joinpath("stvOSBA_3ISM_3OA48c.wav"), + "OSBA_4_1": TESTV_DIR.joinpath("stvOSBA_4ISM_FOA48c.wav"), + "OSBA_4_2": TESTV_DIR.joinpath("stvOSBA_4ISM_2OA48c.wav"), + "OSBA_4_3": TESTV_DIR.joinpath("stvOSBA_4ISM_3OA48c.wav"), "META": TEST_VECTOR_DIR.joinpath("mixed_scene.txt"), "16ch_8+4+4": TESTV_DIR.joinpath("stv3OA48c.wav"), "4d4": TESTV_DIR.joinpath("stv71MC48c.wav"), diff --git a/tests/split_rendering/README.md b/tests/split_rendering/README.md index 7ac5d1c981..d50bc56496 100644 --- a/tests/split_rendering/README.md +++ b/tests/split_rendering/README.md @@ -41,18 +41,21 @@ The tests cover the following IVAS formats: * Multi-Channel * ISM * MASA +* OSBA The tests include both split rendering operating modes: * Full chain: encoder, decoder, external renderer * External: external renderer only -Note: MASA format only supports the full chain split rendering mode. +Note: OSBA format only supports the full chain split rendering mode. Furthermore, the tests iterate over the following parameters: * Renderer config file which specifies DoF (degrees of freedom), split rendering bitrate, and split rendering codec * Trajectory file * Encoder/decoder bitrate (only for full-chain split rendering mode) +Some PLC and BINAURAL_SPLIT_PCM tests are also implemented. + ## Directory Structure ``` diff --git a/tests/split_rendering/constants.py b/tests/split_rendering/constants.py index 7ec9abc662..2c0af34ade 100644 --- a/tests/split_rendering/constants.py +++ b/tests/split_rendering/constants.py @@ -82,6 +82,9 @@ RENDERER_CONFIGS_TO_TEST_ISM = ( RENDERER_CONFIGS_TO_TEST_MASA = ( RENDERER_CONFIGS_DEFAULT_CODEC + RENDERER_CONFIGS_LC3PLUS_CODEC ) +RENDERER_CONFIGS_TO_TEST_OSBA = ( + RENDERER_CONFIGS_DEFAULT_CODEC + RENDERER_CONFIGS_LC3PLUS_CODEC +) RENDERER_CONFIGS_TO_TEST_PLC = RENDERER_CONFIGS_FASTCONV_RENDERER """ Trajectories """ @@ -107,36 +110,34 @@ FORMAT_TO_IVAS_COD_FORMAT = { "HOA3": ["-sba", "3"], "MASA1": ["-masa", "1"], "MASA2": ["-masa", "2"], -} - -FORMAT_TO_NCHAN = { - "MONO": 1, - "STEREO": 2, - "ISM1": 1, - "ISM2": 2, - "ISM3": 3, - "ISM4": 4, - "5_1": 6, - "5_1_2": 8, - "5_1_4": 10, - "7_1": 8, - "7_1_4": 12, - "FOA": 4, - "HOA2": 9, - "HOA3": 16, - "MASA1": 1, - "MASA2": 2, + "OSBA_1_1": ["-ism_sba", "1", "1"], + "OSBA_1_2": ["-ism_sba", "1", "2"], + "OSBA_1_3": ["-ism_sba", "1", "3"], + "OSBA_2_1": ["-ism_sba", "2", "1"], + "OSBA_2_2": ["-ism_sba", "2", "2"], + "OSBA_2_3": ["-ism_sba", "2", "3"], + "OSBA_3_1": ["-ism_sba", "3", "1"], + "OSBA_3_2": ["-ism_sba", "3", "2"], + "OSBA_3_3": ["-ism_sba", "3", "3"], + "OSBA_4_1": ["-ism_sba", "4", "1"], + "OSBA_4_2": ["-ism_sba", "4", "2"], + "OSBA_4_3": ["-ism_sba", "4", "3"], } INPUT_FORMATS_AMBI_SPLIT_REND = ["FOA", "HOA3"] INPUT_FORMATS_MC_SPLIT_REND = ["5_1", "7_1_4"] INPUT_FORMATS_ISM_SPLIT_REND = ["ISM4"] INPUT_FORMATS_MASA_SPLIT_REND = ["MASA2"] +INPUT_FORMATS_OSBA_SPLIT_REND = [ + "OSBA_1_1", + "OSBA_4_3", +] # number of ISM objects, then SBA order IVAS_BITRATES_AMBI = ["80000", "512000"] IVAS_BITRATES_MC = ["128000", "160000", "384000"] IVAS_BITRATES_ISM = ["128000"] IVAS_BITRATES_MASA = ["24400", "128000"] +IVAS_BITRATES_OSBA = ["256000", "512000"] IVAS_MAX_ISM_BITRATE = { "1": "128000", diff --git a/tests/split_rendering/test_split_rendering.py b/tests/split_rendering/test_split_rendering.py index d6b959b572..8717f44bd1 100644 --- a/tests/split_rendering/test_split_rendering.py +++ b/tests/split_rendering/test_split_rendering.py @@ -41,9 +41,13 @@ def check_xfail(test_info, in_fmt, render_config, bitrate=None): and "0dof" in render_config and ( "lc3plus" in render_config - or (in_fmt in INPUT_FORMATS_ISM_SPLIT_REND or in_fmt in INPUT_FORMATS_MC_SPLIT_REND) or ( - "external_split" in test_info.node.name and in_fmt in INPUT_FORMATS_AMBI_SPLIT_REND + in_fmt in INPUT_FORMATS_ISM_SPLIT_REND + or in_fmt in INPUT_FORMATS_MC_SPLIT_REND + ) + or ( + "external_split" in test_info.node.name + and in_fmt in INPUT_FORMATS_AMBI_SPLIT_REND ) # CREND for external renderer ambisonics rendering uses LC3plus by default ) ): diff --git a/tests/split_rendering/test_split_rendering_be_comparison.py b/tests/split_rendering/test_split_rendering_be_comparison.py index a300673660..d17bc94653 100644 --- a/tests/split_rendering/test_split_rendering_be_comparison.py +++ b/tests/split_rendering/test_split_rendering_be_comparison.py @@ -185,6 +185,29 @@ def test_masa_full_chain_split(test_info, in_fmt, bitrate, render_config, trajec ) +""" OSBA """ + + +@pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) +@pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_OSBA) +@pytest.mark.parametrize("bitrate", IVAS_BITRATES_OSBA) +@pytest.mark.parametrize("in_fmt", INPUT_FORMATS_OSBA_SPLIT_REND) +def test_osba_full_chain_split(test_info, in_fmt, bitrate, render_config, trajectory): + check_xfail(test_info, in_fmt, render_config, bitrate) + + post_trajectory = HR_TRAJECTORY_DIR.joinpath(f"{trajectory}.csv") + pre_trajectory = post_trajectory.with_stem(f"{post_trajectory.stem}_delayed") + + compare_full_chain_split_args( + test_info, + in_fmt=in_fmt, + bitrate=bitrate, + render_config=RENDER_CFG_DIR.joinpath(f"{render_config}.txt"), + pre_trajectory=pre_trajectory, + post_trajectory=post_trajectory, + ) + + """ PLC """ diff --git a/tests/split_rendering/utils.py b/tests/split_rendering/utils.py index 8130b41467..b832591fee 100644 --- a/tests/split_rendering/utils.py +++ b/tests/split_rendering/utils.py @@ -72,7 +72,10 @@ def run_full_chain_split_rendering( ) # check for metadata files - if in_fmt.upper().startswith("ISM") or in_fmt.upper().startswith("MASA"): + if in_fmt.upper().startswith("OSBA"): + # use same MD as ISM + in_meta_files = FORMAT_TO_METADATA_FILES[f"ISM{in_fmt[5]}"] + elif in_fmt.upper().startswith("ISM") or in_fmt.upper().startswith("MASA"): in_meta_files = FORMAT_TO_METADATA_FILES[in_fmt] else: in_meta_files = None @@ -102,10 +105,10 @@ def run_full_chain_split_rendering( cmd[3] = str(FORMAT_TO_FILE_SMOKETEST[in_fmt]) cmd[4] = str(ivas_bitstream) - cmd[1:1] = FORMAT_TO_IVAS_COD_FORMAT[in_fmt] - if in_meta_files: - cmd[3:3] = in_meta_files + cmd[1:1] = in_meta_files + + cmd[1:1] = FORMAT_TO_IVAS_COD_FORMAT[in_fmt] run_cmd(cmd) @@ -166,7 +169,9 @@ def run_external_split_rendering( f"{in_fmt}_{renderer_fmt}_{pre_trajectory.stem}_split_ext_{post_trajectory.stem}_config_{render_config.stem}.wav" ) if plc_error_pattern: - out_file = out_file.with_stem(f"{out_file.stem}_plc_{plc_error_pattern.stem}") + out_file = out_file.with_stem( + f"{out_file.stem}_plc_{plc_error_pattern.stem}" + ) # check for metadata files if in_fmt.upper().startswith("ISM") or in_fmt.upper().startswith("MASA"): -- GitLab From c58578d7b0e44548e1306afb65ed7181c7d83122 Mon Sep 17 00:00:00 2001 From: Ke Zhao Date: Fri, 18 Aug 2023 15:03:13 +1000 Subject: [PATCH 4/7] Refactor test vector truncation for BE tests, and add truncation for external mode --- tests/split_rendering/utils.py | 46 +++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/tests/split_rendering/utils.py b/tests/split_rendering/utils.py index b832591fee..eab37c3c40 100644 --- a/tests/split_rendering/utils.py +++ b/tests/split_rendering/utils.py @@ -37,12 +37,31 @@ from typing import Tuple import numpy as np -from tests.cut_pcm import cut_samples from tests.renderer.utils import check_BE, run_cmd, test_info from tests.split_rendering.constants import * sys.path.append(SCRIPTS_DIR) -from pyaudio3dtools.audiofile import readfile +from pyaudio3dtools.audiofile import readfile, writefile + + +def truncate_signal( + in_file: Path, + out_file: Path, +) -> None: + """ + Truncate the signal in in_file to maximum INPUT_DURATION_SEC seconds, + and write the truncated signal to out_file + """ + data, fs = readfile(in_file) + + if data.ndim == 1: + data_out = data[: INPUT_DURATION_SEC * fs] + elif data.ndim == 2: + data_out = data[: INPUT_DURATION_SEC * fs, :] + else: + raise ValueError(f"Cannot truncate data with dimension of {data.ndim}") + + writefile(out_file, data_out, fs) def run_full_chain_split_rendering( @@ -86,21 +105,10 @@ def run_full_chain_split_rendering( cmd[0] += binary_suffix cmd[1] = bitrate if is_comparetest: - # Cut input if longer than INPUT_DURATION_SEC in_file = FORMAT_TO_FILE_COMPARETEST[in_fmt] - in_data, in_fs = readfile(in_file) - if len(in_data) > INPUT_DURATION_SEC * in_fs: - cut_samples( - in_file=in_file, - out_file=cut_in_file, - num_channels=FORMAT_TO_NCHAN[in_fmt], - sample_rate=in_fs, - start=0, - duration=INPUT_DURATION_SEC, - ) - cmd[3] = str(cut_in_file) - else: - cmd[3] = str(in_file) + truncate_signal(in_file, cut_in_file) + + cmd[3] = str(cut_in_file) else: cmd[3] = str(FORMAT_TO_FILE_SMOKETEST[in_fmt]) cmd[4] = str(ivas_bitstream) @@ -162,6 +170,7 @@ def run_external_split_rendering( with TemporaryDirectory() as tmp_dir: tmp_dir = Path(tmp_dir) + cut_in_file = tmp_dir.joinpath("cut_input.wav") split_bitstream = tmp_dir.joinpath("split.bit") if renderer_fmt == "BINAURAL_SPLIT_PCM": split_md_file = tmp_dir.joinpath("split_md.bin") @@ -184,7 +193,10 @@ def run_external_split_rendering( cmd[0] += binary_suffix cmd[4] = str(render_config) if is_comparetest: - cmd[6] = str(FORMAT_TO_FILE_COMPARETEST[in_fmt]) + in_file = FORMAT_TO_FILE_COMPARETEST[in_fmt] + truncate_signal(in_file, cut_in_file) + + cmd[6] = str(cut_in_file) else: cmd[6] = str(FORMAT_TO_FILE_SMOKETEST[in_fmt]) cmd[8] = in_fmt -- GitLab From 30ade6783760c25a46b416600ab13e709621a4b4 Mon Sep 17 00:00:00 2001 From: Ke Zhao Date: Fri, 18 Aug 2023 15:04:48 +1000 Subject: [PATCH 5/7] Add back MASA external mode tests, and enable MASA BINAURAL_SPLIT_PCM test --- tests/split_rendering/test_split_rendering.py | 22 ++++++++++++++++++- .../test_split_rendering_be_comparison.py | 20 +++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/tests/split_rendering/test_split_rendering.py b/tests/split_rendering/test_split_rendering.py index 8717f44bd1..51156ec7f8 100644 --- a/tests/split_rendering/test_split_rendering.py +++ b/tests/split_rendering/test_split_rendering.py @@ -216,6 +216,24 @@ def test_masa_full_chain_split(test_info, in_fmt, bitrate, render_config, trajec ) +@pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) +@pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_MASA) +@pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MASA_SPLIT_REND) +def test_masa_external_split(test_info, in_fmt, render_config, trajectory): + check_xfail(test_info, in_fmt, render_config) + + post_trajectory = HR_TRAJECTORY_DIR.joinpath(f"{trajectory}.csv") + pre_trajectory = post_trajectory.with_stem(f"{post_trajectory.stem}_delayed") + + run_external_split_rendering( + in_fmt=in_fmt, + render_config=RENDER_CFG_DIR.joinpath(f"{render_config}.txt"), + pre_trajectory=pre_trajectory, + post_trajectory=post_trajectory, + output_path_base=OUTPUT_PATH_CUT, + ) + + """ PLC """ @@ -246,9 +264,10 @@ full_chain_split_pcm_params = [ ("HOA3", "96000", "split_renderer_config_1dof_512k_default"), ("7_1_4", "512000", "split_renderer_config_3dofhq_512k_lc3plus"), ("ISM4", "384000", "split_renderer_config_2dof_768k_default"), - # ("MASA2", "256000", "split_renderer_config_3dof_384k_lcld"), + ("MASA2", "256000", "split_renderer_config_3dof_384k_lcld"), ] + @pytest.mark.parametrize("in_fmt,bitrate,render_config", full_chain_split_pcm_params) def test_full_chain_split_pcm(test_info, in_fmt, bitrate, render_config): check_xfail(test_info, in_fmt, render_config, bitrate) @@ -274,6 +293,7 @@ external_split_pcm_params = [ ("ISM1", "split_renderer_config_3dof_384k_lcld"), ] + @pytest.mark.parametrize("in_fmt,render_config", external_split_pcm_params) def test_external_split_pcm(test_info, in_fmt, render_config): check_xfail(test_info, in_fmt, render_config) diff --git a/tests/split_rendering/test_split_rendering_be_comparison.py b/tests/split_rendering/test_split_rendering_be_comparison.py index d17bc94653..957ed7f043 100644 --- a/tests/split_rendering/test_split_rendering_be_comparison.py +++ b/tests/split_rendering/test_split_rendering_be_comparison.py @@ -185,6 +185,24 @@ def test_masa_full_chain_split(test_info, in_fmt, bitrate, render_config, trajec ) +@pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) +@pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_MASA) +@pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MASA_SPLIT_REND) +def test_masa_external_split(test_info, in_fmt, render_config, trajectory): + check_xfail(test_info, in_fmt, render_config) + + post_trajectory = HR_TRAJECTORY_DIR.joinpath(f"{trajectory}.csv") + pre_trajectory = post_trajectory.with_stem(f"{post_trajectory.stem}_delayed") + + compare_external_split_args( + test_info, + in_fmt=in_fmt, + render_config=RENDER_CFG_DIR.joinpath(f"{render_config}.txt"), + pre_trajectory=pre_trajectory, + post_trajectory=post_trajectory, + ) + + """ OSBA """ @@ -241,6 +259,7 @@ full_chain_split_pcm_params = [ # ("MASA2", "256000", "split_renderer_config_3dof_384k_lcld"), ] + @pytest.mark.parametrize("in_fmt,bitrate,render_config", full_chain_split_pcm_params) def test_full_chain_split_pcm(test_info, in_fmt, bitrate, render_config): check_xfail(test_info, in_fmt, render_config, bitrate) @@ -266,6 +285,7 @@ external_split_pcm_params = [ ("ISM1", "split_renderer_config_3dof_384k_lcld"), ] + @pytest.mark.parametrize("in_fmt,render_config", external_split_pcm_params) def test_external_split_pcm(test_info, in_fmt, render_config): check_xfail(test_info, in_fmt, render_config) -- GitLab From 2ede4fa3cb92a40d90ef4bb9f3330a28feb53aa6 Mon Sep 17 00:00:00 2001 From: rtyag Date: Mon, 21 Aug 2023 17:58:31 +1000 Subject: [PATCH 6/7] fix for head rotation time resolution in MC and MASA SR mode --- lib_rend/lib_rend.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index 96f2d4952a..0006a2fe2b 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -7323,6 +7323,9 @@ static ivas_error renderMcToSplitBinaural( /* copy input to tdrend input/output buffer */ copyBufferTo2dArray( mcInput->base.inputBuffer, tmpRendBuffer ); + /* perform rotation in source format to tmpRotBuffer */ + pCombinedOrientationDataLocal = &combinedOrientationDataLocal; + /* Render */ if ( ( error = ivas_td_binaural_renderer_ext( ( pos_idx == 0 ) ? &mcInput->tdRendWrapper : &mcInput->splitTdRendWrappers[pos_idx - 1], mcInput->base.inConfig, @@ -8747,6 +8750,30 @@ static void renderMasaToBinaural( copyBufferTo2dArray( masaInput->base.inputBuffer, tmpBuffer_buff ); copyMasaMetadataToDiracRenderer( &masaInput->masaMetadata, masaInput->decDummy->hSpatParamRendCom ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( is_split_rend_mode ) + { + int16_t sf, i, j; + COMBINED_ORIENTATION_HANDLE pCombinedOrientationData; + pCombinedOrientationData = *masaInput->base.ctx.pCombinedOrientationData; +#ifdef API_5MS + for ( sf = 1; sf < pCombinedOrientationData->num_subframes; sf++ ) +#else + for ( sf = 1; sf < RENDERER_HEAD_POSITIONS_PER_FRAME; sf++ ) +#endif + { + pCombinedOrientationData->Quaternions[sf] = pCombinedOrientationData->Quaternions[0]; + for ( i = 0; i < 3; i++ ) + { + for ( j = 0; j < 3; j++ ) + { + pCombinedOrientationData->Rmat[sf][i][j] = pCombinedOrientationData->Rmat[0][i][j]; + } + } + } + } +#endif + ivas_dirac_dec_binaural( masaInput->decDummy, *masaInput->base.ctx.pCombinedOrientationData, tmpBuffer, masaInput->base.inputBuffer.config.numChannels #ifdef API_5MS , -- GitLab From f0da9f893b35a88ee2fb7fc3f7d477d0a7388cb1 Mon Sep 17 00:00:00 2001 From: rtyag Date: Tue, 22 Aug 2023 14:05:06 +1000 Subject: [PATCH 7/7] add switch for new changes --- lib_com/options.h | 3 ++- lib_rend/lib_rend.c | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index c60a9663e5..1d06badc00 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -156,7 +156,8 @@ #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*/ #define OSBA_SPLIT_RENDERING -#define ROM_TO_RAM +#define ROM_TO_RAM /*Dlb : ROM optimization in SR mode*/ +#define FIX_712_713_SPLIT_REND_MASA_MC /*Dlb : Fix for issue 712 and 713*/ #endif /* ### API_5MS switches start ### */ diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index 0006a2fe2b..863497f1f2 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -7323,8 +7323,10 @@ static ivas_error renderMcToSplitBinaural( /* copy input to tdrend input/output buffer */ copyBufferTo2dArray( mcInput->base.inputBuffer, tmpRendBuffer ); +#ifdef FIX_712_713_SPLIT_REND_MASA_MC /* perform rotation in source format to tmpRotBuffer */ pCombinedOrientationDataLocal = &combinedOrientationDataLocal; +#endif /* Render */ if ( ( error = ivas_td_binaural_renderer_ext( ( pos_idx == 0 ) ? &mcInput->tdRendWrapper : &mcInput->splitTdRendWrappers[pos_idx - 1], @@ -8750,7 +8752,7 @@ static void renderMasaToBinaural( copyBufferTo2dArray( masaInput->base.inputBuffer, tmpBuffer_buff ); copyMasaMetadataToDiracRenderer( &masaInput->masaMetadata, masaInput->decDummy->hSpatParamRendCom ); -#ifdef SPLIT_REND_WITH_HEAD_ROT +#ifdef FIX_712_713_SPLIT_REND_MASA_MC if ( is_split_rend_mode ) { int16_t sf, i, j; -- GitLab