Loading tests/renderer/constants.py +12 −0 Original line number Diff line number Diff line Loading @@ -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"), Loading tests/split_rendering/README.md +4 −1 Original line number Diff line number Diff line Loading @@ -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 ``` Loading tests/split_rendering/constants.py +20 −19 Original line number Diff line number Diff line Loading @@ -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 """ Loading @@ -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", Loading tests/split_rendering/test_split_rendering.py +6 −2 Original line number Diff line number Diff line Loading @@ -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 ) ): Loading tests/split_rendering/test_split_rendering_be_comparison.py +23 −0 Original line number Diff line number Diff line Loading @@ -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 """ Loading Loading
tests/renderer/constants.py +12 −0 Original line number Diff line number Diff line Loading @@ -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"), Loading
tests/split_rendering/README.md +4 −1 Original line number Diff line number Diff line Loading @@ -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 ``` Loading
tests/split_rendering/constants.py +20 −19 Original line number Diff line number Diff line Loading @@ -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 """ Loading @@ -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", Loading
tests/split_rendering/test_split_rendering.py +6 −2 Original line number Diff line number Diff line Loading @@ -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 ) ): Loading
tests/split_rendering/test_split_rendering_be_comparison.py +23 −0 Original line number Diff line number Diff line Loading @@ -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 """ Loading