Commit 4f28e53f authored by Archit Tamarapu's avatar Archit Tamarapu
Browse files

add LTV support for renderer and HRTF binary loading tests

parent ae4e7ba6
Loading
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -198,6 +198,12 @@ def pytest_addoption(parser):
        default=False,
    )

    parser.addoption(
        "--use_ltv",
        action="store_true",
        default=False,
    )

    parser.addoption(
        "--dut_fr",
        help="Render frame size for the DUT output.",
+29 −7
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ from cut_pcm import cut_samples

HERE = Path(__file__).parent.resolve()
TEST_VECTOR_DIR = HERE.joinpath("../scripts/testv").resolve()
LTV_DIR = HERE.joinpath("../../ivas-pc-testfiles").resolve()
SCRIPTS_DIR = HERE.joinpath("../scripts").resolve()

sys.path.append(SCRIPTS_DIR)
@@ -59,24 +60,45 @@ FILE_IDS = [
    "ISM",
    "MASA",
]
FILE_IDS_LTV = [
    "ltv48_STEREO",
    "ltv48_MC51",
    "ltv48_MC71",
    "ltv48_MC512",
    "ltv48_MC514",
    "ltv48_MC714",
    "ltv48_ISM",
    "ltv48_MASA",
]


def collect_files():
def collect_files(use_ltv: bool = False):
    if use_ltv:
        IDS = FILE_IDS_LTV
    else:
        IDS = FILE_IDS
    files = [
        f.absolute()
        for f in TEST_VECTOR_DIR.iterdir()
        if f.suffix == ".wav"
        and any([id in f.name for id in FILE_IDS])
        and any([id in f.name for id in IDS])
        and "_cut" not in f.name
    ]
    return files


def create_short_testvectors(cut_len=5.0):
    files = collect_files()
def create_short_testvectors(cut_len=5.0, use_ltv: bool = False):
    files = collect_files(use_ltv)

    for f in files:
        suffix = "_cut"
        if use_ltv:
            out_file = (
                HERE.joinpath("../scripts/testv")
                .resolve()
                .joinpath(f.stem + suffix + f.suffix)
            )
        else:
            out_file = f.parent.joinpath(f.stem + suffix + f.suffix)
        num_channels = audiofile.get_wav_file_info(f)["channels"]
        cut_samples(f, out_file, num_channels, CUT_FROM, f"{cut_len}", GAIN)
@@ -92,6 +114,6 @@ if __name__ == "__main__":
        return x

    parser.add_argument("--cut_len", type=positive_float, default=5.0)
    parser.add_argument("--use_ltv", action="store_true", default=False)
    args = parser.parse_args()
    cut_len = args.cut_len
    sys.exit(create_short_testvectors(cut_len=cut_len))
    sys.exit(create_short_testvectors(cut_len=args.cut_len, use_ltv=args.use_ltv))
+16 −1
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@
import re
from pathlib import Path

from tests.renderer.constants import OUTPUT_FORMATS_BINAURAL, SCRIPTS_DIR, TESTV_DIR
from tests.renderer.constants import OUTPUT_FORMATS_BINAURAL, SCRIPTS_DIR, TESTV_DIR, LTV_DIR

TESTS_DIR = Path(__file__).parent

@@ -93,6 +93,21 @@ FORMAT_TO_FILE_SBA_WOEXT = {
FORMAT_TO_FILE_ISM_WOEXT = "stv{}ISM{}s_cut"
FORMAT_TO_FILE_MASA_WOEXT = "stv{}MASA{}TC{}c_cut"

FORMAT_TO_FILE_MC_LTV_WOEXT = {
    "5_1": "ltv{}_MC51",
    "7_1": "ltv{}_MC71",
    "5_1_2": "ltv{}_MC512",
    "5_1_4": "ltv{}_MC514",
    "7_1_4": "ltv{}_MC714",
}
FORMAT_TO_FILE_SBA_LTV_WOEXT = {
    "1": "ltv{}_FOA",
    "2": "ltv{}_HOA2",
    "3": "ltv{}_HOA3",
}
FORMAT_TO_FILE_ISM_LTV_WOEXT = "ltv{}_{}ISM"
FORMAT_TO_FILE_MASA_LTV_WOEXT = "ltv{}_MASA{}TC"

BITRATE_ISM = {
    "1": 96000,
    "2": 160000,
+40 −10
Original line number Diff line number Diff line
@@ -67,6 +67,9 @@ def test_multichannel_binaural_static(
):
    in_fs = 48
    option_list = ["-mc", in_fmt]
    if test_info.config.option.use_ltv:
        in_file = FORMAT_TO_FILE_MC_LTV_WOEXT[in_fmt].format(in_fs)
    else:
        in_file = FORMAT_TO_FILE_MC_WOEXT[in_fmt].format(in_fs)

    compare_rom_vs_binary(
@@ -99,6 +102,9 @@ def test_multichannel_binaural_headrotation(
):
    in_fs = 48
    option_list = ["-mc", in_fmt]
    if test_info.config.option.use_ltv:
        in_file = FORMAT_TO_FILE_MC_LTV_WOEXT[in_fmt].format(in_fs)
    else:
        in_file = FORMAT_TO_FILE_MC_WOEXT[in_fmt].format(in_fs)

    compare_rom_vs_binary(
@@ -124,6 +130,9 @@ def test_multichannel_binaural_headrotation(
@pytest.mark.parametrize("hrtf_tag", HRTF_TAGS)
def test_sba_binaural_static(test_info, bitrate, in_fmt, fs, out_fmt, hrtf_tag):
    option_list = ["-sba", in_fmt]
    if test_info.config.option.use_ltv:
        in_file = FORMAT_TO_FILE_SBA_LTV_WOEXT[in_fmt].format(fs)
    else:
        in_file = FORMAT_TO_FILE_SBA_WOEXT[in_fmt].format(fs)

    compare_rom_vs_binary(
@@ -148,6 +157,9 @@ def test_sba_binaural_headrotation(
    test_info, bitrate, in_fmt, fs, out_fmt, trj_file, hrtf_tag
):
    option_list = ["-sba", in_fmt]
    if test_info.config.option.use_ltv:
        in_file = FORMAT_TO_FILE_SBA_LTV_WOEXT[in_fmt].format(fs)
    else:
        in_file = FORMAT_TO_FILE_SBA_WOEXT[in_fmt].format(fs)

    compare_rom_vs_binary(
@@ -177,6 +189,9 @@ def test_masa_binaural_static(test_info, in_tc, in_dir, fs, out_fmt, hrtf_tag):
        TESTV_DIR.joinpath(FORMAT_TO_METADATA_FILES["MASA"].format(in_dir, in_tc, fs))
    )
    option_list = ["-masa", in_tc, metadata_file]
    if test_info.config.option.use_ltv:
        in_file = FORMAT_TO_FILE_MASA_LTV_WOEXT.format(fs, in_tc)
    else:
        in_file = FORMAT_TO_FILE_MASA_WOEXT.format(in_dir, in_tc, fs)

    compare_rom_vs_binary(
@@ -205,6 +220,9 @@ def test_masa_binaural_headrotation(
        TESTV_DIR.joinpath(FORMAT_TO_METADATA_FILES["MASA"].format(in_dir, in_tc, fs))
    )
    option_list = ["-masa", in_tc, metadata_file]
    if test_info.config.option.use_ltv:
        in_file = FORMAT_TO_FILE_MASA_LTV_WOEXT.format(fs, in_tc)
    else:
        in_file = FORMAT_TO_FILE_MASA_WOEXT.format(in_dir, in_tc, fs)

    compare_rom_vs_binary(
@@ -239,6 +257,9 @@ def test_ism_binaural_static(test_info, in_fmt, out_fs, out_fmt, hrtf_tag):
        )
        metadata_file_list.append(test)
    option_list.extend(metadata_file_list)
    if test_info.config.option.use_ltv:
        in_file = FORMAT_TO_FILE_ISM_LTV_WOEXT.format(in_fs, in_fmt)
    else:
        in_file = FORMAT_TO_FILE_ISM_WOEXT.format(in_fmt, in_fs)

    compare_rom_vs_binary(
@@ -272,6 +293,9 @@ def test_ism_binaural_headrotation(
        )
        metadata_file_list.append(test)
    option_list.extend(metadata_file_list)
    if test_info.config.option.use_ltv:
        in_file = FORMAT_TO_FILE_ISM_LTV_WOEXT.format(in_fs, in_fmt)
    else:
        in_file = FORMAT_TO_FILE_ISM_WOEXT.format(in_fmt, in_fs)

    compare_rom_vs_binary(
@@ -306,6 +330,9 @@ def test_ism_binaural_roomreverb_static(test_info, in_fmt, out_fs, out_fmt, hrtf
        )
        metadata_file_list.append(test)
    option_list.extend(metadata_file_list)
    if test_info.config.option.use_ltv:
        in_file = FORMAT_TO_FILE_ISM_LTV_WOEXT.format(in_fs, in_fmt)
    else:
        in_file = FORMAT_TO_FILE_ISM_WOEXT.format(in_fmt, in_fs)

    compare_rom_vs_binary(
@@ -339,6 +366,9 @@ def test_ism_binaural_roomreverb_headrotation(
        )
        metadata_file_list.append(test)
    option_list.extend(metadata_file_list)
    if test_info.config.option.use_ltv:
        in_file = FORMAT_TO_FILE_ISM_LTV_WOEXT.format(in_fs, in_fmt)
    else:
        in_file = FORMAT_TO_FILE_ISM_WOEXT.format(in_fmt, in_fs)

    compare_rom_vs_binary(
+5 −2
Original line number Diff line number Diff line
@@ -285,7 +285,7 @@ def compare_rom_vs_binary(
    out_fmt,
    out_fs,
    hrtf_tag: str,
    keep_file: Optional[str] = "no",
    keep_file: Optional[str] = "if failed",
    trj_file: Optional[str] = None,
):
    option_str = "_".join(get_option_list_str(option_list_enc))
@@ -295,6 +295,9 @@ def compare_rom_vs_binary(

    xfail = (hrtf_file == HRTF_BINARY_FILE_DIFF_FROM_ROM)

    if test_info.config.option.use_ltv:
        input_path = LTV_DIR.joinpath(in_file).with_suffix(".wav")
    else:
        input_path = TESTV_DIR.joinpath(in_file).with_suffix(".wav")
    bitstream_path = BITSTREAM_DIR.joinpath(in_file + file_ext)
    run_encoder(
Loading