Loading scripts/config/self_test.prm +28 −28 Original line number Diff line number Diff line Loading @@ -1383,57 +1383,57 @@ networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit // OSBA FOA 1ISM at 32 kbps, 48kHz in, 48kHz out, BINAURAL out //../IVAS_cod -ism_sba 1 1 testv/stvISM1.csv 32000 48 testv/stvOSBA_1ISM_FOA48c.wav bit //../IVAS_dec BINAURAL 48 bit testv/stvOSBA_1ISM_FOA48c.wav_BINAURAL_32000_48-48.tst ../IVAS_cod -ism_sba 1 1 testv/stvISM1.csv 32000 48 testv/stvOSBA_1ISM_FOA48c.wav bit ../IVAS_dec BINAURAL 48 bit testv/stvOSBA_1ISM_FOA48c.wav_BINAURAL_32000_48-48.tst // OSBA FOA 2ISM at 64 kbps, 48kHz in, 48kHz out, HOA3 out //../IVAS_cod -ism_sba 2 1 testv/stvISM1.csv testv/stvISM2.csv 64000 48 testv/stvOSBA_2ISM_FOA48c.wav bit //../IVAS_dec HOA3 48 bit testv/stvOSBA_2ISM_FOA48c.wav_HOA3_64000_48-48.tst ../IVAS_cod -ism_sba 2 1 testv/stvISM1.csv testv/stvISM2.csv 64000 48 testv/stvOSBA_2ISM_FOA48c.wav bit ../IVAS_dec HOA3 48 bit testv/stvOSBA_2ISM_FOA48c.wav_HOA3_64000_48-48.tst // OSBA FOA 3ISM at 128 kbps, 48kHz in, 48kHz out, 7_1_4 out //../IVAS_cod -ism_sba 3 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 128000 48 testv/stvOSBA_3ISM_FOA48c.wav bit //../IVAS_dec 7_1_4 48 bit testv/stvOSBA_3ISM_FOA48c.wav_7_1_4_128000_48-48.tst ../IVAS_cod -ism_sba 3 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 128000 48 testv/stvOSBA_3ISM_FOA48c.wav bit ../IVAS_dec 7_1_4 48 bit testv/stvOSBA_3ISM_FOA48c.wav_7_1_4_128000_48-48.tst // OSBA FOA 4ISM at 256 kbps, 48kHz in, 48kHz out, EXT out //../IVAS_cod -ism_sba 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 256000 48 testv/stvOSBA_4ISM_FOA48c.wav bit //../IVAS_dec EXT 48 bit testv/stvOSBA_4ISM_FOA48c.wav_EXT_256000_48-48.tst ../IVAS_cod -ism_sba 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 256000 48 testv/stvOSBA_4ISM_FOA48c.wav bit ../IVAS_dec EXT 48 bit testv/stvOSBA_4ISM_FOA48c.wav_EXT_256000_48-48.tst // OSBA FOA 4ISM at 512 kbps, 48kHz in, 48kHz out, BINAURAL out //../IVAS_cod -ism_sba 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 512000 48 testv/stvOSBA_4ISM_FOA48c.wav bit //../IVAS_dec BINAURAL 48 bit testv/stvOSBA_4ISM_FOA48c.wav_BINAURAL_512000_48-48.tst ../IVAS_cod -ism_sba 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 512000 48 testv/stvOSBA_4ISM_FOA48c.wav bit ../IVAS_dec BINAURAL 48 bit testv/stvOSBA_4ISM_FOA48c.wav_BINAURAL_512000_48-48.tst // OSBA 2OA 1ISM at 24.4 kbps, 48kHz in, 48kHz out, FOA out //../IVAS_cod -ism_sba 1 2 testv/stvISM1.csv 24400 48 testv/stvOSBA_1ISM_2OA48c.wav bit //../IVAS_dec FOA 48 bit testv/stvOSBA_1ISM_2OA48c.wav_FOA_24400_48-48.tst ../IVAS_cod -ism_sba 1 2 testv/stvISM1.csv 24400 48 testv/stvOSBA_1ISM_2OA48c.wav bit ../IVAS_dec FOA 48 bit testv/stvOSBA_1ISM_2OA48c.wav_FOA_24400_48-48.tst // OSBA 2OA 2ISM at 48 kbps, 48kHz in, 48kHz out, MONO out //../IVAS_cod -ism_sba 2 2 testv/stvISM1.csv testv/stvISM2.csv 48000 48 testv/stvOSBA_2ISM_2OA48c.wav bit //../IVAS_dec MONO 48 bit testv/stvOSBA_2ISM_2OA48c.wav_MONO_48000_48-48.tst ../IVAS_cod -ism_sba 2 2 testv/stvISM1.csv testv/stvISM2.csv 48000 48 testv/stvOSBA_2ISM_2OA48c.wav bit ../IVAS_dec MONO 48 bit testv/stvOSBA_2ISM_2OA48c.wav_MONO_48000_48-48.tst // OSBA 2OA 3ISM at 96 kbps, 48kHz in, 48kHz out, STEREO out //../IVAS_cod -ism_sba 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 96000 48 testv/stvOSBA_3ISM_2OA48c.wav bit //../IVAS_dec STEREO 48 bit testv/stvOSBA_3ISM_2OA48c.wav_STEREO_96000_48-48.tst ../IVAS_cod -ism_sba 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 96000 48 testv/stvOSBA_3ISM_2OA48c.wav bit ../IVAS_dec STEREO 48 bit testv/stvOSBA_3ISM_2OA48c.wav_STEREO_96000_48-48.tst // OSBA 2OA 4ISM at 384 kbps, 48kHz in, 48kHz out, BINAURAL out //../IVAS_cod -ism_sba 4 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 384000 48 testv/stvOSBA_4ISM_2OA48c.wav bit //../IVAS_dec BINAURAL 48 bit testv/stvOSBA_4ISM_2OA48c.wav_BINAURAL_384000_48-48.tst ../IVAS_cod -ism_sba 4 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 384000 48 testv/stvOSBA_4ISM_2OA48c.wav bit ../IVAS_dec BINAURAL 48 bit testv/stvOSBA_4ISM_2OA48c.wav_BINAURAL_384000_48-48.tst // OSBA 3OA 1ISM at 512 kbps, 48kHz in, 48kHz out, EXT out //../IVAS_cod -ism_sba 1 3 testv/stvISM1.csv 512000 48 testv/stvOSBA_1ISM_3OA48c.wav bit //../IVAS_dec EXT 48 bit testv/stvOSBA_1ISM_3OA48c.wav_EXT_512000_48-48.tst ../IVAS_cod -ism_sba 1 3 testv/stvISM1.csv 512000 48 testv/stvOSBA_1ISM_3OA48c.wav bit ../IVAS_dec EXT 48 bit testv/stvOSBA_1ISM_3OA48c.wav_EXT_512000_48-48.tst // OSBA 3OA 2ISM at 256 kbps, 48kHz in, 48kHz out, 7_1 out //../IVAS_cod -ism_sba 2 3 testv/stvISM1.csv testv/stvISM2.csv 256000 48 testv/stvOSBA_2ISM_3OA48c.wav bit //../IVAS_dec 7_1 48 bit testv/stvOSBA_2ISM_3OA48c.wav_7_1_256000_48-48.tst ../IVAS_cod -ism_sba 2 3 testv/stvISM1.csv testv/stvISM2.csv 256000 48 testv/stvOSBA_2ISM_3OA48c.wav bit ../IVAS_dec 7_1 48 bit testv/stvOSBA_2ISM_3OA48c.wav_7_1_256000_48-48.tst // OSBA 3OA 3ISM at 128 kbps, 48kHz in, 48kHz out, BINAURAL out //../IVAS_cod -ism_sba 3 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 128000 48 testv/stvOSBA_3ISM_3OA48c.wav bit //../IVAS_dec BINAURAL 48 bit testv/stvOSBA_3ISM_3OA48c.wav_BINAURAL_128000_48-48.tst ../IVAS_cod -ism_sba 3 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 128000 48 testv/stvOSBA_3ISM_3OA48c.wav bit ../IVAS_dec BINAURAL 48 bit testv/stvOSBA_3ISM_3OA48c.wav_BINAURAL_128000_48-48.tst // OSBA 3OA 4ISM at 16.4 kbps, 48kHz in, 48kHz out, 5_1 out //../IVAS_cod -ism_sba 4 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 16400 48 testv/stvOSBA_4ISM_3OA48c.wav bit //../IVAS_dec 5_1 48 bit testv/stvOSBA_4ISM_3OA48c.wav_5_1_16400_48-48.tst ../IVAS_cod -ism_sba 4 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 16400 48 testv/stvOSBA_4ISM_3OA48c.wav bit ../IVAS_dec 5_1 48 bit testv/stvOSBA_4ISM_3OA48c.wav_5_1_16400_48-48.tst // OSBA 3OA 4ISM bitrate switching 13.2 to 512, 48kHz in, 48kHz out, BIN out //../IVAS_cod -ism_sba 4 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv switchPaths/sw_13k2_512k.bin 48 testv/stvOSBA_4ISM_3OA48c.wav bit //../IVAS_dec BINAURAL 48 bit testv/stvOSBA_4ISM_3OA48c.wav_BINAURAL_sw_13k2_512k_48-48.tst ../IVAS_cod -ism_sba 4 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stvOSBA_4ISM_3OA48c.wav bit ../IVAS_dec BINAURAL 48 bit testv/stvOSBA_4ISM_3OA48c.wav_BINAURAL_sw_13k2_512k_48-48.tst tests/split_rendering/constants.py +10 −7 Original line number Diff line number Diff line Loading @@ -53,10 +53,6 @@ from tests.renderer.constants import ( FORMAT_TO_FILE_COMPARETEST, FORMAT_TO_FILE_SMOKETEST, FORMAT_TO_METADATA_FILES, INPUT_FORMATS_AMBI, INPUT_FORMATS_ISM, INPUT_FORMATS_MASA, INPUT_FORMATS_MC, METADATA_SCENES_TO_TEST, ) Loading Loading @@ -132,6 +128,11 @@ FORMAT_TO_NCHAN = { "MASA2": 2, } 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"] IVAS_BITRATES_AMBI = ["80000", "512000"] IVAS_BITRATES_MC = ["128000", "160000", "384000"] IVAS_BITRATES_ISM = ["128000"] Loading @@ -144,6 +145,8 @@ IVAS_MAX_ISM_BITRATE = { "4": "512000", } RENDERER_FORMATS = ["BINAURAL_SPLIT_CODED", "BINAURAL_SPLIT_PCM"] INPUT_DURATION_SEC = 5 """ PLC constants """ Loading @@ -165,7 +168,7 @@ SPLIT_PRE_DEC_CMD = [ "", # 2 -> pre-trajectory file "-render_config", "", # 4 -> render config file "BINAURAL_SPLIT_CODED", "", # 5 -> renderer format "48", "", # 7 -> encoder bitstream "", # 8 -> split rendering bitstream Loading @@ -185,7 +188,7 @@ SPLIT_PRE_REND_CMD = [ "-o", "", # 10 -> split rendering bitstream "-of", "BINAURAL_SPLIT_CODED", "", # 12 -> renderer format "-tf", "", # 14 -> post-trajectory file ] Loading @@ -198,7 +201,7 @@ SPLIT_POST_REND_CMD = [ "-i", "", # 4 -> split rendering bitstream "-if", "BINAURAL_SPLIT_CODED", "", # 6 -> renderer format "-o", "", # 8 -> output file "-of", Loading tests/split_rendering/test_split_rendering.py +64 −11 Original line number Diff line number Diff line Loading @@ -41,9 +41,9 @@ 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 or in_fmt in INPUT_FORMATS_MC) 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 "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 @@ -56,7 +56,7 @@ def check_xfail(test_info, in_fmt, render_config, bitrate=None): if ( bitrate and (in_fmt in INPUT_FORMATS_ISM) and (in_fmt in INPUT_FORMATS_ISM_SPLIT_REND) and (int(bitrate) > int(IVAS_MAX_ISM_BITRATE[in_fmt[-1]])) ): pytest.skip(f"Unsupported configuration with {in_fmt} at {bitrate}bps") Loading @@ -68,7 +68,7 @@ def check_xfail(test_info, in_fmt, render_config, bitrate=None): @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_AMBI) @pytest.mark.parametrize("bitrate", IVAS_BITRATES_AMBI) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI_SPLIT_REND) def test_ambisonics_full_chain_split( test_info, in_fmt, bitrate, render_config, trajectory ): Loading @@ -89,7 +89,7 @@ def test_ambisonics_full_chain_split( @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_AMBI) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI_SPLIT_REND) def test_ambisonics_external_split(test_info, in_fmt, render_config, trajectory): check_xfail(test_info, in_fmt, render_config) Loading @@ -111,7 +111,7 @@ def test_ambisonics_external_split(test_info, in_fmt, render_config, trajectory) @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_MC) @pytest.mark.parametrize("bitrate", IVAS_BITRATES_MC) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MC[2:]) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MC_SPLIT_REND) def test_multichannel_full_chain_split( test_info, in_fmt, bitrate, render_config, trajectory ): Loading @@ -132,7 +132,7 @@ def test_multichannel_full_chain_split( @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_MC) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MC[2:]) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MC_SPLIT_REND) def test_multichannel_external_split(test_info, in_fmt, render_config, trajectory): check_xfail(test_info, in_fmt, render_config) Loading @@ -154,7 +154,7 @@ def test_multichannel_external_split(test_info, in_fmt, render_config, trajector @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_ISM) @pytest.mark.parametrize("bitrate", IVAS_BITRATES_ISM) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_ISM) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_ISM_SPLIT_REND) def test_ism_full_chain_split(test_info, in_fmt, bitrate, render_config, trajectory): check_xfail(test_info, in_fmt, render_config, bitrate) Loading @@ -173,7 +173,7 @@ def test_ism_full_chain_split(test_info, in_fmt, bitrate, render_config, traject @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_ISM) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_ISM) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_ISM_SPLIT_REND) def test_ism_external_split(test_info, in_fmt, render_config, trajectory): check_xfail(test_info, in_fmt, render_config) Loading @@ -195,7 +195,7 @@ def test_ism_external_split(test_info, in_fmt, render_config, trajectory): @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_MASA) @pytest.mark.parametrize("bitrate", IVAS_BITRATES_MASA) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MASA) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MASA_SPLIT_REND) def test_masa_full_chain_split(test_info, in_fmt, bitrate, render_config, trajectory): check_xfail(test_info, in_fmt, render_config, bitrate) Loading @@ -218,7 +218,7 @@ def test_masa_full_chain_split(test_info, in_fmt, bitrate, render_config, trajec @pytest.mark.parametrize("error_pattern", PLC_ERROR_PATTERNS) @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_PLC) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI[-1:]) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI_SPLIT_REND[-1:]) def test_post_rend_plc(test_info, in_fmt, render_config, trajectory, error_pattern): check_xfail(test_info, in_fmt, render_config) Loading @@ -233,3 +233,56 @@ def test_post_rend_plc(test_info, in_fmt, render_config, trajectory, error_patte output_path_base=OUTPUT_PATH_CUT, plc_error_pattern=ERROR_PATTERNS_DIR.joinpath(f"{error_pattern}.ep"), ) """ BINAURAL_SPLIT_PCM """ 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"), ] @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) trajectory = SPLIT_REND_HR_TRAJECTORIES_TO_TEST[0] 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( in_fmt=in_fmt, bitrate=bitrate, render_config=RENDER_CFG_DIR.joinpath(f"{render_config}.txt"), pre_trajectory=pre_trajectory, post_trajectory=post_trajectory, output_path_base=OUTPUT_PATH_CUT, renderer_fmt="BINAURAL_SPLIT_PCM", ) external_split_pcm_params = [ ("FOA", "split_renderer_config_3dofhq_512k_lc3plus"), ("5_1", "split_renderer_config_1dof_768k_default"), ("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) trajectory = SPLIT_REND_HR_TRAJECTORIES_TO_TEST[0] 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, renderer_fmt="BINAURAL_SPLIT_PCM", ) tests/split_rendering/test_split_rendering_be_comparison.py +61 −8 Original line number Diff line number Diff line Loading @@ -41,7 +41,7 @@ from tests.split_rendering.utils import * @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_AMBI) @pytest.mark.parametrize("bitrate", IVAS_BITRATES_AMBI) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI_SPLIT_REND) def test_ambisonics_full_chain_split( test_info, in_fmt, bitrate, render_config, trajectory ): Loading @@ -62,7 +62,7 @@ def test_ambisonics_full_chain_split( @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_AMBI) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI_SPLIT_REND) def test_ambisonics_external_split(test_info, in_fmt, render_config, trajectory): check_xfail(test_info, in_fmt, render_config) Loading @@ -84,7 +84,7 @@ def test_ambisonics_external_split(test_info, in_fmt, render_config, trajectory) @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_MC) @pytest.mark.parametrize("bitrate", IVAS_BITRATES_MC) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MC[2:]) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MC_SPLIT_REND) def test_multichannel_full_chain_split( test_info, in_fmt, bitrate, render_config, trajectory ): Loading @@ -105,7 +105,7 @@ def test_multichannel_full_chain_split( @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_MC) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MC[2:]) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MC_SPLIT_REND) def test_multichannel_external_split(test_info, in_fmt, render_config, trajectory): check_xfail(test_info, in_fmt, render_config) Loading @@ -127,7 +127,7 @@ def test_multichannel_external_split(test_info, in_fmt, render_config, trajector @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_ISM) @pytest.mark.parametrize("bitrate", IVAS_BITRATES_ISM) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_ISM) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_ISM_SPLIT_REND) def test_ism_full_chain_split(test_info, in_fmt, bitrate, render_config, trajectory): check_xfail(test_info, in_fmt, render_config, bitrate) Loading @@ -146,7 +146,7 @@ def test_ism_full_chain_split(test_info, in_fmt, bitrate, render_config, traject @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_ISM) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_ISM) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_ISM_SPLIT_REND) def test_ism_external_split(test_info, in_fmt, render_config, trajectory): check_xfail(test_info, in_fmt, render_config) Loading @@ -168,7 +168,7 @@ def test_ism_external_split(test_info, in_fmt, render_config, trajectory): @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_MASA) @pytest.mark.parametrize("bitrate", IVAS_BITRATES_MASA) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MASA) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MASA_SPLIT_REND) def test_masa_full_chain_split(test_info, in_fmt, bitrate, render_config, trajectory): check_xfail(test_info, in_fmt, render_config, bitrate) Loading @@ -191,7 +191,7 @@ def test_masa_full_chain_split(test_info, in_fmt, bitrate, render_config, trajec @pytest.mark.parametrize("error_pattern", PLC_ERROR_PATTERNS) @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_PLC) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI[-1:]) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI_SPLIT_REND[-1:]) def test_post_rend_plc(test_info, in_fmt, render_config, trajectory, error_pattern): check_xfail(test_info, in_fmt, render_config) Loading @@ -206,3 +206,56 @@ def test_post_rend_plc(test_info, in_fmt, render_config, trajectory, error_patte post_trajectory=post_trajectory, plc_error_pattern=ERROR_PATTERNS_DIR.joinpath(f"{error_pattern}.ep"), ) """ BINAURAL_SPLIT_PCM """ 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"), ] @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) trajectory = SPLIT_REND_HR_TRAJECTORIES_TO_TEST[0] 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, renderer_fmt="BINAURAL_SPLIT_PCM", ) external_split_pcm_params = [ ("FOA", "split_renderer_config_3dofhq_512k_lc3plus"), ("5_1", "split_renderer_config_1dof_768k_default"), ("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) trajectory = SPLIT_REND_HR_TRAJECTORIES_TO_TEST[0] 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, renderer_fmt="BINAURAL_SPLIT_PCM", ) tests/split_rendering/utils.py +27 −13 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ def run_full_chain_split_rendering( pre_trajectory: Path, post_trajectory: Path, output_path_base: Path, renderer_fmt: str = "BINAURAL_SPLIT_CODED", binary_suffix: str = "", is_comparetest: bool = False, ) -> Tuple[np.ndarray, int]: Loading @@ -64,8 +65,10 @@ def run_full_chain_split_rendering( cut_in_file = tmp_dir.joinpath("cut_input.wav") ivas_bitstream = tmp_dir.joinpath("ivas.192") split_bitstream = tmp_dir.joinpath("split.bit") if renderer_fmt == "BINAURAL_SPLIT_PCM": split_md_file = tmp_dir.joinpath("split_md.bin") out_file = output_path_base.joinpath( f"{in_fmt}_{bitrate}bps_{pre_trajectory.stem}_split_full_{post_trajectory.stem}__config_{render_config.stem}.wav" f"{in_fmt}_{bitrate}bps_{renderer_fmt}_{pre_trajectory.stem}_split_full_{post_trajectory.stem}_config_{render_config.stem}.wav" ) # check for metadata files Loading Loading @@ -99,10 +102,6 @@ def run_full_chain_split_rendering( cmd[3] = str(FORMAT_TO_FILE_SMOKETEST[in_fmt]) cmd[4] = str(ivas_bitstream) # set maximum ISM bitrate based on number of objects if in_fmt.upper().startswith("ISM"): cmd[1] = IVAS_MAX_ISM_BITRATE[in_fmt[3]] cmd[1:1] = FORMAT_TO_IVAS_COD_FORMAT[in_fmt] if in_meta_files: Loading @@ -116,9 +115,13 @@ def run_full_chain_split_rendering( cmd[0] += binary_suffix cmd[2] = str(pre_trajectory) cmd[4] = str(render_config) cmd[5] = renderer_fmt cmd[7] = str(ivas_bitstream) cmd[8] = str(split_bitstream) if renderer_fmt == "BINAURAL_SPLIT_PCM": cmd[5:5] = ["-om", str(split_md_file)] run_cmd(cmd) # run split renderer Loading @@ -126,9 +129,13 @@ def run_full_chain_split_rendering( cmd[0] += binary_suffix cmd[4] = str(split_bitstream) cmd[6] = renderer_fmt cmd[8] = str(out_file) cmd[12] = str(post_trajectory) if renderer_fmt == "BINAURAL_SPLIT_PCM": cmd[7:7] = ["-im", str(split_md_file)] run_cmd(cmd) return readfile(out_file) Loading @@ -141,6 +148,7 @@ def run_external_split_rendering( post_trajectory: Path, output_path_base: Path, plc_error_pattern: Path = None, renderer_fmt: str = "BINAURAL_SPLIT_CODED", binary_suffix: str = "", is_comparetest: bool = False, ) -> Tuple[np.ndarray, int]: Loading @@ -152,15 +160,13 @@ def run_external_split_rendering( with TemporaryDirectory() as tmp_dir: tmp_dir = Path(tmp_dir) split_bitstream = tmp_dir.joinpath("split.bit") if plc_error_pattern: if renderer_fmt == "BINAURAL_SPLIT_PCM": split_md_file = tmp_dir.joinpath("split_md.bin") out_file = output_path_base.joinpath( f"{in_fmt}_{pre_trajectory.stem}_split_ext_{post_trajectory.stem}__config_{render_config.stem}_plc_{plc_error_pattern.stem}.wav" f"{in_fmt}_{renderer_fmt}_{pre_trajectory.stem}_split_ext_{post_trajectory.stem}_config_{render_config.stem}.wav" ) else: out_file = output_path_base.joinpath( f"{in_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}") # check for metadata files if in_fmt.upper().startswith("ISM") or in_fmt.upper().startswith("MASA"): Loading @@ -178,8 +184,12 @@ def run_external_split_rendering( cmd[6] = str(FORMAT_TO_FILE_SMOKETEST[in_fmt]) cmd[8] = in_fmt cmd[10] = str(split_bitstream) cmd[12] = renderer_fmt cmd[14] = str(pre_trajectory) if renderer_fmt == "BINAURAL_SPLIT_PCM": cmd[13:13] = ["-om", str(split_md_file)] if in_meta_files: cmd[9:9] = ["-im", *in_meta_files] Loading @@ -190,9 +200,13 @@ def run_external_split_rendering( cmd[0] += binary_suffix cmd[4] = str(split_bitstream) cmd[6] = renderer_fmt cmd[8] = str(out_file) cmd[12] = str(post_trajectory) if renderer_fmt == "BINAURAL_SPLIT_PCM": cmd[7:7] = ["-im", str(split_md_file)] if plc_error_pattern: cmd[1:1] = ["-prbfi", str(plc_error_pattern)] Loading Loading
scripts/config/self_test.prm +28 −28 Original line number Diff line number Diff line Loading @@ -1383,57 +1383,57 @@ networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit // OSBA FOA 1ISM at 32 kbps, 48kHz in, 48kHz out, BINAURAL out //../IVAS_cod -ism_sba 1 1 testv/stvISM1.csv 32000 48 testv/stvOSBA_1ISM_FOA48c.wav bit //../IVAS_dec BINAURAL 48 bit testv/stvOSBA_1ISM_FOA48c.wav_BINAURAL_32000_48-48.tst ../IVAS_cod -ism_sba 1 1 testv/stvISM1.csv 32000 48 testv/stvOSBA_1ISM_FOA48c.wav bit ../IVAS_dec BINAURAL 48 bit testv/stvOSBA_1ISM_FOA48c.wav_BINAURAL_32000_48-48.tst // OSBA FOA 2ISM at 64 kbps, 48kHz in, 48kHz out, HOA3 out //../IVAS_cod -ism_sba 2 1 testv/stvISM1.csv testv/stvISM2.csv 64000 48 testv/stvOSBA_2ISM_FOA48c.wav bit //../IVAS_dec HOA3 48 bit testv/stvOSBA_2ISM_FOA48c.wav_HOA3_64000_48-48.tst ../IVAS_cod -ism_sba 2 1 testv/stvISM1.csv testv/stvISM2.csv 64000 48 testv/stvOSBA_2ISM_FOA48c.wav bit ../IVAS_dec HOA3 48 bit testv/stvOSBA_2ISM_FOA48c.wav_HOA3_64000_48-48.tst // OSBA FOA 3ISM at 128 kbps, 48kHz in, 48kHz out, 7_1_4 out //../IVAS_cod -ism_sba 3 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 128000 48 testv/stvOSBA_3ISM_FOA48c.wav bit //../IVAS_dec 7_1_4 48 bit testv/stvOSBA_3ISM_FOA48c.wav_7_1_4_128000_48-48.tst ../IVAS_cod -ism_sba 3 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 128000 48 testv/stvOSBA_3ISM_FOA48c.wav bit ../IVAS_dec 7_1_4 48 bit testv/stvOSBA_3ISM_FOA48c.wav_7_1_4_128000_48-48.tst // OSBA FOA 4ISM at 256 kbps, 48kHz in, 48kHz out, EXT out //../IVAS_cod -ism_sba 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 256000 48 testv/stvOSBA_4ISM_FOA48c.wav bit //../IVAS_dec EXT 48 bit testv/stvOSBA_4ISM_FOA48c.wav_EXT_256000_48-48.tst ../IVAS_cod -ism_sba 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 256000 48 testv/stvOSBA_4ISM_FOA48c.wav bit ../IVAS_dec EXT 48 bit testv/stvOSBA_4ISM_FOA48c.wav_EXT_256000_48-48.tst // OSBA FOA 4ISM at 512 kbps, 48kHz in, 48kHz out, BINAURAL out //../IVAS_cod -ism_sba 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 512000 48 testv/stvOSBA_4ISM_FOA48c.wav bit //../IVAS_dec BINAURAL 48 bit testv/stvOSBA_4ISM_FOA48c.wav_BINAURAL_512000_48-48.tst ../IVAS_cod -ism_sba 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 512000 48 testv/stvOSBA_4ISM_FOA48c.wav bit ../IVAS_dec BINAURAL 48 bit testv/stvOSBA_4ISM_FOA48c.wav_BINAURAL_512000_48-48.tst // OSBA 2OA 1ISM at 24.4 kbps, 48kHz in, 48kHz out, FOA out //../IVAS_cod -ism_sba 1 2 testv/stvISM1.csv 24400 48 testv/stvOSBA_1ISM_2OA48c.wav bit //../IVAS_dec FOA 48 bit testv/stvOSBA_1ISM_2OA48c.wav_FOA_24400_48-48.tst ../IVAS_cod -ism_sba 1 2 testv/stvISM1.csv 24400 48 testv/stvOSBA_1ISM_2OA48c.wav bit ../IVAS_dec FOA 48 bit testv/stvOSBA_1ISM_2OA48c.wav_FOA_24400_48-48.tst // OSBA 2OA 2ISM at 48 kbps, 48kHz in, 48kHz out, MONO out //../IVAS_cod -ism_sba 2 2 testv/stvISM1.csv testv/stvISM2.csv 48000 48 testv/stvOSBA_2ISM_2OA48c.wav bit //../IVAS_dec MONO 48 bit testv/stvOSBA_2ISM_2OA48c.wav_MONO_48000_48-48.tst ../IVAS_cod -ism_sba 2 2 testv/stvISM1.csv testv/stvISM2.csv 48000 48 testv/stvOSBA_2ISM_2OA48c.wav bit ../IVAS_dec MONO 48 bit testv/stvOSBA_2ISM_2OA48c.wav_MONO_48000_48-48.tst // OSBA 2OA 3ISM at 96 kbps, 48kHz in, 48kHz out, STEREO out //../IVAS_cod -ism_sba 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 96000 48 testv/stvOSBA_3ISM_2OA48c.wav bit //../IVAS_dec STEREO 48 bit testv/stvOSBA_3ISM_2OA48c.wav_STEREO_96000_48-48.tst ../IVAS_cod -ism_sba 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 96000 48 testv/stvOSBA_3ISM_2OA48c.wav bit ../IVAS_dec STEREO 48 bit testv/stvOSBA_3ISM_2OA48c.wav_STEREO_96000_48-48.tst // OSBA 2OA 4ISM at 384 kbps, 48kHz in, 48kHz out, BINAURAL out //../IVAS_cod -ism_sba 4 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 384000 48 testv/stvOSBA_4ISM_2OA48c.wav bit //../IVAS_dec BINAURAL 48 bit testv/stvOSBA_4ISM_2OA48c.wav_BINAURAL_384000_48-48.tst ../IVAS_cod -ism_sba 4 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 384000 48 testv/stvOSBA_4ISM_2OA48c.wav bit ../IVAS_dec BINAURAL 48 bit testv/stvOSBA_4ISM_2OA48c.wav_BINAURAL_384000_48-48.tst // OSBA 3OA 1ISM at 512 kbps, 48kHz in, 48kHz out, EXT out //../IVAS_cod -ism_sba 1 3 testv/stvISM1.csv 512000 48 testv/stvOSBA_1ISM_3OA48c.wav bit //../IVAS_dec EXT 48 bit testv/stvOSBA_1ISM_3OA48c.wav_EXT_512000_48-48.tst ../IVAS_cod -ism_sba 1 3 testv/stvISM1.csv 512000 48 testv/stvOSBA_1ISM_3OA48c.wav bit ../IVAS_dec EXT 48 bit testv/stvOSBA_1ISM_3OA48c.wav_EXT_512000_48-48.tst // OSBA 3OA 2ISM at 256 kbps, 48kHz in, 48kHz out, 7_1 out //../IVAS_cod -ism_sba 2 3 testv/stvISM1.csv testv/stvISM2.csv 256000 48 testv/stvOSBA_2ISM_3OA48c.wav bit //../IVAS_dec 7_1 48 bit testv/stvOSBA_2ISM_3OA48c.wav_7_1_256000_48-48.tst ../IVAS_cod -ism_sba 2 3 testv/stvISM1.csv testv/stvISM2.csv 256000 48 testv/stvOSBA_2ISM_3OA48c.wav bit ../IVAS_dec 7_1 48 bit testv/stvOSBA_2ISM_3OA48c.wav_7_1_256000_48-48.tst // OSBA 3OA 3ISM at 128 kbps, 48kHz in, 48kHz out, BINAURAL out //../IVAS_cod -ism_sba 3 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 128000 48 testv/stvOSBA_3ISM_3OA48c.wav bit //../IVAS_dec BINAURAL 48 bit testv/stvOSBA_3ISM_3OA48c.wav_BINAURAL_128000_48-48.tst ../IVAS_cod -ism_sba 3 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 128000 48 testv/stvOSBA_3ISM_3OA48c.wav bit ../IVAS_dec BINAURAL 48 bit testv/stvOSBA_3ISM_3OA48c.wav_BINAURAL_128000_48-48.tst // OSBA 3OA 4ISM at 16.4 kbps, 48kHz in, 48kHz out, 5_1 out //../IVAS_cod -ism_sba 4 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 16400 48 testv/stvOSBA_4ISM_3OA48c.wav bit //../IVAS_dec 5_1 48 bit testv/stvOSBA_4ISM_3OA48c.wav_5_1_16400_48-48.tst ../IVAS_cod -ism_sba 4 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 16400 48 testv/stvOSBA_4ISM_3OA48c.wav bit ../IVAS_dec 5_1 48 bit testv/stvOSBA_4ISM_3OA48c.wav_5_1_16400_48-48.tst // OSBA 3OA 4ISM bitrate switching 13.2 to 512, 48kHz in, 48kHz out, BIN out //../IVAS_cod -ism_sba 4 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv switchPaths/sw_13k2_512k.bin 48 testv/stvOSBA_4ISM_3OA48c.wav bit //../IVAS_dec BINAURAL 48 bit testv/stvOSBA_4ISM_3OA48c.wav_BINAURAL_sw_13k2_512k_48-48.tst ../IVAS_cod -ism_sba 4 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stvOSBA_4ISM_3OA48c.wav bit ../IVAS_dec BINAURAL 48 bit testv/stvOSBA_4ISM_3OA48c.wav_BINAURAL_sw_13k2_512k_48-48.tst
tests/split_rendering/constants.py +10 −7 Original line number Diff line number Diff line Loading @@ -53,10 +53,6 @@ from tests.renderer.constants import ( FORMAT_TO_FILE_COMPARETEST, FORMAT_TO_FILE_SMOKETEST, FORMAT_TO_METADATA_FILES, INPUT_FORMATS_AMBI, INPUT_FORMATS_ISM, INPUT_FORMATS_MASA, INPUT_FORMATS_MC, METADATA_SCENES_TO_TEST, ) Loading Loading @@ -132,6 +128,11 @@ FORMAT_TO_NCHAN = { "MASA2": 2, } 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"] IVAS_BITRATES_AMBI = ["80000", "512000"] IVAS_BITRATES_MC = ["128000", "160000", "384000"] IVAS_BITRATES_ISM = ["128000"] Loading @@ -144,6 +145,8 @@ IVAS_MAX_ISM_BITRATE = { "4": "512000", } RENDERER_FORMATS = ["BINAURAL_SPLIT_CODED", "BINAURAL_SPLIT_PCM"] INPUT_DURATION_SEC = 5 """ PLC constants """ Loading @@ -165,7 +168,7 @@ SPLIT_PRE_DEC_CMD = [ "", # 2 -> pre-trajectory file "-render_config", "", # 4 -> render config file "BINAURAL_SPLIT_CODED", "", # 5 -> renderer format "48", "", # 7 -> encoder bitstream "", # 8 -> split rendering bitstream Loading @@ -185,7 +188,7 @@ SPLIT_PRE_REND_CMD = [ "-o", "", # 10 -> split rendering bitstream "-of", "BINAURAL_SPLIT_CODED", "", # 12 -> renderer format "-tf", "", # 14 -> post-trajectory file ] Loading @@ -198,7 +201,7 @@ SPLIT_POST_REND_CMD = [ "-i", "", # 4 -> split rendering bitstream "-if", "BINAURAL_SPLIT_CODED", "", # 6 -> renderer format "-o", "", # 8 -> output file "-of", Loading
tests/split_rendering/test_split_rendering.py +64 −11 Original line number Diff line number Diff line Loading @@ -41,9 +41,9 @@ 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 or in_fmt in INPUT_FORMATS_MC) 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 "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 @@ -56,7 +56,7 @@ def check_xfail(test_info, in_fmt, render_config, bitrate=None): if ( bitrate and (in_fmt in INPUT_FORMATS_ISM) and (in_fmt in INPUT_FORMATS_ISM_SPLIT_REND) and (int(bitrate) > int(IVAS_MAX_ISM_BITRATE[in_fmt[-1]])) ): pytest.skip(f"Unsupported configuration with {in_fmt} at {bitrate}bps") Loading @@ -68,7 +68,7 @@ def check_xfail(test_info, in_fmt, render_config, bitrate=None): @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_AMBI) @pytest.mark.parametrize("bitrate", IVAS_BITRATES_AMBI) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI_SPLIT_REND) def test_ambisonics_full_chain_split( test_info, in_fmt, bitrate, render_config, trajectory ): Loading @@ -89,7 +89,7 @@ def test_ambisonics_full_chain_split( @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_AMBI) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI_SPLIT_REND) def test_ambisonics_external_split(test_info, in_fmt, render_config, trajectory): check_xfail(test_info, in_fmt, render_config) Loading @@ -111,7 +111,7 @@ def test_ambisonics_external_split(test_info, in_fmt, render_config, trajectory) @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_MC) @pytest.mark.parametrize("bitrate", IVAS_BITRATES_MC) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MC[2:]) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MC_SPLIT_REND) def test_multichannel_full_chain_split( test_info, in_fmt, bitrate, render_config, trajectory ): Loading @@ -132,7 +132,7 @@ def test_multichannel_full_chain_split( @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_MC) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MC[2:]) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MC_SPLIT_REND) def test_multichannel_external_split(test_info, in_fmt, render_config, trajectory): check_xfail(test_info, in_fmt, render_config) Loading @@ -154,7 +154,7 @@ def test_multichannel_external_split(test_info, in_fmt, render_config, trajector @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_ISM) @pytest.mark.parametrize("bitrate", IVAS_BITRATES_ISM) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_ISM) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_ISM_SPLIT_REND) def test_ism_full_chain_split(test_info, in_fmt, bitrate, render_config, trajectory): check_xfail(test_info, in_fmt, render_config, bitrate) Loading @@ -173,7 +173,7 @@ def test_ism_full_chain_split(test_info, in_fmt, bitrate, render_config, traject @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_ISM) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_ISM) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_ISM_SPLIT_REND) def test_ism_external_split(test_info, in_fmt, render_config, trajectory): check_xfail(test_info, in_fmt, render_config) Loading @@ -195,7 +195,7 @@ def test_ism_external_split(test_info, in_fmt, render_config, trajectory): @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_MASA) @pytest.mark.parametrize("bitrate", IVAS_BITRATES_MASA) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MASA) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MASA_SPLIT_REND) def test_masa_full_chain_split(test_info, in_fmt, bitrate, render_config, trajectory): check_xfail(test_info, in_fmt, render_config, bitrate) Loading @@ -218,7 +218,7 @@ def test_masa_full_chain_split(test_info, in_fmt, bitrate, render_config, trajec @pytest.mark.parametrize("error_pattern", PLC_ERROR_PATTERNS) @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_PLC) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI[-1:]) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI_SPLIT_REND[-1:]) def test_post_rend_plc(test_info, in_fmt, render_config, trajectory, error_pattern): check_xfail(test_info, in_fmt, render_config) Loading @@ -233,3 +233,56 @@ def test_post_rend_plc(test_info, in_fmt, render_config, trajectory, error_patte output_path_base=OUTPUT_PATH_CUT, plc_error_pattern=ERROR_PATTERNS_DIR.joinpath(f"{error_pattern}.ep"), ) """ BINAURAL_SPLIT_PCM """ 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"), ] @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) trajectory = SPLIT_REND_HR_TRAJECTORIES_TO_TEST[0] 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( in_fmt=in_fmt, bitrate=bitrate, render_config=RENDER_CFG_DIR.joinpath(f"{render_config}.txt"), pre_trajectory=pre_trajectory, post_trajectory=post_trajectory, output_path_base=OUTPUT_PATH_CUT, renderer_fmt="BINAURAL_SPLIT_PCM", ) external_split_pcm_params = [ ("FOA", "split_renderer_config_3dofhq_512k_lc3plus"), ("5_1", "split_renderer_config_1dof_768k_default"), ("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) trajectory = SPLIT_REND_HR_TRAJECTORIES_TO_TEST[0] 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, renderer_fmt="BINAURAL_SPLIT_PCM", )
tests/split_rendering/test_split_rendering_be_comparison.py +61 −8 Original line number Diff line number Diff line Loading @@ -41,7 +41,7 @@ from tests.split_rendering.utils import * @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_AMBI) @pytest.mark.parametrize("bitrate", IVAS_BITRATES_AMBI) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI_SPLIT_REND) def test_ambisonics_full_chain_split( test_info, in_fmt, bitrate, render_config, trajectory ): Loading @@ -62,7 +62,7 @@ def test_ambisonics_full_chain_split( @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_AMBI) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI_SPLIT_REND) def test_ambisonics_external_split(test_info, in_fmt, render_config, trajectory): check_xfail(test_info, in_fmt, render_config) Loading @@ -84,7 +84,7 @@ def test_ambisonics_external_split(test_info, in_fmt, render_config, trajectory) @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_MC) @pytest.mark.parametrize("bitrate", IVAS_BITRATES_MC) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MC[2:]) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MC_SPLIT_REND) def test_multichannel_full_chain_split( test_info, in_fmt, bitrate, render_config, trajectory ): Loading @@ -105,7 +105,7 @@ def test_multichannel_full_chain_split( @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_MC) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MC[2:]) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MC_SPLIT_REND) def test_multichannel_external_split(test_info, in_fmt, render_config, trajectory): check_xfail(test_info, in_fmt, render_config) Loading @@ -127,7 +127,7 @@ def test_multichannel_external_split(test_info, in_fmt, render_config, trajector @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_ISM) @pytest.mark.parametrize("bitrate", IVAS_BITRATES_ISM) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_ISM) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_ISM_SPLIT_REND) def test_ism_full_chain_split(test_info, in_fmt, bitrate, render_config, trajectory): check_xfail(test_info, in_fmt, render_config, bitrate) Loading @@ -146,7 +146,7 @@ def test_ism_full_chain_split(test_info, in_fmt, bitrate, render_config, traject @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_ISM) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_ISM) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_ISM_SPLIT_REND) def test_ism_external_split(test_info, in_fmt, render_config, trajectory): check_xfail(test_info, in_fmt, render_config) Loading @@ -168,7 +168,7 @@ def test_ism_external_split(test_info, in_fmt, render_config, trajectory): @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_MASA) @pytest.mark.parametrize("bitrate", IVAS_BITRATES_MASA) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MASA) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_MASA_SPLIT_REND) def test_masa_full_chain_split(test_info, in_fmt, bitrate, render_config, trajectory): check_xfail(test_info, in_fmt, render_config, bitrate) Loading @@ -191,7 +191,7 @@ def test_masa_full_chain_split(test_info, in_fmt, bitrate, render_config, trajec @pytest.mark.parametrize("error_pattern", PLC_ERROR_PATTERNS) @pytest.mark.parametrize("trajectory", SPLIT_REND_HR_TRAJECTORIES_TO_TEST) @pytest.mark.parametrize("render_config", RENDERER_CONFIGS_TO_TEST_PLC) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI[-1:]) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_AMBI_SPLIT_REND[-1:]) def test_post_rend_plc(test_info, in_fmt, render_config, trajectory, error_pattern): check_xfail(test_info, in_fmt, render_config) Loading @@ -206,3 +206,56 @@ def test_post_rend_plc(test_info, in_fmt, render_config, trajectory, error_patte post_trajectory=post_trajectory, plc_error_pattern=ERROR_PATTERNS_DIR.joinpath(f"{error_pattern}.ep"), ) """ BINAURAL_SPLIT_PCM """ 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"), ] @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) trajectory = SPLIT_REND_HR_TRAJECTORIES_TO_TEST[0] 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, renderer_fmt="BINAURAL_SPLIT_PCM", ) external_split_pcm_params = [ ("FOA", "split_renderer_config_3dofhq_512k_lc3plus"), ("5_1", "split_renderer_config_1dof_768k_default"), ("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) trajectory = SPLIT_REND_HR_TRAJECTORIES_TO_TEST[0] 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, renderer_fmt="BINAURAL_SPLIT_PCM", )
tests/split_rendering/utils.py +27 −13 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ def run_full_chain_split_rendering( pre_trajectory: Path, post_trajectory: Path, output_path_base: Path, renderer_fmt: str = "BINAURAL_SPLIT_CODED", binary_suffix: str = "", is_comparetest: bool = False, ) -> Tuple[np.ndarray, int]: Loading @@ -64,8 +65,10 @@ def run_full_chain_split_rendering( cut_in_file = tmp_dir.joinpath("cut_input.wav") ivas_bitstream = tmp_dir.joinpath("ivas.192") split_bitstream = tmp_dir.joinpath("split.bit") if renderer_fmt == "BINAURAL_SPLIT_PCM": split_md_file = tmp_dir.joinpath("split_md.bin") out_file = output_path_base.joinpath( f"{in_fmt}_{bitrate}bps_{pre_trajectory.stem}_split_full_{post_trajectory.stem}__config_{render_config.stem}.wav" f"{in_fmt}_{bitrate}bps_{renderer_fmt}_{pre_trajectory.stem}_split_full_{post_trajectory.stem}_config_{render_config.stem}.wav" ) # check for metadata files Loading Loading @@ -99,10 +102,6 @@ def run_full_chain_split_rendering( cmd[3] = str(FORMAT_TO_FILE_SMOKETEST[in_fmt]) cmd[4] = str(ivas_bitstream) # set maximum ISM bitrate based on number of objects if in_fmt.upper().startswith("ISM"): cmd[1] = IVAS_MAX_ISM_BITRATE[in_fmt[3]] cmd[1:1] = FORMAT_TO_IVAS_COD_FORMAT[in_fmt] if in_meta_files: Loading @@ -116,9 +115,13 @@ def run_full_chain_split_rendering( cmd[0] += binary_suffix cmd[2] = str(pre_trajectory) cmd[4] = str(render_config) cmd[5] = renderer_fmt cmd[7] = str(ivas_bitstream) cmd[8] = str(split_bitstream) if renderer_fmt == "BINAURAL_SPLIT_PCM": cmd[5:5] = ["-om", str(split_md_file)] run_cmd(cmd) # run split renderer Loading @@ -126,9 +129,13 @@ def run_full_chain_split_rendering( cmd[0] += binary_suffix cmd[4] = str(split_bitstream) cmd[6] = renderer_fmt cmd[8] = str(out_file) cmd[12] = str(post_trajectory) if renderer_fmt == "BINAURAL_SPLIT_PCM": cmd[7:7] = ["-im", str(split_md_file)] run_cmd(cmd) return readfile(out_file) Loading @@ -141,6 +148,7 @@ def run_external_split_rendering( post_trajectory: Path, output_path_base: Path, plc_error_pattern: Path = None, renderer_fmt: str = "BINAURAL_SPLIT_CODED", binary_suffix: str = "", is_comparetest: bool = False, ) -> Tuple[np.ndarray, int]: Loading @@ -152,15 +160,13 @@ def run_external_split_rendering( with TemporaryDirectory() as tmp_dir: tmp_dir = Path(tmp_dir) split_bitstream = tmp_dir.joinpath("split.bit") if plc_error_pattern: if renderer_fmt == "BINAURAL_SPLIT_PCM": split_md_file = tmp_dir.joinpath("split_md.bin") out_file = output_path_base.joinpath( f"{in_fmt}_{pre_trajectory.stem}_split_ext_{post_trajectory.stem}__config_{render_config.stem}_plc_{plc_error_pattern.stem}.wav" f"{in_fmt}_{renderer_fmt}_{pre_trajectory.stem}_split_ext_{post_trajectory.stem}_config_{render_config.stem}.wav" ) else: out_file = output_path_base.joinpath( f"{in_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}") # check for metadata files if in_fmt.upper().startswith("ISM") or in_fmt.upper().startswith("MASA"): Loading @@ -178,8 +184,12 @@ def run_external_split_rendering( cmd[6] = str(FORMAT_TO_FILE_SMOKETEST[in_fmt]) cmd[8] = in_fmt cmd[10] = str(split_bitstream) cmd[12] = renderer_fmt cmd[14] = str(pre_trajectory) if renderer_fmt == "BINAURAL_SPLIT_PCM": cmd[13:13] = ["-om", str(split_md_file)] if in_meta_files: cmd[9:9] = ["-im", *in_meta_files] Loading @@ -190,9 +200,13 @@ def run_external_split_rendering( cmd[0] += binary_suffix cmd[4] = str(split_bitstream) cmd[6] = renderer_fmt cmd[8] = str(out_file) cmd[12] = str(post_trajectory) if renderer_fmt == "BINAURAL_SPLIT_PCM": cmd[7:7] = ["-im", str(split_md_file)] if plc_error_pattern: cmd[1:1] = ["-prbfi", str(plc_error_pattern)] Loading