Commit 01cda9cb authored by Jan Kiene's avatar Jan Kiene
Browse files

loop over formats, still buggy though

parent f2d6650f
Loading
Loading
Loading
Loading
+113 −86
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ from tkinter import W
import numpy as np
import sys
import re

PYAUDIO3DTOOLS_PATH = "./scripts/"
sys.path.append(PYAUDIO3DTOOLS_PATH)
from pyaudio3dtools import audioarray, audiofile
@@ -49,36 +50,57 @@ FORMATS = [
    "7_1_4",
    "SBA",
    "MASA1TC",
	"MASA2TC"
    "MASA2TC",
]


TEST_FILE = "./delay_test_file_{}.pcm"
CFG = "ci/delay_test_linux.json"


def get_modes(format: str) -> list:
    modes_cmd = ["python3", "./scripts/runIvasCodec.py", "-l"]
    modes_proc = subprocess.run(modes_cmd, capture_output=True)

    search_str = format
    # TODO: exclude dtx, rate switching
    if format in ["5_1", "5_1_2", "5_1_4", "7_1", "7_1_4"]:
        search_str = "MC_" + format + "_b"
    modes_list = [
        m
        for m in modes_proc.stdout.decode("utf8").split("\n")
        if m.startswith(search_str)
        and not "_ball_" in m
        and not "b_rs" in m
        and not "dtx" in m
        and not "amr" in m
    ]

    return modes_list


def main():
    formats = list(OC_TO_NCHANNELS.keys())
    # for testing
	FORMATS = ["mono"]

	form = FORMATS[0]
    for form in FORMATS[:-2]:
        print(form)

        # generate test signal
        test_file = TEST_FILE.format(form)
	gen_cmd = ["python3", "./ci/generate_delay_measurement_signal.py", form, test_file]
	subprocess.call(gen_cmd)

	# collect modes
	modes_cmd = [
        gen_form = form
        if form == "SBA":
            gen_form = "HOA3"
        gen_cmd = [
            "python3",
		"./scripts/runIvasCodec.py",
		"-l"
            "./ci/generate_delay_measurement_signal.py",
            gen_form,
            test_file,
        ]
	modes_proc = subprocess.run(modes_cmd, capture_output=True)
	search_str = form
	if form in ["5_1", "5_1_2", "5_1_4", "7_1", "7_1_4"]:
		search_str = "MC_" + form
	modes_list = [m for m in modes_proc.stdout.decode("utf8").split("\n") if form in m]
        subprocess.call(gen_cmd)

        modes_list = get_modes(form)
        print(modes_list)

        # run format
        outfolder_delaycmp = "out_delay_cmp"
@@ -92,38 +114,43 @@ def main():
            "-I",
            test_file,
            "-o",
		outfolder_delaycmp
            outfolder_delaycmp,
        ]
        subprocess.call(run_cmd)

        outfolder_nodelaycmp = "out_no_delay_cmp"
        run_cmd_nodelaycmp = list(run_cmd)
        run_cmd_nodelaycmp[-1] = outfolder_nodelaycmp
	run_cmd_nodelaycmp.extend([
		"-D=-NO_DELAY_CMP",
		"-E=-NO_DELAY_CMP"
	])
        run_cmd_nodelaycmp.extend(["-D=-NO_DELAY_CMP", "-E=-NO_DELAY_CMP"])
        subprocess.call(run_cmd_nodelaycmp)

    get_delay_for_folders(outfolder_delaycmp, outfolder_nodelaycmp)



def get_delay_for_folders(folder_delay_cmp: str, folder_no_delay_cmp: str):

    folder_path_delay_cmp = pathlib.Path(folder_delay_cmp)
	files_delay_cmp = sorted([ f.name for f in folder_path_delay_cmp.joinpath("dec").iterdir() ])
    files_delay_cmp = sorted(
        [
            f.name
            for f in folder_path_delay_cmp.joinpath("dec").iterdir()
            if f.name.endswith(".wav")
        ]
    )

    folder_path_no_delay_cmp = pathlib.Path(folder_no_delay_cmp)
	files_no_delay_cmp = sorted([ f.name for f in folder_path_no_delay_cmp.joinpath("dec").iterdir() ])
    files_no_delay_cmp = sorted(
        [
            f.name
            for f in folder_path_no_delay_cmp.joinpath("dec").iterdir()
            if f.name.endswith(".wav")
        ]
    )

	assert(files_delay_cmp == files_no_delay_cmp)
    assert files_delay_cmp == files_no_delay_cmp

    delays_for_samplerates = dict()
    for f in files_delay_cmp:
		# for testing only
		if "dtx" in f or "amr" in f or "_rs" in f:
			continue

        f_cmp = folder_path_delay_cmp.joinpath("dec", f)
        f_no_cmp = folder_path_no_delay_cmp.joinpath("dec", f)
+1 −1
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@ def gen_signal(channels:int) -> np.ndarray:

if __name__ == "__main__":
	parser = argparse.ArgumentParser()
	parser.add_argument("outformat", type=str, choices=list(OC_TO_NCHANNELS.keys()), help="output format to generate for")
	parser.add_argument("outformat", type=str.upper, choices=list(OC_TO_NCHANNELS.keys()), help="output format to generate for")
	parser.add_argument("outfile", help="output .pcm file with measurement signal")

	args = parser.parse_args()