Commit 300a2d13 authored by Jan Kiene's avatar Jan Kiene
Browse files

Merge branch 'ci/basop-and-enc-dec-for-ivasbuildandrunchecks' into 'main'

[BASOP-CI]Add complexity script for basop. Add basop, enc and dec options for IvasBuildAndRunChecks script.

See merge request !1843
parents 9343baf4 b361a62c
Loading
Loading
Loading
Loading
Loading
+37 −2
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@

import os.path
import sys
import platform

import pyivastest.constants as constants
from pyivastest import IvasScriptsCommon
@@ -39,6 +40,19 @@ from pyivastest.IvasSvnBuilder import *

RET_CODE_FAILURE = 101

bin_ext = ""
if platform.system() == "Windows":
    bin_ext = ".exe"

default_encdec_bin_path = constants.WC_BASE_DIR
default_enc = os.path.realpath(
    os.path.join(default_encdec_bin_path, "IVAS_cod" + bin_ext)
)
default_dec = os.path.realpath(
    os.path.join(default_encdec_bin_path, "IVAS_dec" + bin_ext)
)
default_out = os.path.join(".", "out")  # change that to something else?


class IvasBuildAndRunChecks(IvasScriptsCommon.IvasScript):
    def __init__(self):
@@ -100,9 +114,25 @@ class IvasBuildAndRunChecks(IvasScriptsCommon.IvasScript):
            help="pass the '-s' argument to the wmc tool to only measure memory",
            action="store_true",
        )
        self.parser.add_argument(
            "--basop",
            help="build the basop version for instrumentation",
            action="store_true",
        )
        self.parser.add_argument(
            "-e",
            "--enc",
            help="Encoder binary to use instead of instrumenting and building it anew",
            default=None,
        )
        self.parser.add_argument(
            "-d",
            "--dec",
            help="Decoder binary to use instead of instrumenting and building it anew",
            default=None,
        )

    def run(self):

        self.parse_args()
        if self.args["error"] or self.args["exit"]:
            exit()
@@ -142,6 +172,8 @@ class IvasBuildAndRunChecks(IvasScriptsCommon.IvasScript):
                sample_rate_dec_out=self.args["srout"],
                enable_logging=True,
                logger_name="{}.br".format(self.logger.name),
                enc_ext=self.args["enc"],
                dec_ext=self.args["dec"],
            )

        elif self.args["srcdir"]:
@@ -152,6 +184,8 @@ class IvasBuildAndRunChecks(IvasScriptsCommon.IvasScript):
                sample_rate_dec_out=self.args["srout"],
                enable_logging=True,
                logger_name="{}.br".format(self.logger.name),
                enc_ext=self.args["enc"],
                dec_ext=self.args["dec"],
            )

        modes = self.args["formats"]
@@ -165,6 +199,7 @@ class IvasBuildAndRunChecks(IvasScriptsCommon.IvasScript):
                    formats_fname=self.args["format_file"],
                    max_workers=self.args["max_workers"],
                    mem_only=self.args["wmc_tool_mem_only"],
                    basop=self.args["basop"],
                )
            else:
                br.add_check(
@@ -181,7 +216,7 @@ class IvasBuildAndRunChecks(IvasScriptsCommon.IvasScript):
                br.build_and_run_dict[check]["analyzer"], self.args
            )

        if self.args["rebuild"] == True:
        if self.args["rebuild"]:
            br.force_build = True

        checks_ret_val = list()
+43 −1
Original line number Diff line number Diff line
@@ -227,6 +227,7 @@ class IvasBuilder(IvasBaseClass):
        defines_to_disable=[],
        instrumented=False,
        mem_only=False,
        basop=False,
    ):
        """

@@ -274,7 +275,11 @@ class IvasBuilder(IvasBaseClass):
                os.path.join(self.src_dir, "scripts", "prepare_instrumentation.sh")
            ]
            if mem_only:
                instrument_cmd.append("-m")
                instrument_cmd.append("mem_only")
            if basop:
                instrument_cmd.append("-p")
                instrument_cmd.append("basop")
            build_log.write(" ".join(instrument_cmd))
            build_log.write("\n")
            build_result = subprocess.run(
@@ -644,6 +649,7 @@ class IvasSvnBuilder(IvasBuilder):
        defines_to_disable=[],
        instrumented=False,
        mem_only=False,
        basop=False,
    ):
        """

@@ -673,6 +679,7 @@ class IvasSvnBuilder(IvasBuilder):
            defines_to_disable=defines_to_disable,
            instrumented=instrumented,
            mem_only=mem_only,
            basop=basop,
        )


@@ -695,6 +702,8 @@ class IvasBuilderAndRunner(IvasBaseClass):
        console_logger_level="",
        logger_name="IvasBuilderAndRunner",
        log_level=logging.DEBUG,
        enc_ext=None,
        dec_ext=None,
    ):
        super().__init__(
            enable_logging=enable_logging,
@@ -729,6 +738,8 @@ class IvasBuilderAndRunner(IvasBaseClass):
        self.sample_rate_enc_in = sample_rate_enc_in
        self.sample_rate_dec_out = sample_rate_dec_out
        self.force_build = False
        self.enc_ext = enc_ext
        self.dec_ext = dec_ext

    @classmethod
    def fromSvn(
@@ -781,6 +792,7 @@ class IvasBuilderAndRunner(IvasBaseClass):
        max_workers=1,
        timeout=None,
        mem_only=False,
        basop=False,
    ):
        """

@@ -826,6 +838,7 @@ class IvasBuilderAndRunner(IvasBaseClass):
            self.build_and_run_dict[cfg_name]["instrumented"] = instrumented
            self.build_and_run_dict[cfg_name]["mem_only"] = mem_only
            self.build_and_run_dict[cfg_name]["make_options"] = make_options
            self.build_and_run_dict[cfg_name]["basop"] = basop
        else:
            self.logger.console("Adding config {}".format(cfg_name), logging.INFO)
            run_dir = os.path.join(self.builder.src_dir, cfg_name)
@@ -871,6 +884,7 @@ class IvasBuilderAndRunner(IvasBaseClass):
                    "mem_only": mem_only,
                    "make_options": make_options,
                    "analyzer": new_analyzer,
                    "basop": basop,
                }
            }
            self.build_and_run_dict.update(cfg_dict)
@@ -1054,6 +1068,7 @@ class IvasBuilderAndRunner(IvasBaseClass):
                defines_to_disable=cfg["defines_to_disable"],
                instrumented=cfg["instrumented"],
                mem_only=cfg["mem_only"],
                basop=cfg["basop"],
            )
            self.build_and_run_dict[cfg_name]["runner"].encoder = self.builder.encoder
            self.build_and_run_dict[cfg_name]["runner"].decoder = self.builder.decoder
@@ -1079,11 +1094,23 @@ class IvasBuilderAndRunner(IvasBaseClass):
            if self.builder.src_dir == "":
                self.builder.get_svn_source()
            run_dir = os.path.join(self.builder.src_dir, cfg_name)

            # if both encoder and decoder are given as external binaries, create dir and copy both, this skips the build later
            if self.dec_ext is not None and self.enc_ext is not None:
                os.makedirs(run_dir, exist_ok=True)
                shutil.copy(
                    self.enc_ext, os.path.join(run_dir, os.path.basename(self.enc_ext))
                )
                shutil.copy(
                    self.dec_ext, os.path.join(run_dir, os.path.basename(self.dec_ext))
                )

            if not os.path.exists(run_dir) or self.force_build:
                # we have to build first
                self.build(cfg_name)
            else:
                # check if binaries are in the directory
                # first, copy external binaries
                # test for EVS vs IVAS
                if os.path.exists(
                    os.path.join(
@@ -1119,6 +1146,20 @@ class IvasBuilderAndRunner(IvasBaseClass):
                        )
                    )
                    self.build(cfg_name)

            # if one of the external binaries was given, copy it over, overwriting the existing one
            # we should not get here if both are given, then building is skipped altogether
            if self.enc_ext is not None:
                shutil.copy(
                    self.enc_ext,
                    os.path.join(run_dir, os.path.basename(self.enc_ext)),
                )
            if self.dec_ext is not None:
                shutil.copy(
                    self.dec_ext,
                    os.path.join(run_dir, os.path.basename(self.dec_ext)),
                )

            self.build_and_run_dict[cfg_name]["runner"].dir_name = run_dir
            self.build_and_run_dict[cfg_name]["analyzer"].dir = run_dir
            self.build_and_run_dict[cfg_name]["runner"].run()
@@ -1196,7 +1237,6 @@ class IvasBuilderAndRunner(IvasBaseClass):
        max_workers=1,
        usan_supp_file=None,
    ):

        n_cpus = cpu_count()
        # do not use all cores to avoid weird getting-stuck issues observed on Mac...
        make_options = ["-j", f"{n_cpus - 2}"]
@@ -1255,6 +1295,7 @@ class IvasBuilderAndRunner(IvasBaseClass):
        formats_fname="",
        max_workers=1,
        mem_only=False,
        basop=False,
    ):
        """

@@ -1288,6 +1329,7 @@ class IvasBuilderAndRunner(IvasBaseClass):
            formats_fname=formats_fname,
            max_workers=max_workers,
            mem_only=mem_only,
            basop=basop,
        )

    # TODO: this is used nowhere, is this still needed?
+235 −0
Original line number Diff line number Diff line
#! /usr/bin/bash

# (C) 2022-2024 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
# Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
# Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
# Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
# contributors to this repository. All Rights Reserved.

# This software is protected by copyright law and by international treaties.
# The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB,
# Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
# Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
# Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
# contributors to this repository retain full ownership rights in their respective contributions in
# the software. This notice grants no license of any kind, including but not limited to patent
# license, nor is any license granted by implication, estoppel or otherwise.

# Contributors are required to enter into the IVAS codec Public Collaboration agreement before making
# contributions.

# This software is provided "AS IS", without any express or implied warranties. The software is in the
# development stage. It is intended exclusively for experts who have experience with such software and
# solely for the purpose of inspection. All implied warranties of non-infringement, merchantability
# and fitness for a particular purpose are hereby disclaimed and excluded.

# Any dispute, controversy or claim arising under or in relation to providing this software shall be
# submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in
# 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.

function usage {
    echo
    echo "Usage:"
    echo "      smoke_test_complexity_basop.sh [--max_cores nMaxCores -e encPath -d decPath]"
    echo 
    echo "      nMaxCores - the number of CPUs to use (default 42)"
    echo "      encPath   - path to IVAS_cod"
    echo "      decPath   - path to IVAS_dec"
    exit
}

if [ ! -d "lib_com" ]; then
    echo "not in root directory! - please run in IVAS root"
    exit 1
fi

MAX_CORES="42"
ENC_PATH=""
DEC_PATH=""
while getopts ":-:e:d:" OPTIONS; do
    case ${OPTIONS} in
    -)
        case "${OPTARG}" in
            max_cores)
                MAX_CORES="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
                ;;
        esac;;
    e)
        ENC_PATH=${OPTARG}
        ;;
    d)
        DEC_PATH=${OPTARG}
        ;;
    h | *)
        usage
        ;;
    esac
done

enc_cmd=""
dec_cmd=""
if [ "$ENC_PATH" != "" ]; then
    enc_cmd="-e $ENC_PATH"
fi
if [ "$DEC_PATH" != "" ]; then
    dec_cmd="-d $DEC_PATH"
fi

cfg=./scripts/config/ci_linux_ltv.json
ism_md_cmd="--ism_metadata_files /usr/local/ltv/ltvISM1.csv /usr/local/ltv/ltvISM2.csv /usr/local/ltv/ltvISM3.csv /usr/local/ltv/ltvISM4.csv"
duration_arg=""
complexity_cmd="--checks COMPLEXITY --wmc_tool_mem_only --basop --create_complexity_tables"
max_num_workers="--max_workers $MAX_CORES"

# prepare combined format test signals
echo "\n======================= 0. preparing combined format test inputs =======================\n\n"
./scripts/prepare_combined_format_inputs.py

# Modes
mono_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^mono)
FOA_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^FOA)
HOA2_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^HOA2)
HOA3_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^HOA3)
PlanarFOA_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^PlanarFOA)
PlanarHOA2_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^PlanarHOA2)
PlanarHOA3_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^PlanarHOA3)
MASA_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^MASA)
MC_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^MC)
stereo_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^stereo)
stereoDmx_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^StereoDmx)
OMASA_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^OMASA)
OSBA_ISM1_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^OSBA_ISM1)
OSBA_ISM2_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^OSBA_ISM2)
OSBA_ISM3_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^OSBA_ISM3)
OSBA_ISM4_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^OSBA_ISM4)
ISM1_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM1)
ISM2_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM2)
ISM3_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM3)
ISM4_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM4)
ISM_plus1_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM+1)
ISM_plus2_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM+2)
ISM_plus3_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM+3)
ISM_plus4_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM+4)


echo "\n======================= 1. Mono =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_mono_no_fec -m $mono_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_mono.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 2. FOA =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_FOA_no_fec -m $FOA_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_FOA.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 3. HOA2 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_HOA2_no_fec -m $HOA2_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_HOA2.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 4. HOA3 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_HOA3_no_fec -m $HOA3_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_HOA3.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 5. PlanarFOA =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_PlanarFOA_no_fec -m $PlanarFOA_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_PlanarFOA.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 6. PlanarHOA2 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_PlanarHOA2_no_fec -m $PlanarHOA2_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_PlanarHOA2.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 7. PlanarHOA3 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_PlanarHOA3_no_fec -m $PlanarHOA3_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_PlanarHOA3.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 8. MASA =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_MASA_no_fec -m $MASA_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_MASA.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 9. MC =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_MC_no_fec -m $MC_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_MC.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 10. stereo =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_stereo_no_fec -m $stereo_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_stereo.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 11. stereoDmx =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_stereoDmx_no_fec -m $stereoDmx_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_stereoDmx.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 12. OMASA =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_OMASA_no_fec -m $OMASA_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OMASA.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 13. OSBA ISM1 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_OSBA_ISM1_no_fec -m $OSBA_ISM1_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OSBA_ISM1.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 14. OSBA ISM2 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_OSBA_ISM2_no_fec -m $OSBA_ISM2_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OSBA_ISM2.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 15. OSBA ISM3 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_OSBA_ISM3_no_fec -m $OSBA_ISM3_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OSBA_ISM3.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 16. OSBA ISM4 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_OSBA_ISM4_no_fec -m $OSBA_ISM4_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OSBA_ISM4.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 17. ISM1 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_ISM1_no_fec -m $ISM1_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM1.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 18. ISM2 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_ISM2_no_fec -m $ISM2_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM2.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 19. ISM3 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_ISM3_no_fec -m $ISM3_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM3.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 20. ISM4 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_ISM4_no_fec -m $ISM4_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM4.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 21. ISM1 + extended metadata =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_ISM_plus1_no_fec -m $ISM_plus1_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM_plus1.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 22. ISM2 + extended metadata =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_ISM_plus2_no_fec -m $ISM_plus2_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM_plus2.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 23. ISM3 + extended metadata =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_ISM_plus3_no_fec -m $ISM_plus3_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM_plus3.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 24. ISM4 + extended metadata =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_ISM_plus4_no_fec -m $ISM_plus4_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM_plus4.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/