Commit e0d349c7 authored by Ke Zhao's avatar Ke Zhao
Browse files

Add split rendering BINAURAL_SPLIT_PCM tests

parent 2e7e8c95
Loading
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -145,6 +145,8 @@ IVAS_MAX_ISM_BITRATE = {
    "4": "512000",
}

RENDERER_FORMATS = ["BINAURAL_SPLIT_CODED", "BINAURAL_SPLIT_PCM"]

INPUT_DURATION_SEC = 5

""" PLC constants """
@@ -166,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
@@ -186,7 +188,7 @@ SPLIT_PRE_REND_CMD = [
    "-o",
    "",  # 10 -> split rendering bitstream
    "-of",
    "BINAURAL_SPLIT_CODED",
    "",  # 12 -> renderer format
    "-tf",
    "",  # 14 -> post-trajectory file
]
@@ -199,7 +201,7 @@ SPLIT_POST_REND_CMD = [
    "-i",
    "",  # 4 -> split rendering bitstream
    "-if",
    "BINAURAL_SPLIT_CODED",
    "",  # 6 -> renderer format
    "-o",
    "",  # 8 -> output file
    "-of",
+53 −0
Original line number Diff line number Diff line
@@ -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",
    )
+53 −0
Original line number Diff line number Diff line
@@ -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",
    )
+27 −9
Original line number Diff line number Diff line
@@ -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]:
@@ -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
@@ -112,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
@@ -122,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)
@@ -137,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]:
@@ -148,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:
            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"
            )
        else:
        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}.wav"
            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}")

        # check for metadata files
        if in_fmt.upper().startswith("ISM") or in_fmt.upper().startswith("MASA"):
@@ -174,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]

@@ -186,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)]