Commit 8c8231e0 authored by Archit Tamarapu's avatar Archit Tamarapu
Browse files

[fix] add an argument for LTV dir and retrieve correct metadata files since...

[fix] add an argument for LTV dir and retrieve correct metadata files since create_short_testvectors doesn't copy them over. formatting.
parent 6cdfba93
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -204,6 +204,13 @@ def pytest_addoption(parser):
        default=False,
    )

    parser.addoption(
        "--ltv_dir",
        action="store",
        type=Path,
        default=None,
    )

    parser.addoption(
        "--dut_fr",
        help="Render frame size for the DUT output.",
+29 −27
Original line number Diff line number Diff line
@@ -42,7 +42,6 @@ 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)
@@ -61,25 +60,34 @@ FILE_IDS = [
    "MASA",
]
FILE_IDS_LTV = [
    "ltv48_STEREO",
    "ltv48_MC51",
    "ltv48_MC71",
    "ltv48_MC512",
    "ltv48_MC514",
    "ltv48_MC714",
    "ltv48_ISM",
    "ltv48_MASA",
    s.format(fs)
    for s in [
        "ltv{}_STEREO",
        "ltv{}_MC51",
        "ltv{}_MC71",
        "ltv{}_MC512",
        "ltv{}_MC514",
        "ltv{}_MC714",
        "ltv{}_FOA",
        "ltv{}_HOA2",
        "ltv{}_HOA3",
        "ltv{}_1ISM",
        "ltv{}_2ISM",
        "ltv{}_3ISM",
        "ltv{}_4ISM",
        "ltv{}_MASA",
    ]
    for fs in ["16", "32", "48"]
]


def collect_files(use_ltv: bool = False, ltv_dir: Path = None):
    IDS = FILE_IDS_LTV if use_ltv else FILE_IDS
    SEARCH_DIR = ltv_dir if use_ltv and ltv_dir else TEST_VECTOR_DIR

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()
        for f in SEARCH_DIR.iterdir()
        if f.suffix == ".wav"
        and any([id in f.name for id in IDS])
        and "_cut" not in f.name
@@ -87,19 +95,12 @@ def collect_files(use_ltv: bool = False):
    return files


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

    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)
        suffix = "" if use_ltv else "_cut"
        out_file = TEST_VECTOR_DIR.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)

@@ -115,5 +116,6 @@ if __name__ == "__main__":

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

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

TESTS_DIR = Path(__file__).parent

@@ -116,6 +121,7 @@ BITRATE_ISM = {
}

FORMAT_TO_METADATA_FILES = {"MASA": "stv{}MASA{}TC{}c.met", "ISM": "stvISM{}.csv"}
FORMAT_TO_METADATA_FILES_LTV = {"MASA": "ltv48_MASA{}TC.met", "ISM": "ltvISM{}.csv"}

FORMAT_TO_METADATA_FILES_RENDERER = {
    "ISM1": [str(TESTV_DIR.joinpath("stvISM1.csv"))],
@@ -143,6 +149,26 @@ FORMAT_TO_METADATA_FILES_RENDERER = {
    "MASA1": [str(TESTV_DIR.joinpath("stv1MASA1TC48c.met"))],
    "MASA2": [str(TESTV_DIR.joinpath("stv2MASA2TC48c.met"))],
}
FORMAT_TO_METADATA_FILES_RENDERER_LTV = {
    "ISM1": [str(TESTV_DIR.joinpath("ltvISM1.csv"))],
    "ISM2": [
        str(TESTV_DIR.joinpath("ltvISM1.csv")),
        str(TESTV_DIR.joinpath("ltvISM2.csv")),
    ],
    "ISM3": [
        str(TESTV_DIR.joinpath("ltvISM1.csv")),
        str(TESTV_DIR.joinpath("ltvISM2.csv")),
        str(TESTV_DIR.joinpath("ltvISM3.csv")),
    ],
    "ISM4": [
        str(TESTV_DIR.joinpath("ltvISM1.csv")),
        str(TESTV_DIR.joinpath("ltvISM2.csv")),
        str(TESTV_DIR.joinpath("ltvISM3.csv")),
        str(TESTV_DIR.joinpath("ltvISM4.csv")),
    ],
    "MASA1": [str(TESTV_DIR.joinpath("ltv48_MASA1TC.met"))],
    "MASA2": [str(TESTV_DIR.joinpath("ltv48_MASA2TC.met"))],
}


HR_TRAJECTORIES_TO_TEST = ["headrot_case00_3000_q", "headrot"]
+51 −37
Original line number Diff line number Diff line
@@ -29,18 +29,60 @@
   accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and
   the United Nations Convention on Contracts on the International Sales of Goods.
"""
import pytest
import itertools

import pytest

from tests.hrtf_binary_loading.utils import *

from .constants import (
    HRTF_TAGS,
    MC_BITRATE_FOR_FORMAT,
    HRTF_TAG_DIFF_FROM_ROM,
    HRTF_TAG_SAME_AS_ROM,
    HRTF_TAGS,
    MC_BITRATE_FOR_FORMAT,
)


def get_metadata_file_masa(test_info, in_dir, in_tc, fs):
    if test_info.config.option.use_ltv:
        if test_info.config.option.ltv_dir:
            DIR = test_info.config.option.ltv_dir
        else:
            DIR = LTV_DIR
        metadata_file = str(
            DIR.joinpath(FORMAT_TO_METADATA_FILES_LTV["MASA"].format(in_tc))
        )
    else:
        metadata_file = str(
            TESTV_DIR.joinpath(
                FORMAT_TO_METADATA_FILES["MASA"].format(in_dir, in_tc, fs)
            )
        )

    return metadata_file


def get_metadata_filelist_ism(test_info, in_fmt, in_fs):
    if test_info.config.option.use_ltv:
        if test_info.config.option.ltv_dir:
            DIR = test_info.config.option.ltv_dir
        else:
            DIR = LTV_DIR
        metadata_file_list = [
            str(DIR.joinpath(FORMAT_TO_METADATA_FILES_LTV["ISM"].format(n + 1)))
            for n in range(int(in_fmt))
        ]
    else:
        metadata_file_list = [
            str(
                TESTV_DIR.joinpath(FORMAT_TO_METADATA_FILES["ISM"].format(n + 1, in_fs))
            )
            for n in range(int(in_fmt))
        ]

    return metadata_file_list


""" Binary file """


@@ -185,9 +227,7 @@ def test_sba_binaural_headrotation(
@pytest.mark.parametrize("hrtf_tag", HRTF_TAGS)
def test_masa_binaural_static(test_info, in_tc, in_dir, fs, out_fmt, hrtf_tag):
    bitrate = 256000
    metadata_file = str(
        TESTV_DIR.joinpath(FORMAT_TO_METADATA_FILES["MASA"].format(in_dir, in_tc, fs))
    )
    metadata_file = get_metadata_file_masa(test_info, 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)
@@ -216,9 +256,7 @@ def test_masa_binaural_headrotation(
    test_info, in_tc, in_dir, fs, out_fmt, trj_file, hrtf_tag
):
    bitrate = 256000
    metadata_file = str(
        TESTV_DIR.joinpath(FORMAT_TO_METADATA_FILES["MASA"].format(in_dir, in_tc, fs))
    )
    metadata_file = get_metadata_file_masa(test_info, 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)
@@ -250,13 +288,7 @@ def test_ism_binaural_static(test_info, in_fmt, out_fs, out_fmt, hrtf_tag):
    in_fs = 48
    bitrate = BITRATE_ISM[in_fmt]
    option_list = ["-ism", in_fmt]
    metadata_file_list = []
    for n in range(int(in_fmt)):
        test = str(
            TESTV_DIR.joinpath(FORMAT_TO_METADATA_FILES["ISM"].format(n + 1, in_fs))
        )
        metadata_file_list.append(test)
    option_list.extend(metadata_file_list)
    option_list.extend(get_metadata_filelist_ism(test_info, in_fmt, in_fs))
    if test_info.config.option.use_ltv:
        in_file = FORMAT_TO_FILE_ISM_LTV_WOEXT.format(in_fs, in_fmt)
    else:
@@ -286,13 +318,7 @@ def test_ism_binaural_headrotation(
    in_fs = 48
    bitrate = BITRATE_ISM[in_fmt]
    option_list = ["-ism", in_fmt]
    metadata_file_list = []
    for n in range(int(in_fmt)):
        test = str(
            TESTV_DIR.joinpath(FORMAT_TO_METADATA_FILES["ISM"].format(n + 1, in_fs))
        )
        metadata_file_list.append(test)
    option_list.extend(metadata_file_list)
    option_list.extend(get_metadata_filelist_ism(test_info, in_fmt, in_fs))
    if test_info.config.option.use_ltv:
        in_file = FORMAT_TO_FILE_ISM_LTV_WOEXT.format(in_fs, in_fmt)
    else:
@@ -323,13 +349,7 @@ def test_ism_binaural_roomreverb_static(test_info, in_fmt, out_fs, out_fmt, hrtf
    in_fs = 48
    bitrate = BITRATE_ISM[in_fmt]
    option_list = ["-ism", in_fmt]
    metadata_file_list = []
    for n in range(int(in_fmt)):
        test = str(
            TESTV_DIR.joinpath(FORMAT_TO_METADATA_FILES["ISM"].format(n + 1, in_fs))
        )
        metadata_file_list.append(test)
    option_list.extend(metadata_file_list)
    option_list.extend(get_metadata_filelist_ism(test_info, in_fmt, in_fs))
    if test_info.config.option.use_ltv:
        in_file = FORMAT_TO_FILE_ISM_LTV_WOEXT.format(in_fs, in_fmt)
    else:
@@ -359,13 +379,7 @@ def test_ism_binaural_roomreverb_headrotation(
    in_fs = 48
    bitrate = BITRATE_ISM[in_fmt]
    option_list = ["-ism", in_fmt]
    metadata_file_list = []
    for n in range(int(in_fmt)):
        test = str(
            TESTV_DIR.joinpath(FORMAT_TO_METADATA_FILES["ISM"].format(n + 1, in_fs))
        )
        metadata_file_list.append(test)
    option_list.extend(metadata_file_list)
    option_list.extend(get_metadata_filelist_ism(test_info, in_fmt, in_fs))
    if test_info.config.option.use_ltv:
        in_file = FORMAT_TO_FILE_ISM_LTV_WOEXT.format(in_fs, in_fmt)
    else:
+20 −14
Original line number Diff line number Diff line
@@ -45,6 +45,22 @@ from tests.renderer.constants import (

from .constants import HRTF_TAGS


def get_metadata_files(test_info, in_fmt):
    try:
        if test_info.config.option.use_ltv:
            metadata_files = FORMAT_TO_METADATA_FILES_RENDERER_LTV[in_fmt]
            if test_info.config.option.ltv_dir:
                metadata_files = [
                    m.replace(str(TESTV_DIR), str(test_info.config.option.ltv_dir))
                    for m in metadata_files
                    ]
    except Exception:
        metadata_files = None
    
    return metadata_files


""" Ambisonics """


@@ -128,17 +144,12 @@ def test_ism_binaural_static_with_binary_hrir(
    test_info, in_fmt, out_fmt, frame_size, hrtf_tag
):

    try:
        in_meta_files = FORMAT_TO_METADATA_FILES_RENDERER[in_fmt]
    except:
        in_meta_files = None

    compare_renderer_vs_renderer_with_binary_hrir(
        test_info,
        in_fmt,
        out_fmt,
        hrtf_tag,
        in_meta_files=in_meta_files,
        in_meta_files=get_metadata_files(test_info, in_fmt),
        frame_size=frame_size,
    )

@@ -152,18 +163,13 @@ def test_ism_binaural_headrotation_with_binary_hrir(
    test_info, in_fmt, out_fmt, trj_file, frame_size, hrtf_tag
):

    try:
        in_meta_files = FORMAT_TO_METADATA_FILES_RENDERER[in_fmt]
    except:
        in_meta_files = None

    compare_renderer_vs_renderer_with_binary_hrir(
        test_info,
        in_fmt,
        out_fmt,
        hrtf_tag,
        trj_file=HR_TRAJECTORY_DIR.joinpath(f"{trj_file}.csv"),
        in_meta_files=in_meta_files,
        in_meta_files=get_metadata_files(test_info, in_fmt),
        frame_size=frame_size,
    )

@@ -184,7 +190,7 @@ def test_masa_binaural_static_with_binary_hrir(
        in_fmt,
        out_fmt,
        hrtf_tag,
        in_meta_files=FORMAT_TO_METADATA_FILES_RENDERER[in_fmt],
        in_meta_files=get_metadata_files(test_info, in_fmt),
    )


@@ -202,7 +208,7 @@ def test_masa_binaural_headrotation_with_binary_hrir(
        out_fmt,
        hrtf_tag,
        trj_file=HR_TRAJECTORY_DIR.joinpath(f"{trj_file}.csv"),
        in_meta_files=FORMAT_TO_METADATA_FILES_RENDERER[in_fmt],
        in_meta_files=get_metadata_files(test_info, in_fmt),
    )


Loading