Loading tests/renderer/constants.py +60 −0 Original line number Diff line number Diff line Loading @@ -114,6 +114,14 @@ FORMAT_TO_FILE_SMOKETEST = { "NDP_ISM4": NCHAN_TO_FILE[4], "MASA1": NCHAN_TO_FILE[1], "MASA2": NCHAN_TO_FILE[2], "OMASA_1_1": NCHAN_TO_FILE[2], "OMASA_1_2": NCHAN_TO_FILE[3], "OMASA_1_3": NCHAN_TO_FILE[4], "OMASA_1_4": NCHAN_TO_FILE[5], "OMASA_2_1": NCHAN_TO_FILE[3], "OMASA_2_2": NCHAN_TO_FILE[4], "OMASA_2_3": NCHAN_TO_FILE[5], "OMASA_2_4": NCHAN_TO_FILE[6], "OSBA_1_1": NCHAN_TO_FILE[5], "OSBA_2_1": NCHAN_TO_FILE[6], "OSBA_3_1": NCHAN_TO_FILE[7], Loading Loading @@ -149,6 +157,14 @@ FORMAT_TO_FILE_COMPARETEST = { "ISM4": TESTV_DIR.joinpath("stv4ISM48s.wav"), "MASA1": TESTV_DIR.joinpath("stv1MASA1TC48c.wav"), "MASA2": TESTV_DIR.joinpath("stv2MASA2TC48c.wav"), "OMASA_1_1": TESTV_DIR.joinpath("stvOMASA_1ISM_1MASA1TC48c.wav"), "OMASA_1_2": TESTV_DIR.joinpath("stvOMASA_2ISM_2MASA1TC48c.wav"), "OMASA_1_3": TESTV_DIR.joinpath("stvOMASA_3ISM_1MASA1TC48c.wav"), "OMASA_1_4": TESTV_DIR.joinpath("stvOMASA_4ISM_2MASA1TC48c.wav"), "OMASA_2_1": TESTV_DIR.joinpath("stvOMASA_1ISM_1MASA2TC48c.wav"), "OMASA_2_2": TESTV_DIR.joinpath("stvOMASA_2ISM_2MASA2TC48c.wav"), "OMASA_2_3": TESTV_DIR.joinpath("stvOMASA_3ISM_1MASA2TC48c.wav"), "OMASA_2_4": TESTV_DIR.joinpath("stvOMASA_4ISM_2MASA2TC48c.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"), Loading Loading @@ -192,6 +208,50 @@ FORMAT_TO_METADATA_FILES = { ], "MASA1": [str(TESTV_DIR.joinpath("stv1MASA1TC48c.met"))], "MASA2": [str(TESTV_DIR.joinpath("stv2MASA2TC48c.met"))], "OMASA_1_1": [ str(TESTV_DIR.joinpath("stvISM1.csv")), str(TESTV_DIR.joinpath("stvOMASA_1ISM_1MASA1TC48c.met")), ], "OMASA_1_2": [ str(TESTV_DIR.joinpath("stvISM1.csv")), str(TESTV_DIR.joinpath("stvISM2.csv")), str(TESTV_DIR.joinpath("stvOMASA_2ISM_2MASA1TC48c.met")), ], "OMASA_1_3": [ str(TESTV_DIR.joinpath("stvISM1.csv")), str(TESTV_DIR.joinpath("stvISM2.csv")), str(TESTV_DIR.joinpath("stvISM3.csv")), str(TESTV_DIR.joinpath("stvOMASA_3ISM_1MASA1TC48c.met")), ], "OMASA_1_4": [ str(TESTV_DIR.joinpath("stvISM1.csv")), str(TESTV_DIR.joinpath("stvISM2.csv")), str(TESTV_DIR.joinpath("stvISM3.csv")), str(TESTV_DIR.joinpath("stvISM4.csv")), str(TESTV_DIR.joinpath("stvOMASA_4ISM_2MASA1TC48c.met")), ], "OMASA_2_1": [ str(TESTV_DIR.joinpath("stvISM1.csv")), str(TESTV_DIR.joinpath("stvOMASA_1ISM_1MASA2TC48c.met")), ], "OMASA_2_2": [ str(TESTV_DIR.joinpath("stvISM1.csv")), str(TESTV_DIR.joinpath("stvISM2.csv")), str(TESTV_DIR.joinpath("stvOMASA_2ISM_2MASA2TC48c.met")), ], "OMASA_2_3": [ str(TESTV_DIR.joinpath("stvISM1.csv")), str(TESTV_DIR.joinpath("stvISM2.csv")), str(TESTV_DIR.joinpath("stvISM3.csv")), str(TESTV_DIR.joinpath("stvOMASA_3ISM_1MASA2TC48c.met")), ], "OMASA_2_4": [ str(TESTV_DIR.joinpath("stvISM1.csv")), str(TESTV_DIR.joinpath("stvISM2.csv")), str(TESTV_DIR.joinpath("stvISM3.csv")), str(TESTV_DIR.joinpath("stvISM4.csv")), str(TESTV_DIR.joinpath("stvOMASA_4ISM_2MASA2TC48c.met")), ], } Loading tests/split_rendering/README.md +3 −2 Original line number Diff line number Diff line <!------------------------------------------------------------------------------------------------------ (C) 2023 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, (C) 2022-2024 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other Loading Loading @@ -41,13 +41,14 @@ The tests cover the following IVAS formats: * Multi-Channel * ISM * MASA * OMASA * OSBA The tests include both split rendering operating modes: * Full chain: encoder, decoder, external renderer * External: external renderer only Note: OSBA format only supports the full chain split rendering mode. Note: OSBA and OMASA formats only support 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 Loading tests/split_rendering/constants.py +13 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,9 @@ RENDERER_CONFIGS_TO_TEST_ISM = ( RENDERER_CONFIGS_TO_TEST_MASA = ( RENDERER_CONFIGS_DEFAULT_CODEC + RENDERER_CONFIGS_LC3PLUS_CODEC ) RENDERER_CONFIGS_TO_TEST_OMASA = ( RENDERER_CONFIGS_DEFAULT_CODEC + RENDERER_CONFIGS_LC3PLUS_CODEC ) RENDERER_CONFIGS_TO_TEST_OSBA = ( RENDERER_CONFIGS_DEFAULT_CODEC + RENDERER_CONFIGS_LC3PLUS_CODEC ) Loading Loading @@ -109,6 +112,14 @@ FORMAT_TO_IVAS_COD_FORMAT = { "HOA3": ["-sba", "3"], "MASA1": ["-masa", "1"], "MASA2": ["-masa", "2"], "OMASA_1_1": ["-ism_masa", "1", "1"], "OMASA_1_2": ["-ism_masa", "2", "1"], "OMASA_1_3": ["-ism_masa", "3", "1"], "OMASA_1_4": ["-ism_masa", "4", "1"], "OMASA_2_1": ["-ism_masa", "1", "2"], "OMASA_2_2": ["-ism_masa", "2", "2"], "OMASA_2_3": ["-ism_masa", "3", "2"], "OMASA_2_4": ["-ism_masa", "4", "2"], "OSBA_1_1": ["-ism_sba", "1", "1"], "OSBA_1_2": ["-ism_sba", "1", "2"], "OSBA_1_3": ["-ism_sba", "1", "3"], Loading @@ -127,6 +138,7 @@ 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 = ["MASA1", "MASA2"] INPUT_FORMATS_OMASA_SPLIT_REND = ["OMASA_1_1", "OMASA_2_4"] # number of TCs in MASA, number of ISM objects INPUT_FORMATS_OSBA_SPLIT_REND = [ "OSBA_1_1", "OSBA_4_3", Loading @@ -136,6 +148,7 @@ IVAS_BITRATES_AMBI = ["80000", "512000"] IVAS_BITRATES_MC = ["128000", "160000", "384000"] IVAS_BITRATES_ISM = ["128000"] IVAS_BITRATES_MASA = ["24400", "128000"] IVAS_BITRATES_OMASA = ["16400", "32000", "96000", "384000"] # test all underlying coding modes (here, for 4 ISM) IVAS_BITRATES_OSBA = ["256000", "512000"] IVAS_MAX_ISM_BITRATE = { Loading tests/split_rendering/test_split_rendering.py +24 −0 Original line number Diff line number Diff line Loading @@ -234,6 +234,29 @@ def test_masa_external_split(test_info, in_fmt, render_config, trajectory): ) """ OMASA """ @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_OMASA) @pytest.mark.parametrize("bitrate", IVAS_BITRATES_OMASA) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_OMASA_SPLIT_REND) def test_omasa_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") run_full_chain_split_rendering( 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, ) """ OSBA """ Loading Loading @@ -288,6 +311,7 @@ full_chain_split_pcm_params = [ ("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"), ("OMASA_2_4", "256000", "split_renderer_config_3dof_384k_lcld"), ] Loading tests/split_rendering/utils.py +1 −1 Original line number Diff line number Diff line Loading @@ -99,7 +99,7 @@ def run_full_chain_split_rendering( 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"): elif in_fmt.upper().startswith("ISM") or in_fmt.upper().startswith("MASA") or in_fmt.upper().startswith("OMASA"): in_meta_files = FORMAT_TO_METADATA_FILES[in_fmt] else: in_meta_files = None Loading Loading
tests/renderer/constants.py +60 −0 Original line number Diff line number Diff line Loading @@ -114,6 +114,14 @@ FORMAT_TO_FILE_SMOKETEST = { "NDP_ISM4": NCHAN_TO_FILE[4], "MASA1": NCHAN_TO_FILE[1], "MASA2": NCHAN_TO_FILE[2], "OMASA_1_1": NCHAN_TO_FILE[2], "OMASA_1_2": NCHAN_TO_FILE[3], "OMASA_1_3": NCHAN_TO_FILE[4], "OMASA_1_4": NCHAN_TO_FILE[5], "OMASA_2_1": NCHAN_TO_FILE[3], "OMASA_2_2": NCHAN_TO_FILE[4], "OMASA_2_3": NCHAN_TO_FILE[5], "OMASA_2_4": NCHAN_TO_FILE[6], "OSBA_1_1": NCHAN_TO_FILE[5], "OSBA_2_1": NCHAN_TO_FILE[6], "OSBA_3_1": NCHAN_TO_FILE[7], Loading Loading @@ -149,6 +157,14 @@ FORMAT_TO_FILE_COMPARETEST = { "ISM4": TESTV_DIR.joinpath("stv4ISM48s.wav"), "MASA1": TESTV_DIR.joinpath("stv1MASA1TC48c.wav"), "MASA2": TESTV_DIR.joinpath("stv2MASA2TC48c.wav"), "OMASA_1_1": TESTV_DIR.joinpath("stvOMASA_1ISM_1MASA1TC48c.wav"), "OMASA_1_2": TESTV_DIR.joinpath("stvOMASA_2ISM_2MASA1TC48c.wav"), "OMASA_1_3": TESTV_DIR.joinpath("stvOMASA_3ISM_1MASA1TC48c.wav"), "OMASA_1_4": TESTV_DIR.joinpath("stvOMASA_4ISM_2MASA1TC48c.wav"), "OMASA_2_1": TESTV_DIR.joinpath("stvOMASA_1ISM_1MASA2TC48c.wav"), "OMASA_2_2": TESTV_DIR.joinpath("stvOMASA_2ISM_2MASA2TC48c.wav"), "OMASA_2_3": TESTV_DIR.joinpath("stvOMASA_3ISM_1MASA2TC48c.wav"), "OMASA_2_4": TESTV_DIR.joinpath("stvOMASA_4ISM_2MASA2TC48c.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"), Loading Loading @@ -192,6 +208,50 @@ FORMAT_TO_METADATA_FILES = { ], "MASA1": [str(TESTV_DIR.joinpath("stv1MASA1TC48c.met"))], "MASA2": [str(TESTV_DIR.joinpath("stv2MASA2TC48c.met"))], "OMASA_1_1": [ str(TESTV_DIR.joinpath("stvISM1.csv")), str(TESTV_DIR.joinpath("stvOMASA_1ISM_1MASA1TC48c.met")), ], "OMASA_1_2": [ str(TESTV_DIR.joinpath("stvISM1.csv")), str(TESTV_DIR.joinpath("stvISM2.csv")), str(TESTV_DIR.joinpath("stvOMASA_2ISM_2MASA1TC48c.met")), ], "OMASA_1_3": [ str(TESTV_DIR.joinpath("stvISM1.csv")), str(TESTV_DIR.joinpath("stvISM2.csv")), str(TESTV_DIR.joinpath("stvISM3.csv")), str(TESTV_DIR.joinpath("stvOMASA_3ISM_1MASA1TC48c.met")), ], "OMASA_1_4": [ str(TESTV_DIR.joinpath("stvISM1.csv")), str(TESTV_DIR.joinpath("stvISM2.csv")), str(TESTV_DIR.joinpath("stvISM3.csv")), str(TESTV_DIR.joinpath("stvISM4.csv")), str(TESTV_DIR.joinpath("stvOMASA_4ISM_2MASA1TC48c.met")), ], "OMASA_2_1": [ str(TESTV_DIR.joinpath("stvISM1.csv")), str(TESTV_DIR.joinpath("stvOMASA_1ISM_1MASA2TC48c.met")), ], "OMASA_2_2": [ str(TESTV_DIR.joinpath("stvISM1.csv")), str(TESTV_DIR.joinpath("stvISM2.csv")), str(TESTV_DIR.joinpath("stvOMASA_2ISM_2MASA2TC48c.met")), ], "OMASA_2_3": [ str(TESTV_DIR.joinpath("stvISM1.csv")), str(TESTV_DIR.joinpath("stvISM2.csv")), str(TESTV_DIR.joinpath("stvISM3.csv")), str(TESTV_DIR.joinpath("stvOMASA_3ISM_1MASA2TC48c.met")), ], "OMASA_2_4": [ str(TESTV_DIR.joinpath("stvISM1.csv")), str(TESTV_DIR.joinpath("stvISM2.csv")), str(TESTV_DIR.joinpath("stvISM3.csv")), str(TESTV_DIR.joinpath("stvISM4.csv")), str(TESTV_DIR.joinpath("stvOMASA_4ISM_2MASA2TC48c.met")), ], } Loading
tests/split_rendering/README.md +3 −2 Original line number Diff line number Diff line <!------------------------------------------------------------------------------------------------------ (C) 2023 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, (C) 2022-2024 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other Loading Loading @@ -41,13 +41,14 @@ The tests cover the following IVAS formats: * Multi-Channel * ISM * MASA * OMASA * OSBA The tests include both split rendering operating modes: * Full chain: encoder, decoder, external renderer * External: external renderer only Note: OSBA format only supports the full chain split rendering mode. Note: OSBA and OMASA formats only support 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 Loading
tests/split_rendering/constants.py +13 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,9 @@ RENDERER_CONFIGS_TO_TEST_ISM = ( RENDERER_CONFIGS_TO_TEST_MASA = ( RENDERER_CONFIGS_DEFAULT_CODEC + RENDERER_CONFIGS_LC3PLUS_CODEC ) RENDERER_CONFIGS_TO_TEST_OMASA = ( RENDERER_CONFIGS_DEFAULT_CODEC + RENDERER_CONFIGS_LC3PLUS_CODEC ) RENDERER_CONFIGS_TO_TEST_OSBA = ( RENDERER_CONFIGS_DEFAULT_CODEC + RENDERER_CONFIGS_LC3PLUS_CODEC ) Loading Loading @@ -109,6 +112,14 @@ FORMAT_TO_IVAS_COD_FORMAT = { "HOA3": ["-sba", "3"], "MASA1": ["-masa", "1"], "MASA2": ["-masa", "2"], "OMASA_1_1": ["-ism_masa", "1", "1"], "OMASA_1_2": ["-ism_masa", "2", "1"], "OMASA_1_3": ["-ism_masa", "3", "1"], "OMASA_1_4": ["-ism_masa", "4", "1"], "OMASA_2_1": ["-ism_masa", "1", "2"], "OMASA_2_2": ["-ism_masa", "2", "2"], "OMASA_2_3": ["-ism_masa", "3", "2"], "OMASA_2_4": ["-ism_masa", "4", "2"], "OSBA_1_1": ["-ism_sba", "1", "1"], "OSBA_1_2": ["-ism_sba", "1", "2"], "OSBA_1_3": ["-ism_sba", "1", "3"], Loading @@ -127,6 +138,7 @@ 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 = ["MASA1", "MASA2"] INPUT_FORMATS_OMASA_SPLIT_REND = ["OMASA_1_1", "OMASA_2_4"] # number of TCs in MASA, number of ISM objects INPUT_FORMATS_OSBA_SPLIT_REND = [ "OSBA_1_1", "OSBA_4_3", Loading @@ -136,6 +148,7 @@ IVAS_BITRATES_AMBI = ["80000", "512000"] IVAS_BITRATES_MC = ["128000", "160000", "384000"] IVAS_BITRATES_ISM = ["128000"] IVAS_BITRATES_MASA = ["24400", "128000"] IVAS_BITRATES_OMASA = ["16400", "32000", "96000", "384000"] # test all underlying coding modes (here, for 4 ISM) IVAS_BITRATES_OSBA = ["256000", "512000"] IVAS_MAX_ISM_BITRATE = { Loading
tests/split_rendering/test_split_rendering.py +24 −0 Original line number Diff line number Diff line Loading @@ -234,6 +234,29 @@ def test_masa_external_split(test_info, in_fmt, render_config, trajectory): ) """ OMASA """ @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_OMASA) @pytest.mark.parametrize("bitrate", IVAS_BITRATES_OMASA) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_OMASA_SPLIT_REND) def test_omasa_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") run_full_chain_split_rendering( 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, ) """ OSBA """ Loading Loading @@ -288,6 +311,7 @@ full_chain_split_pcm_params = [ ("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"), ("OMASA_2_4", "256000", "split_renderer_config_3dof_384k_lcld"), ] Loading
tests/split_rendering/utils.py +1 −1 Original line number Diff line number Diff line Loading @@ -99,7 +99,7 @@ def run_full_chain_split_rendering( 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"): elif in_fmt.upper().startswith("ISM") or in_fmt.upper().startswith("MASA") or in_fmt.upper().startswith("OMASA"): in_meta_files = FORMAT_TO_METADATA_FILES[in_fmt] else: in_meta_files = None Loading