Commit 9af729e0 authored by Lauros Pajunen's avatar Lauros Pajunen
Browse files

Add complexity script for basop. Add basop, enc and dec options for IvasBuildAndRunChecks script.

parent 6e7273ab
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/