Commit 8664456f authored by sagnowski's avatar sagnowski
Browse files

Delete outdated split_rend_lc3plus_cmdlines.py

parent d38ca73d
Loading
Loading
Loading
Loading
Loading
+0 −191
Original line number Diff line number Diff line
"""
Generate command lines for split rendering with LC3plus
"""

import itertools
import os

# Paths
ENC_PATH = "./IVAS_cod"
DEC_PATH = "./IVAS_dec"
REND_PATH = "./IVAS_rend"
TEMP_DIR = "tmp"

# Config values to iterate over
ISM_CONFIGS_NUM_OBJECTS = [1, 2, 3, 4]
IVAS_BITRATES = [128000]
PRE_HEAD_ROT_FILES = [
    "Workspace_msvc/trajectories/pre-renderer_pose_files/pre_yaw-20static.csv"
]
POST_HEAD_ROT_FILES = [
    "Workspace_msvc/trajectories/post-renderer_pose_files/post_0static.csv"
]
RENDER_CONFIG_FILES = [
    #######################################################
    # Alternative 2 - LC3plus with CLDFB pose correction
    "Workspace_msvc/renderer_configs/split_renderer_config_768_1dof.txt",
    "Workspace_msvc/renderer_configs/split_renderer_config_512_2dof.txt",
    None,  # Alternative 2 is the default when no rendering config file is given on command line
    #######################################################
    # Alternative 3 - LC3plus with multi-stream (TD) pose correction
    "Workspace_msvc/renderer_configs/split_renderer_config_768_1dof_tdposecorr.txt",
    "Workspace_msvc/renderer_configs/split_renderer_config_1536_2dof_tdposecorr.txt",
]


def audio_for_ism(num_objects):
    return f"scripts/testv/stv{num_objects}ISM48s.wav"


def metadata_for_ism(num_objects):
    return f"scripts/testv/stvISM{num_objects}.csv"


def basename(file_path):
    basename_w_ext = os.path.basename(file_path)
    return os.path.splitext(basename_w_ext)[0]


# Full chain: IVAS_cod -> IVAS_dec -> IVAS_rend(post)
def full_chain(
    num_objects, ivas_bitrate, pre_head_rot_file, render_config_file, post_head_rot_file
):
    bs_name = f"{TEMP_DIR}/ism{num_objects}_b{ivas_bitrate}_full_chain.g192"
    cod = [
        ENC_PATH,
        "-ism",
        str(num_objects),
        *[metadata_for_ism(i + 1) for i in range(num_objects)],
        str(ivas_bitrate),
        "48",
        audio_for_ism(num_objects),
        bs_name,
    ]

    render_config_infix = (
        f"##{basename(render_config_file)}" if render_config_file else ""
    )
    split_bs_name = bs_name.replace(
        ".g192", f"##{basename(pre_head_rot_file)}{render_config_infix}##split.bs"
    )
    render_config_args = (
        ["-render_config", render_config_file] if render_config_file else []
    )
    dec = [
        DEC_PATH,
        "-T",
        pre_head_rot_file,
        *render_config_args,
        "SPLIT_BINAURAL",
        "48",
        bs_name,
        split_bs_name,
    ]

    binaural_output_name = split_bs_name.replace(
        ".bs", f"##{basename(post_head_rot_file)}##binaural.wav"
    )
    rend = [
        REND_PATH,
        "-i",
        split_bs_name,
        "-if",
        "BINAURAL_SPLIT_CODED",
        "-of",
        "BINAURAL",
        "-fs",
        "48",
        "-tf",
        post_head_rot_file,
        "-o",
        binaural_output_name,
    ]

    return [cod, dec, rend]


# Renderer chain: IVAS_rend(pre) -> IVAS_rend(post)
def rend_chain(num_objects, pre_head_rot_file, render_config_file, post_head_rot_file):
    render_config_infix = (
        f"##{basename(render_config_file)}" if render_config_file else ""
    )
    split_bs_name = f"{TEMP_DIR}/ism{num_objects}_rend_chain##{basename(pre_head_rot_file)}{render_config_infix}##split.bs"
    render_config_args = (
        ["-render_config", render_config_file] if render_config_file else []
    )
    pre = [
        REND_PATH,
        "-i",
        audio_for_ism(num_objects),
        "-if",
        f"ISM{num_objects}",
        "-im",
        *[metadata_for_ism(i + 1) for i in range(num_objects)],
        "-of",
        "BINAURAL_SPLIT_CODED",
        "-fs",
        "48",
        *render_config_args,
        "-tf",
        pre_head_rot_file,
        "-o",
        split_bs_name,
    ]

    binaural_output_name = split_bs_name.replace(
        ".bs", f"##{basename(post_head_rot_file)}##binaural.wav"
    )
    post = [
        REND_PATH,
        "-i",
        split_bs_name,
        "-if",
        "BINAURAL_SPLIT_CODED",
        "-of",
        "BINAURAL",
        "-fs",
        "48",
        "-tf",
        post_head_rot_file,
        "-o",
        binaural_output_name,
    ]

    return [pre, post]


def print_command_list(list_of_lists):
    for lst in list_of_lists:
        print(" ".join(lst))
    print("")  # newline


def main():
    print("\n##########################################")
    print("# Full chain: enc -> dec -> rend(post)")
    print("##########################################\n")
    for args_full_chain in itertools.product(
        # Ordering here must match argument order in function call below!
        ISM_CONFIGS_NUM_OBJECTS,
        IVAS_BITRATES,
        PRE_HEAD_ROT_FILES,
        RENDER_CONFIG_FILES,
        POST_HEAD_ROT_FILES,
    ):
        print_command_list(full_chain(*args_full_chain))

    print("\n##########################################")
    print("# Renderer chain: rend(pre) -> rend(post)")
    print("##########################################\n")
    for args_rend_chain in itertools.product(
        # Ordering here must match argument order in function call below!
        ISM_CONFIGS_NUM_OBJECTS,
        PRE_HEAD_ROT_FILES,
        RENDER_CONFIG_FILES,
        POST_HEAD_ROT_FILES,
    ):
        print_command_list(rend_chain(*args_rend_chain))


if __name__ == "__main__":
    main()