From 33a9424bd1d67305f7b8d40df3a62be5031c64c2 Mon Sep 17 00:00:00 2001 From: Tapani Pihlajakuja Date: Fri, 25 Aug 2023 12:24:25 +0000 Subject: [PATCH 1/4] Fix issue 740 by correcting validity check --- lib_com/options.h | 2 +- lib_rend/lib_rend.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index be3261f808..38434e36b5 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -167,7 +167,7 @@ #define FIX_718_JBM_MD_UDPATE /* Fhg: fix issue #718, wrong setting of the update flag in the TD obj renderer in the JBM path */ #define FIX_719_CRASH_IN_CLEANUP /* VA: issue 719: fix Decoder crash after call to goto to cleanup */ - +#define FIX_740_MASA_PREREND_VALIDITY_CHECK /* Nokia: issue 740: fix incorrect validity check in lib_rend to allow use of MASA prerenderer */ /* ################## End BE DEVELOPMENT switches ######################### */ diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index 96f2d4952a..1b73b0314b 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -574,6 +574,10 @@ static ivas_error validateOutputAudioConfig( #endif case AUDIO_CONFIG_BINAURAL_ROOM_IR: case AUDIO_CONFIG_BINAURAL_ROOM_REVERB: +#ifdef FIX_740_MASA_PREREND_VALIDITY_CHECK + case AUDIO_CONFIG_MASA1: + case AUDIO_CONFIG_MASA2: +#endif return IVAS_ERR_OK; default: break; -- GitLab From 63733a5032b8feb135094e1a87cfa981b3529310 Mon Sep 17 00:00:00 2001 From: Lauros Pajunen Date: Fri, 20 Oct 2023 14:55:08 +0300 Subject: [PATCH 2/4] Add test for MASA pre-renderer - Add MASA pre-renderer test to test_renderer_be_comparison.py - Modify run_renderer() to return output file name string. This makes it possible to retrieve the output metadata file name outside the function. --- scripts/testv/mixed_mc714_foa_masa2_ism4.wav | 3 ++ tests/renderer/constants.py | 1 + .../data/mixed_mc714_foa_masa2_ism4.txt | 24 ++++++++++ tests/renderer/test_renderer_be_comparison.py | 10 ++++ tests/renderer/utils.py | 46 ++++++++++++++++--- 5 files changed, 77 insertions(+), 7 deletions(-) create mode 100644 scripts/testv/mixed_mc714_foa_masa2_ism4.wav create mode 100644 tests/renderer/data/mixed_mc714_foa_masa2_ism4.txt diff --git a/scripts/testv/mixed_mc714_foa_masa2_ism4.wav b/scripts/testv/mixed_mc714_foa_masa2_ism4.wav new file mode 100644 index 0000000000..c680493c22 --- /dev/null +++ b/scripts/testv/mixed_mc714_foa_masa2_ism4.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:900feffb59cec3a831c23b07e6f2f305e74d382c4d64903e65cd7cc321bd7083 +size 6336044 diff --git a/tests/renderer/constants.py b/tests/renderer/constants.py index 5ecc36b98b..a629983edf 100644 --- a/tests/renderer/constants.py +++ b/tests/renderer/constants.py @@ -196,6 +196,7 @@ CUSTOM_LS_TO_TEST = [ """ Mixed scene ( metadata ) rendering """ METADATA_SCENES_TO_TEST = ["mixed_scene", "mixed_scene_simple"] METADATA_SCENES_TO_TEST_NO_BE = ["masa_scene"] +METADATA_SCENES_TO_TEST_MASA_PREREND = ["mixed_mc714_foa_masa2_ism4"] """ Binaural rendering """ OUTPUT_FORMATS_BINAURAL = ["BINAURAL", "BINAURAL_ROOM_IR", "BINAURAL_ROOM_REVERB"] diff --git a/tests/renderer/data/mixed_mc714_foa_masa2_ism4.txt b/tests/renderer/data/mixed_mc714_foa_masa2_ism4.txt new file mode 100644 index 0000000000..e29dabb46c --- /dev/null +++ b/tests/renderer/data/mixed_mc714_foa_masa2_ism4.txt @@ -0,0 +1,24 @@ +../../../scripts/testv/mixed_mc714_foa_masa2_ism4.wav +7 +MC +1 +7_1_4 +SBA +13 +1 +MASA +17 +2 +../../../scripts/testv/stv2MASA2TC48c.met +ISM +19 +../../../scripts/testv/stvISM1.csv +ISM +20 +../../../scripts/testv/stvISM2.csv +ISM +21 +../../../scripts/testv/stvISM3.csv +ISM +22 +../../../scripts/testv/stvISM4.csv \ No newline at end of file diff --git a/tests/renderer/test_renderer_be_comparison.py b/tests/renderer/test_renderer_be_comparison.py index 0647bf1ef9..851cc22e1f 100644 --- a/tests/renderer/test_renderer_be_comparison.py +++ b/tests/renderer/test_renderer_be_comparison.py @@ -232,6 +232,16 @@ def test_masa_binaural_headrotation(test_info, in_fmt, out_fmt, trj_file, framin ) +@pytest.mark.parametrize("in_fmt", METADATA_SCENES_TO_TEST_MASA_PREREND) +def test_masa_prerend(test_info, in_fmt): + compare_renderer_vs_mergetarget_plus_meta( + test_info, + "META", + "MASA2", + metadata_input=TEST_VECTOR_DIR.joinpath(f"{in_fmt}.txt"), + ) + + """ Custom loudspeaker layouts """ diff --git a/tests/renderer/utils.py b/tests/renderer/utils.py index 8fdc7ead3a..80b4202ef2 100644 --- a/tests/renderer/utils.py +++ b/tests/renderer/utils.py @@ -30,6 +30,7 @@ the United Nations Convention on Contracts on the International Sales of Goods. """ +import filecmp import logging import os import subprocess as sp @@ -111,7 +112,7 @@ def run_renderer( is_comparetest: Optional[bool] = False, framing_5ms: Optional[bool] = False, test_case_name: Optional[str] = None, -) -> Tuple[np.ndarray, int]: +) -> str: """CuT creation with standalone renderer""" if trj_file is not None: trj_name = f"_{trj_file.stem}" @@ -212,11 +213,11 @@ def run_renderer( run_cmd(cmd, env) - return pyaudio3dtools.audiofile.readfile(out_file) + return out_file def compare_renderer_vs_mergetarget(test_info, in_fmt, out_fmt, **kwargs): - ref, ref_fs = run_renderer( + out_file_ref = run_renderer( in_fmt, out_fmt, test_case_name=test_info.node.name, @@ -224,27 +225,58 @@ def compare_renderer_vs_mergetarget(test_info, in_fmt, out_fmt, **kwargs): output_path_base=OUTPUT_PATH_REF, **kwargs, ) - cut, cut_fs = run_renderer( + ref, ref_fs = pyaudio3dtools.audiofile.readfile(out_file_ref) + out_file_cut = run_renderer( in_fmt, out_fmt, test_case_name=test_info.node.name, **kwargs ) + cut, cut_fs = pyaudio3dtools.audiofile.readfile(out_file_cut) check_BE(test_info, ref, ref_fs, cut, cut_fs) def compare_renderer_vs_pyscripts(test_info, in_fmt, out_fmt, **kwargs): ref, ref_fs = run_pyscripts(in_fmt, out_fmt, **kwargs) - cut, cut_fs = run_renderer( + out_file_cut = run_renderer( in_fmt, out_fmt, test_case_name=test_info.node.name, **kwargs ) + cut, cut_fs = pyaudio3dtools.audiofile.readfile(out_file_cut) check_BE(test_info, ref, ref_fs, cut, cut_fs) def compare_renderer_args( test_info, in_fmt, out_fmt, ref_kwargs: Dict, cut_kwargs: Dict ): - ref, ref_fs = run_renderer( + out_file_ref = run_renderer( in_fmt, out_fmt, test_case_name=test_info.node.name, **ref_kwargs ) - cut, cut_fs = run_renderer( + ref, ref_fs = pyaudio3dtools.audiofile.readfile(out_file_ref) + out_file_cut = run_renderer( in_fmt, out_fmt, test_case_name=test_info.node.name, **cut_kwargs ) + cut, cut_fs = pyaudio3dtools.audiofile.readfile(out_file_cut) check_BE(test_info, ref, ref_fs, cut, cut_fs) + + +def compare_renderer_vs_mergetarget_plus_meta(test_info, in_fmt, out_fmt, metadata_input, **kwargs): + out_file_ref = run_renderer( + in_fmt, + out_fmt, + metadata_input=metadata_input, + test_case_name=test_info.node.name, + binary_suffix=BIN_SUFFIX_MERGETARGET, + output_path_base=OUTPUT_PATH_REF, + **kwargs, + ) + ref, ref_fs = pyaudio3dtools.audiofile.readfile(out_file_ref) + out_file_cut = run_renderer( + in_fmt, + out_fmt, + metadata_input=metadata_input, + test_case_name=test_info.node.name, + **kwargs + ) + cut, cut_fs = pyaudio3dtools.audiofile.readfile(out_file_cut) + meta_file_ref = out_file_ref + ".met" + meta_file_cut = out_file_cut + ".met" + check_BE(test_info, ref, ref_fs, cut, cut_fs) + if not filecmp.cmp(meta_file_cut, meta_file_ref): + pytest.fail("Metadata file differs from reference") -- GitLab From 937f69cd3629709531747e0c47d797f744027ad1 Mon Sep 17 00:00:00 2001 From: Lauros Pajunen Date: Mon, 23 Oct 2023 15:02:39 +0300 Subject: [PATCH 3/4] Fix naming --- lib_rend/lib_rend.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index fd0b25f655..a7de09eb00 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -562,8 +562,8 @@ static ivas_error validateOutputAudioConfig( case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR: case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: #ifdef FIX_740_MASA_PREREND_VALIDITY_CHECK - case AUDIO_CONFIG_MASA1: - case AUDIO_CONFIG_MASA2: + case IVAS_AUDIO_CONFIG_MASA1: + case IVAS_AUDIO_CONFIG_MASA2: #endif return IVAS_ERR_OK; default: -- GitLab From 93d58ceb0d8502daf2618d140f1e9bc68012e6a9 Mon Sep 17 00:00:00 2001 From: Tapani Pihlajakuja Date: Tue, 24 Oct 2023 08:14:12 +0300 Subject: [PATCH 4/4] Update usage in renderer to cover the expected state --- apps/renderer.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/renderer.c b/apps/renderer.c index 7f5af747d5..bc24feb907 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -3792,7 +3792,11 @@ static void printSupportedAudioConfigs( void ) "HOA2", "HOA3", "ISMx (input only)", +#ifdef FIX_740_MASA_PREREND_VALIDITY_CHECK + "MASAx", +#else "MASAx (input only)", +#endif "BINAURAL (output only)", #ifdef SPLIT_REND_WITH_HEAD_ROT "BINAURAL_SPLIT_PCM", -- GitLab