Commit 63733a50 authored by Lauros Pajunen's avatar Lauros Pajunen
Browse files

Add test for MASA pre-renderer

- Add MASA pre-renderer test to test_renderer_be_comparison.py
- Modify run_renderer() to return output file name string. This makes it possible to retrieve the output metadata file name outside the function.
parent 33a9424b
Loading
Loading
Loading
Loading
Loading
+132 B

File added.

No diff preview for this file type.

+1 −0
Original line number Diff line number Diff line
@@ -196,6 +196,7 @@ CUSTOM_LS_TO_TEST = [
""" Mixed scene ( metadata ) rendering """
METADATA_SCENES_TO_TEST = ["mixed_scene", "mixed_scene_simple"]
METADATA_SCENES_TO_TEST_NO_BE = ["masa_scene"]
METADATA_SCENES_TO_TEST_MASA_PREREND = ["mixed_mc714_foa_masa2_ism4"]

""" Binaural rendering """
OUTPUT_FORMATS_BINAURAL = ["BINAURAL", "BINAURAL_ROOM_IR", "BINAURAL_ROOM_REVERB"]
+24 −0
Original line number Diff line number Diff line
../../../scripts/testv/mixed_mc714_foa_masa2_ism4.wav
7
MC
1
7_1_4
SBA
13
1
MASA
17
2
../../../scripts/testv/stv2MASA2TC48c.met
ISM
19
../../../scripts/testv/stvISM1.csv
ISM
20
../../../scripts/testv/stvISM2.csv
ISM
21
../../../scripts/testv/stvISM3.csv
ISM
22
../../../scripts/testv/stvISM4.csv
 No newline at end of file
+10 −0
Original line number Diff line number Diff line
@@ -232,6 +232,16 @@ def test_masa_binaural_headrotation(test_info, in_fmt, out_fmt, trj_file, framin
    )


@pytest.mark.parametrize("in_fmt", METADATA_SCENES_TO_TEST_MASA_PREREND)
def test_masa_prerend(test_info, in_fmt):
    compare_renderer_vs_mergetarget_plus_meta(
        test_info,
        "META",
        "MASA2",
        metadata_input=TEST_VECTOR_DIR.joinpath(f"{in_fmt}.txt"),
    )


""" Custom loudspeaker layouts """


+39 −7
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@
   the United Nations Convention on Contracts on the International Sales of Goods.
"""

import filecmp
import logging
import os
import subprocess as sp
@@ -111,7 +112,7 @@ def run_renderer(
    is_comparetest: Optional[bool] = False,
    framing_5ms: Optional[bool] = False,
    test_case_name: Optional[str] = None,
) -> Tuple[np.ndarray, int]:
) -> str:
    """CuT creation with standalone renderer"""
    if trj_file is not None:
        trj_name = f"_{trj_file.stem}"
@@ -212,11 +213,11 @@ def run_renderer(

    run_cmd(cmd, env)

    return pyaudio3dtools.audiofile.readfile(out_file)
    return out_file


def compare_renderer_vs_mergetarget(test_info, in_fmt, out_fmt, **kwargs):
    ref, ref_fs = run_renderer(
    out_file_ref = run_renderer(
        in_fmt,
        out_fmt,
        test_case_name=test_info.node.name,
@@ -224,27 +225,58 @@ def compare_renderer_vs_mergetarget(test_info, in_fmt, out_fmt, **kwargs):
        output_path_base=OUTPUT_PATH_REF,
        **kwargs,
    )
    cut, cut_fs = run_renderer(
    ref, ref_fs = pyaudio3dtools.audiofile.readfile(out_file_ref)
    out_file_cut = run_renderer(
        in_fmt, out_fmt, test_case_name=test_info.node.name, **kwargs
    )
    cut, cut_fs = pyaudio3dtools.audiofile.readfile(out_file_cut)
    check_BE(test_info, ref, ref_fs, cut, cut_fs)


def compare_renderer_vs_pyscripts(test_info, in_fmt, out_fmt, **kwargs):
    ref, ref_fs = run_pyscripts(in_fmt, out_fmt, **kwargs)
    cut, cut_fs = run_renderer(
    out_file_cut = run_renderer(
        in_fmt, out_fmt, test_case_name=test_info.node.name, **kwargs
    )
    cut, cut_fs = pyaudio3dtools.audiofile.readfile(out_file_cut)
    check_BE(test_info, ref, ref_fs, cut, cut_fs)


def compare_renderer_args(
    test_info, in_fmt, out_fmt, ref_kwargs: Dict, cut_kwargs: Dict
):
    ref, ref_fs = run_renderer(
    out_file_ref = run_renderer(
        in_fmt, out_fmt, test_case_name=test_info.node.name, **ref_kwargs
    )
    cut, cut_fs = run_renderer(
    ref, ref_fs = pyaudio3dtools.audiofile.readfile(out_file_ref)
    out_file_cut = run_renderer(
        in_fmt, out_fmt, test_case_name=test_info.node.name, **cut_kwargs
    )
    cut, cut_fs = pyaudio3dtools.audiofile.readfile(out_file_cut)
    check_BE(test_info, ref, ref_fs, cut, cut_fs)


def compare_renderer_vs_mergetarget_plus_meta(test_info, in_fmt, out_fmt, metadata_input, **kwargs):
    out_file_ref = run_renderer(
        in_fmt,
        out_fmt,
        metadata_input=metadata_input,
        test_case_name=test_info.node.name,
        binary_suffix=BIN_SUFFIX_MERGETARGET,
        output_path_base=OUTPUT_PATH_REF,
        **kwargs,
    )
    ref, ref_fs = pyaudio3dtools.audiofile.readfile(out_file_ref)
    out_file_cut = run_renderer(
        in_fmt,
        out_fmt,
        metadata_input=metadata_input,
        test_case_name=test_info.node.name,
        **kwargs
    )
    cut, cut_fs = pyaudio3dtools.audiofile.readfile(out_file_cut)
    meta_file_ref = out_file_ref + ".met"
    meta_file_cut = out_file_cut + ".met"
    check_BE(test_info, ref, ref_fs, cut, cut_fs)
    if not filecmp.cmp(meta_file_cut, meta_file_ref):
        pytest.fail("Metadata file differs from reference")