Commit 871dbfe0 authored by Jan Kiene's avatar Jan Kiene
Browse files

use cmp_pcm in voip be test

parent a678ab5f
Loading
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -88,7 +88,7 @@ done
# Assert BE between non-VoIP and VoIP modes
all_be=1

cmp_custom_path=$(pwd)/tests/cmp_custom.py
cmp_tool_path=$(pwd)/tests/cmp_pcm.py

for ref in "$output_dir_default_dec_pcm"/*; do
    cut=${ref/$output_dir_default_dec_pcm/$output_dir_voip_dec_trimmed}
@@ -96,7 +96,7 @@ for ref in "$output_dir_default_dec_pcm"/*; do

    # Print paths of compared files, since the script doesn't do it
    printf "\nComparing %s and %s\n" "$ref" "$cut" | tee -a voip_be_test_output.txt
    printout=$($cmp_custom_path "$ref" "$cut" 2 0)
    printout=$($cmp_tool_path "$ref" "$cut")
    if [ $? -ne 0 ]; then
        all_be=0
    fi
+20 −8
Original line number Diff line number Diff line
import os
import sys
import argparse

THIS_PATH = os.path.join(os.getcwd(), __file__)
sys.path.append(os.path.join(os.path.dirname(THIS_PATH), "../scripts"))
@@ -8,20 +9,20 @@ import pyaudio3dtools
import pyivastest


def cmp_pcm(file1, file2, oc, fs) -> (int, str):
def cmp_pcm(file1, file2, out_config, fs) -> (int, str):
    """
    Compare 2 PCM files for bitexactness
    """
    print("Cmp PCM Report")
    print("=====================")

    oc = "MONO" if oc == "" else oc
    if oc.upper() not in pyivastest.constants.OC_TO_NCHANNELS:
        oc_in_file_names = os.path.splitext(os.path.basename(oc))[0]
        nchannels = pyivastest.IvasScriptsCommon.IvasScript.get_n_channels_from_ls_layout(oc)
    out_config = "MONO" if out_config == "" else out_config
    if out_config.upper() not in pyivastest.constants.OC_TO_NCHANNELS:
        out_config_in_file_names = os.path.splitext(os.path.basename(out_config))[0]
        nchannels = pyivastest.IvasScriptsCommon.IvasScript.get_n_channels_from_ls_layout(out_config)
    else:
        oc_in_file_names = oc
        nchannels = pyivastest.constants.OC_TO_NCHANNELS[oc.upper()]
        out_config_in_file_names = out_config
        nchannels = pyivastest.constants.OC_TO_NCHANNELS[out_config.upper()]

    s1, _ = pyaudio3dtools.audiofile.readfile(file1, nchannels, fs)
    s2, _ = pyaudio3dtools.audiofile.readfile(file2, nchannels, fs)
@@ -38,6 +39,17 @@ def cmp_pcm(file1, file2, oc, fs) -> (int, str):
    if cmp_result["bitexact"]:
        return 0, "SUCCESS: Files are bitexact"
    else:
        diff_msg = f"MAXIMUM ABS DIFF ==> {cmp_result['max_abs_diff']} at sample num {cmp_result['max_abs_diff_pos_sample']}"
        diff_msg = f"MAXIMUM ABS DIFF ==> {cmp_result['max_abs_diff']} at sample num {cmp_result['max_abs_diff_pos_sample']} (assuming {nchannels} channels)"
        print(diff_msg)
        return 1, "FAIL: Files have different content"


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("file1", type=str)
    parser.add_argument("file2", type=str)
    parser.add_argument("-o", "--out_config", type=str.upper, default="MONO", choices=pyivastest.constants.OC_TO_NCHANNELS.keys())
    parser.add_argument("-s", "--sampling_rate", type=int, default=48000, dest="fs")

    args = parser.parse_args()
    sys.exit(cmp_pcm(**vars(args)))