From e03f1e6c1054e1eac93dd5167c2dc69dcf22514f Mon Sep 17 00:00:00 2001 From: knj Date: Mon, 20 Nov 2023 17:01:22 +0100 Subject: [PATCH 1/9] enable combined mode md collection --- ci/run_scheduled_sanitizer_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/run_scheduled_sanitizer_test.py b/ci/run_scheduled_sanitizer_test.py index 661df093d1..cf4242a024 100755 --- a/ci/run_scheduled_sanitizer_test.py +++ b/ci/run_scheduled_sanitizer_test.py @@ -110,7 +110,7 @@ def get_modes(in_format: str) -> list: def get_md_file_command(in_format: str) -> list: cmd = list() - if in_format.startswith("ISM"): + if "ISM" in in_format: cmd.append("--metadata_files") md_filename = "/usr/local/ltv/ltvISM{}.csv" n = int(in_format[-1]) -- GitLab From 65134bdd6643aa42143212932d8b96413ff96ff1 Mon Sep 17 00:00:00 2001 From: knj Date: Tue, 21 Nov 2023 08:15:28 +0100 Subject: [PATCH 2/9] make MD handling more explicitly and also work for combined modes --- scripts/pyivastest/IvasModeCollector.py | 6 +- scripts/pyivastest/IvasModeRunner.py | 119 +++++++----------------- scripts/pyivastest/IvasScriptsCommon.py | 23 +++-- 3 files changed, 54 insertions(+), 94 deletions(-) diff --git a/scripts/pyivastest/IvasModeCollector.py b/scripts/pyivastest/IvasModeCollector.py index b5e386f794..50efe78e13 100644 --- a/scripts/pyivastest/IvasModeCollector.py +++ b/scripts/pyivastest/IvasModeCollector.py @@ -157,7 +157,8 @@ class IvasModeCollector(IvasBaseClass.IvasBaseClass): self.format_select_list = [] self.bw_select_list = [] self.global_item_list = [] - self.global_metadata_file_list = [] + self.global_ism_metadata = list() + self.global_masa_metadata = None self.global_bitstream_processing = None self.flat_mode_list = None self.filter = None @@ -482,9 +483,6 @@ class IvasModeCollector(IvasBaseClass.IvasBaseClass): def set_global_item_list(self, global_item_list): self.global_item_list = [os.path.abspath(f) for f in global_item_list] - def set_global_metadata_file_list(self, metadata_file_list): - self.global_metadata_file_list = metadata_file_list - def add_format_output_config(self, ivas_format, oc_dict): """ diff --git a/scripts/pyivastest/IvasModeRunner.py b/scripts/pyivastest/IvasModeRunner.py index c39ef36485..591acb9d6f 100644 --- a/scripts/pyivastest/IvasModeRunner.py +++ b/scripts/pyivastest/IvasModeRunner.py @@ -430,12 +430,12 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): return self.lock.release() - metadata_file_names = [] + metadata_file_names = list() + + # TODO: is this still needed - what case does this cover? if isinstance(in_file_name, list): metadata_file_names = in_file_name[1:] in_file_name = in_file_name[0] - elif self.global_metadata_file_list: - metadata_file_names = deepcopy(self.global_metadata_file_list) self.logger.info("Encoding Mode {} input file {}".format(mode, in_file_name)) config["lock"].release() self.lock.acquire() @@ -625,89 +625,40 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): # build the encoder commandline enc_options = enc_dec_cmd["encmodeoption"] - # metadata handling - if enc_dec_cmd["nummetadata"] > 0: - - for cur_metadata_idx in range(enc_dec_cmd["nummetadata"]): - fallback = False - if len(metadata_file_names) == 1: - # try for a filename with format patterns - metadata_file_name = metadata_file_names[0] - if metadata_file_name != "NULL": - metadata_file_name = str.format( - metadata_file_name, - item=item_base_name, - mdi=cur_metadata_idx, - ) - elif len(metadata_file_names) >= (cur_metadata_idx + 1): - metadata_file_name = str.format( - metadata_file_names[cur_metadata_idx], - item=item_base_name, - mdi=cur_metadata_idx, - ) - else: - fallback = True - - if not fallback and not os.path.exists(metadata_file_name): - # maybe we need to attach the indir - mdf_for_log = metadata_file_name - metadata_file_name = os.path.join(in_dir, metadata_file_name) - if not os.path.exists(metadata_file_name): - self.logger.warning( - "Given metadata file {} for item {} does not exists, trying default pattern!".format( - mdf_for_log, enc_file_name - ) - ) - fallback = True - - if fallback: - - if len(enc_dec_cmd["metadatafilenames"]) == 1: - # try for a filename with format patterns - metadata_file_name = enc_dec_cmd["metadatafilenames"][0] - if metadata_file_name != "NULL": - metadata_file_name = str.format( - metadata_file_name, - item=item_base_name, - mdi=cur_metadata_idx + 1, - ) - elif len(enc_dec_cmd["metadatafilenames"]) >= ( - cur_metadata_idx + 1 - ): - metadata_file_name = enc_dec_cmd["metadatafilenames"][ - cur_metadata_idx - ] - if metadata_file_name != "NULL": - metadata_file_name = str.format( - metadata_file_name, - item=item_base_name, - mdi=cur_metadata_idx, - ) - else: - self.logger.warning( - "Falling back to NULL for metadata file {} of item {}!".format( - cur_metadata_idx, enc_file_name - ) - ) + # metadata is either explicitly taken from the respective command line args or, + # if not given, the default pattern form the config is used to get filenames in + # the same dir as the input file. NULL for ISM MD has to be explicitly given, + # otherwise this may hapen without the user being aware and lead to unexpected results. + # If the default filenames from the configs do not point to existing files, the + # codec will complain later + nummetadata = enc_dec_cmd["nummetadata"] + if nummetadata > 0: + md_files = list() - metadata_file_name = "NULL" + is_combined_format = "OMASA" in in_format or "OSBA" in in_format - if metadata_file_name != "NULL" and not os.path.exists( - metadata_file_name - ): - # maybe we need to attach the indir - metadata_file_name = os.path.join( - in_dir, metadata_file_name - ) - if not os.path.exists(metadata_file_name): - self.logger.warning( - "Falling back to NULL for metadata file {} of item {}!".format( - cur_metadata_idx, enc_file_name - ) - ) - metadata_file_name = "NULL" + if "ISM" in in_format: + md_files.extend(self.global_ism_metadata) + + # if no md files explicitly given, try default pattern from config + if len(md_files) == 0: + num_ism_metadata = nummetadata - int(is_combined_format) + default = os.path.join(in_dir, enc_dec_cmd["metadatafilenames"][0]) + for i in range(num_ism_metadata): + md_f = default.format(item=item_base_name, mdi=i + 1) + md_files.append(md_f) - enc_options.append(metadata_file_name) + if "MASA" in in_format: + masa_md = self.global_masa_metadata + + # if not explicitly given, try default pattern from config + if masa_md is None: + default = os.path.join(in_dir, enc_dec_cmd["metadatafilenames"][0 + int(is_combined_format)]) + masa_md = default.format(item=item_base_name) + + md_files.append(masa_md) + + enc_options.extend(md_files) enc_options.extend(enc_dec_cmd["encoptions"]) enc_options.extend(self.encoder_cmdline_options) @@ -1604,4 +1555,4 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): class NoInputForAnyModesFound(Exception): - pass \ No newline at end of file + pass diff --git a/scripts/pyivastest/IvasScriptsCommon.py b/scripts/pyivastest/IvasScriptsCommon.py index 987ce9727a..e2035638f5 100644 --- a/scripts/pyivastest/IvasScriptsCommon.py +++ b/scripts/pyivastest/IvasScriptsCommon.py @@ -200,12 +200,18 @@ class IvasScriptArgParser(argparse.ArgumentParser): action=ParseItems, ) self.add_argument( - "--metadata_files", - metavar="MDFILE", - help="List of common metadata files", + "--ism_metadata_files", + metavar="ISM_MDFILE", + help="List of ISM metadata files", nargs="*", default=[], ) + self.add_argument( + "--masa_metadata_file", + metavar="MASA_MDFILE", + help="MASA metadata file", + default=None, + ) self.add_argument( "-S", "--srin", @@ -664,9 +670,14 @@ def runner_setup(runner, args): runner.set_format_select_list(args["formats"]) if args["item_list"]: runner.set_global_item_list(args["item_list"]) - if args["metadata_files"]: - metadata_files = [os.path.abspath(f) for f in args["metadata_files"]] - runner.set_global_metadata_file_list(metadata_files) + + metadata_files = list() + if args["ism_metadata_files"] != []: + metadata_files.extend([os.path.abspath(f) for f in args["ism_metadata_files"]]) + runner.global_ism_metadata = metadata_files + if args["masa_metadata_file"] is not None: + runner.global_masa_metadata = os.path.abspath(args["masa_metadata_file"]) + if args["decoder_only"]: runner.run_encoder = False if args["info"]: -- GitLab From 3d907c27a572d8108c4c6c149dd2878ca8ccec76 Mon Sep 17 00:00:00 2001 From: knj Date: Tue, 21 Nov 2023 08:29:15 +0100 Subject: [PATCH 3/9] correct default item names in script config --- scripts/config/ci_linux_ltv.json | 40 ++++++++++++++++---------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/scripts/config/ci_linux_ltv.json b/scripts/config/ci_linux_ltv.json index 3d6f8fa400..7a6c855374 100644 --- a/scripts/config/ci_linux_ltv.json +++ b/scripts/config/ci_linux_ltv.json @@ -19,25 +19,25 @@ "ISM2": "/usr/local/ltv/ltv48_2ISM.wav", "ISM3": "/usr/local/ltv/ltv48_3ISM.wav", "ISM4": "/usr/local/ltv/ltv48_4ISM.wav", - "OMASA_ISM1_1TC": "/usr/local/ltv/ltv48_OMASA_1ISM_1TC48c.wav", - "OMASA_ISM1_2TC": "/usr/local/ltv/ltv48_OMASA_1ISM_2TC48c.wav", - "OMASA_ISM2_1TC": "/usr/local/ltv/ltv48_OMASA_2ISM_1TC48c.wav", - "OMASA_ISM2_2TC": "/usr/local/ltv/ltv48_OMASA_2ISM_2TC48c.wav", - "OMASA_ISM3_1TC": "/usr/local/ltv/ltv48_OMASA_3ISM_1TC48c.wav", - "OMASA_ISM3_2TC": "/usr/local/ltv/ltv48_OMASA_3ISM_2TC48c.wav", - "OMASA_ISM4_1TC": "/usr/local/ltv/ltv48_OMASA_4ISM_1TC48c.wav", - "OMASA_ISM4_2TC": "/usr/local/ltv/ltv48_OMASA_4ISM_2TC48c.wav", - "OSBA_ISM1_FOA": "/usr/local/ltv/ltv48_OSBA_1ISM_FOA48c.wav", - "OSBA_ISM1_HOA2": "/usr/local/ltv/ltv48_OSBA_1ISM_2OA48c.wav", - "OSBA_ISM1_HOA3": "/usr/local/ltv/ltv48_OSBA_1ISM_3OA48c.wav", - "OSBA_ISM2_FOA": "/usr/local/ltv/ltv48_OSBA_2ISM_FOA48c.wav", - "OSBA_ISM2_HOA2": "/usr/local/ltv/ltv48_OSBA_2ISM_2OA48c.wav", - "OSBA_ISM2_HOA3": "/usr/local/ltv/ltv48_OSBA_2ISM_3OA48c.wav", - "OSBA_ISM3_FOA": "/usr/local/ltv/ltv48_OSBA_3ISM_FOA48c.wav", - "OSBA_ISM3_HOA2": "/usr/local/ltv/ltv48_OSBA_3ISM_2OA48c.wav", - "OSBA_ISM3_HOA3": "/usr/local/ltv/ltv48_OSBA_3ISM_3OA48c.wav", - "OSBA_ISM4_FOA": "/usr/local/ltv/ltv48_OSBA_4ISM_FOA48c.wav", - "OSBA_ISM4_HOA2": "/usr/local/ltv/ltv48_OSBA_4ISM_2OA48c.wav", - "OSBA_ISM4_HOA3": "/usr/local/ltv/ltv48_OSBA_4ISM_3OA48c.wav" + "OMASA_ISM1_1TC": "/usr/local/ltv/ltv48_OMASA_1ISM_1TC.wav", + "OMASA_ISM1_2TC": "/usr/local/ltv/ltv48_OMASA_1ISM_2TC.wav", + "OMASA_ISM2_1TC": "/usr/local/ltv/ltv48_OMASA_2ISM_1TC.wav", + "OMASA_ISM2_2TC": "/usr/local/ltv/ltv48_OMASA_2ISM_2TC.wav", + "OMASA_ISM3_1TC": "/usr/local/ltv/ltv48_OMASA_3ISM_1TC.wav", + "OMASA_ISM3_2TC": "/usr/local/ltv/ltv48_OMASA_3ISM_2TC.wav", + "OMASA_ISM4_1TC": "/usr/local/ltv/ltv48_OMASA_4ISM_1TC.wav", + "OMASA_ISM4_2TC": "/usr/local/ltv/ltv48_OMASA_4ISM_2TC.wav", + "OSBA_ISM1_FOA": "/usr/local/ltv/ltv48_OSBA_1ISM_FOA.wav", + "OSBA_ISM1_HOA2": "/usr/local/ltv/ltv48_OSBA_1ISM_2OA.wav", + "OSBA_ISM1_HOA3": "/usr/local/ltv/ltv48_OSBA_1ISM_3OA.wav", + "OSBA_ISM2_FOA": "/usr/local/ltv/ltv48_OSBA_2ISM_FOA.wav", + "OSBA_ISM2_HOA2": "/usr/local/ltv/ltv48_OSBA_2ISM_2OA.wav", + "OSBA_ISM2_HOA3": "/usr/local/ltv/ltv48_OSBA_2ISM_3OA.wav", + "OSBA_ISM3_FOA": "/usr/local/ltv/ltv48_OSBA_3ISM_FOA.wav", + "OSBA_ISM3_HOA2": "/usr/local/ltv/ltv48_OSBA_3ISM_2OA.wav", + "OSBA_ISM3_HOA3": "/usr/local/ltv/ltv48_OSBA_3ISM_3OA.wav", + "OSBA_ISM4_FOA": "/usr/local/ltv/ltv48_OSBA_4ISM_FOA.wav", + "OSBA_ISM4_HOA2": "/usr/local/ltv/ltv48_OSBA_4ISM_2OA.wav", + "OSBA_ISM4_HOA3": "/usr/local/ltv/ltv48_OSBA_4ISM_3OA.wav" } } -- GitLab From c1e445cdec0b5dcc7c403208071fab89a36d8530 Mon Sep 17 00:00:00 2001 From: knj Date: Tue, 21 Nov 2023 08:35:53 +0100 Subject: [PATCH 4/9] use new command line parameter name everywhere --- ci/run_scheduled_sanitizer_test.py | 2 +- ci/smoke_test.sh | 2 +- scripts/README.md | 73 +++++++++++++++--------------- 3 files changed, 39 insertions(+), 38 deletions(-) diff --git a/ci/run_scheduled_sanitizer_test.py b/ci/run_scheduled_sanitizer_test.py index cf4242a024..c30c7bc2c4 100755 --- a/ci/run_scheduled_sanitizer_test.py +++ b/ci/run_scheduled_sanitizer_test.py @@ -111,7 +111,7 @@ def get_md_file_command(in_format: str) -> list: cmd = list() if "ISM" in in_format: - cmd.append("--metadata_files") + cmd.append("--ism_metadata_files") md_filename = "/usr/local/ltv/ltvISM{}.csv" n = int(in_format[-1]) cmd.extend([md_filename.format(i) for i in range(1, n + 1)]) diff --git a/ci/smoke_test.sh b/ci/smoke_test.sh index 4e3be38db3..ce93d26046 100755 --- a/ci/smoke_test.sh +++ b/ci/smoke_test.sh @@ -53,7 +53,7 @@ fi cfg=./scripts/config/ci_linux.json dly_profile=./scripts/dly_error_profiles/dly_error_profile_10.dat -ism_md_cmd="--metadata_files /usr/local/ltv/ltvISM1.csv /usr/local/ltv/ltvISM2.csv /usr/local/ltv/ltvISM3.csv /usr/local/ltv/ltvISM4.csv" +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="-U 1:2" verbosity_cmd="-z console" diff --git a/scripts/README.md b/scripts/README.md index f547c7e80f..a798ec3a45 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -110,57 +110,58 @@ Given output directories have a certain structure to avoid to much cluttering The different scripts share a common set of command line options: ``` -h, --help show this help message and exit - -C [FORMAT [FORMAT ...]], --formats [FORMAT [FORMAT ...]] - List of IVAS formats to run, default all (for possible - choices get a list with -L - -m [MODE [MODE ...]], --modes [MODE [MODE ...]] - List of IVAS modes to run, default all (for possible - choices get a list with -l - --oc [OC_DICT [OC_DICT ...]] - List of output formats, either a space separated list - or a json string in single quotes + -z [{silent,console,progress,debug,info,warning,error,critical}], --loglevel [{silent,console,progress,debug,info,warning,error,critical}] + Either show with minimal output (default, 'silent'), or reroute log messages with levels higher than LEVEL to the console + -g LOGFILE, --logfile LOGFILE + log file + -t MAX_WORKERS, --max_workers MAX_WORKERS + use multithreading with MAX_WORKERS threads (default: number of CPUs available at the machine) + -C [FORMAT ...], --formats [FORMAT ...] + List of IVAS formats to run, default all (for possible choices get a list with -L + -m [MODE ...], --modes [MODE ...] + List of IVAS modes to run, default all (for possible choices get a list with -l + --oc [OC_DICT ...] List of output formats, either a space separated list or a json string in single quotes -E "-opt1 opt2", --enc_options "-opt1 opt2" - Additional command line options for the encoder - (always use it in the form -E="-o -opt ...") + Additional command line options for the encoder (always use it in the form -E="-o -opt ...") -D "-opt1 opt2", --dec_options "-opt1 opt2" - Additional command line options for the decoder - (always use it in the form -D="-o -opt ...") + Additional command line options for the decoder (always use it in the form -D="-o -opt ...") --format_file FORMAT_FILE - File name for the IVAS ivas_format dictionary to use - (default: ivas_modes.json) - -I [ITEM [ITEM ...]], --items [ITEM [ITEM ...]] - List of items to be coded, allows for explicit - definition of metadata files by grouping an item - together with its metadata files in square brackets - [ITEM,METADATAFILE,...] - --metadata_files [MDFILE [MDFILE ...]] - List of common metadata files - -z [{silent,debug,info,warning,error,critical}], --silent [{silent,debug,info,warning,error,critical}] - Either show with minimal output (default, 'silent'), - or reroute log messages with levels higher than LEVEL - to the console - -S SRIN, --srin SRIN Input sample rate for the encoder + File name for the IVAS ivas_format dictionary to use (default: ivas_modes_v2.json) + -I [ITEM ...], --items [ITEM ...] + List of items to be coded, allows for explicit definition of metadata files by grouping an item together with its metadata files in square brackets [ITEM,METADATAFILE,...] + --ism_metadata_files [ISM_MDFILE ...] + List of ISM metadata files + --masa_metadata_file MASA_MDFILE + MASA metadata file + -S SRIN, --srin SRIN Input sample rate for the encoder (either in Hz or kHz) -R SROUT, --srout SROUT - Output sample rate for the decoder + Output sample rate for the decoder (either in Hz or kHz) -p CONFIG, --config CONFIG select site-related config as CONFIG.json - -t [MAX_WORKERS], --max_workers [MAX_WORKERS] - use multithreading with MAX_WORKERS threads (default: - number of CPUs available at the machine) -l, --list_modes list all supported IVAS ivas_formats -L, --list_formats list all supported IVAS formats -U LIMIT_DURATION, --limit_duration LIMIT_DURATION - limit dUration of input file to X seconds + limit dUration by specifying start and end of input signal in seconds. Can be either a single float value (will be interpreted as length), or by giving as start: (will be interpreted as start), or by giving as start:end -f FER_FILE, --fer_file FER_FILE frame error pattern file + -y BER_FILE, --ber_file BER_FILE + bit error pattern file + -J JBM_FILE, --jbm_file JBM_FILE + jbm file -i INDIR, --indir INDIR - Directory for items to be coded, either a single - directory or a json string for different directories - with the input formats as keys + Directory for items to be coded, either a single directory or a json string for different directories with the input formats as keys --decoder_only only run the decoder -x FILTER_REGEX, --filter FILTER_REGEX Regex for filtering modes - -s, --sidstart Cut bitstreams until the first SID frame before decoding + -s, --sidstart Cut frames from the beginning of the encoded bit stream until the first SID frame + --bs_length BS_LENGTH + Cut bitstream to this (maximum) length. Is applied AFTER --sidstart processing, if this is given + --info Ouput debug info in subfolders of /res (use with caution, this can generate a huge amount of data) + --sofa SOFA Directory for the group B binaural renderer to look for SOFA files + -e ENC, --enc ENC Encoder binary name (default /Users/knj/Documents/IVAS/PC/ivas-codec/IVAS_cod) + -d DEC, --dec DEC Decoder binary name (default /Users/knj/Documents/IVAS/PC/ivas-codec/IVAS_dec) + --fail_log_dir FAIL_LOG_DIR + Move logs of failed modes to dir (default none) ``` Some notable difference exits to similar command line options of `runEvsCodec.pl` and a few new ones are added: -- GitLab From 1ef81898b2cb231f0ecae564875c2769f607092f Mon Sep 17 00:00:00 2001 From: knj Date: Wed, 22 Nov 2023 10:30:46 +0100 Subject: [PATCH 5/9] fix md handling again --- scripts/pyivastest/IvasModeRunner.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/scripts/pyivastest/IvasModeRunner.py b/scripts/pyivastest/IvasModeRunner.py index 591acb9d6f..7ca5bfac30 100644 --- a/scripts/pyivastest/IvasModeRunner.py +++ b/scripts/pyivastest/IvasModeRunner.py @@ -635,16 +635,16 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): if nummetadata > 0: md_files = list() - is_combined_format = "OMASA" in in_format or "OSBA" in in_format + if "OMASA" in in_format: + nummetadata -= 1 if "ISM" in in_format: - md_files.extend(self.global_ism_metadata) + md_files.extend(self.global_ism_metadata[:nummetadata]) - # if no md files explicitly given, try default pattern from config - if len(md_files) == 0: - num_ism_metadata = nummetadata - int(is_combined_format) + # if not enough md files explicitly given, try default pattern from config + if len(md_files) != nummetadata: default = os.path.join(in_dir, enc_dec_cmd["metadatafilenames"][0]) - for i in range(num_ism_metadata): + for i in range(len(md_files), nummetadata): md_f = default.format(item=item_base_name, mdi=i + 1) md_files.append(md_f) @@ -653,7 +653,7 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): # if not explicitly given, try default pattern from config if masa_md is None: - default = os.path.join(in_dir, enc_dec_cmd["metadatafilenames"][0 + int(is_combined_format)]) + default = os.path.join(in_dir, enc_dec_cmd["metadatafilenames"][-1]) masa_md = default.format(item=item_base_name) md_files.append(masa_md) -- GitLab From a0cb22f7c453a0875f536b4ed96746bc49a650a9 Mon Sep 17 00:00:00 2001 From: knj Date: Wed, 22 Nov 2023 12:16:50 +0100 Subject: [PATCH 6/9] pass md files explicitly in sidstart test --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 365ce64ced..4317f80866 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -995,8 +995,9 @@ check-first-frame-is-sid: - exit_code_foa=0 # run all modes and cut bitstream to start with an SID. Use stereo output to limit runtime, test is only about decoding + - 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" - modes=$(scripts/runIvasCodec.py -l | grep dtx | grep -vE "FOA|HOA" ) - - scripts/runIvasCodec.py -z console -p scripts/config/ci_linux_sidstart_test.json -m $modes -s --bs_length 200 -U 0:20 --oc stereo || exit_code_no_sba=$? + - scripts/runIvasCodec.py -z console -p scripts/config/ci_linux_sidstart_test.json -m $modes -s --bs_length 200 -U 0:20 --oc stereo $ism_md_cmd || exit_code_no_sba=$? - modes=$(scripts/runIvasCodec.py -l | grep dtx | grep -E "HOA") - scripts/runIvasCodec.py -z console -p scripts/config/ci_linux_sidstart_test.json -m $modes -s --bs_length 100 -U 70:80 --oc stereo || exit_code_hoa=$? - modes=$(scripts/runIvasCodec.py -l | grep dtx | grep "FOA") -- GitLab From 23efeaa171d15e431844d4e7e48e50188538fa5c Mon Sep 17 00:00:00 2001 From: knj Date: Wed, 22 Nov 2023 12:59:25 +0100 Subject: [PATCH 7/9] fix automatic md collection and NULL default --- scripts/pyivastest/IvasModeRunner.py | 6 +++++- scripts/pyivastest/IvasScriptsCommon.py | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/scripts/pyivastest/IvasModeRunner.py b/scripts/pyivastest/IvasModeRunner.py index 7ca5bfac30..97f8808c1d 100644 --- a/scripts/pyivastest/IvasModeRunner.py +++ b/scripts/pyivastest/IvasModeRunner.py @@ -645,9 +645,13 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): if len(md_files) != nummetadata: default = os.path.join(in_dir, enc_dec_cmd["metadatafilenames"][0]) for i in range(len(md_files), nummetadata): - md_f = default.format(item=item_base_name, mdi=i + 1) + md_f = default.format(item=item_base_name, mdi=i + 1) + if not os.path.exists(md_f): + self.logger.warning(f"Can't find default md file {md_file} for item {item}. Default to NULL") + md_f = "NULL" md_files.append(md_f) + if "MASA" in in_format: masa_md = self.global_masa_metadata diff --git a/scripts/pyivastest/IvasScriptsCommon.py b/scripts/pyivastest/IvasScriptsCommon.py index e2035638f5..0d1558c8ec 100644 --- a/scripts/pyivastest/IvasScriptsCommon.py +++ b/scripts/pyivastest/IvasScriptsCommon.py @@ -673,7 +673,11 @@ def runner_setup(runner, args): metadata_files = list() if args["ism_metadata_files"] != []: - metadata_files.extend([os.path.abspath(f) for f in args["ism_metadata_files"]]) + for f in args["ism_metadata_files"]: + md_f = f + if os.path.isfile(f): + md_f = os.path.abspath(f) + metadata_files.append(md_f) runner.global_ism_metadata = metadata_files if args["masa_metadata_file"] is not None: runner.global_masa_metadata = os.path.abspath(args["masa_metadata_file"]) -- GitLab From f7bd8a3d98e7bdba3ba78cfd4b4109e8f7c3a6fa Mon Sep 17 00:00:00 2001 From: Stefan Bayer Date: Fri, 24 Nov 2023 09:17:25 +0100 Subject: [PATCH 8/9] Change metadata infos in the mode dict for OMASA to both be comaptible with the Python test script changes and in line with all other modes with metadata files --- scripts/config/ivas_modes.json | 42 ++++++++++------------------------ 1 file changed, 12 insertions(+), 30 deletions(-) diff --git a/scripts/config/ivas_modes.json b/scripts/config/ivas_modes.json index 0f6596b9f6..89c9d46b15 100644 --- a/scripts/config/ivas_modes.json +++ b/scripts/config/ivas_modes.json @@ -4967,7 +4967,7 @@ "table_name": "OMASA ISM1 2TC @{table_bitrate} kbps {bandwidth}", "nummetadata": 2, "metadatafilenames": [ - "{item}_ISM1.csv", + "{item}_ISM{mdi}.csv", "{item}.met" ], "rs": false, @@ -5042,7 +5042,7 @@ "table_name": "OMASA ISM1 2TC @{table_bitrate} RS {bandwidth}", "nummetadata": 2, "metadatafilenames": [ - "{item}_ISM1.csv", + "{item}_ISM{mdi}.csv", "{item}.met" ], "rs": true, @@ -5081,7 +5081,7 @@ "table_name": "OMASA ISM1 1TC @{table_bitrate} kbps {bandwidth}", "nummetadata": 2, "metadatafilenames": [ - "{item}_ISM1.csv", + "{item}_ISM{mdi}.csv", "{item}.met" ], "rs": false, @@ -5129,8 +5129,7 @@ "table_name": "OMASA ISM2 2TC @{table_bitrate} kbps {bandwidth}", "nummetadata": 3, "metadatafilenames": [ - "{item}_ISM1.csv", - "{item}_ISM2.csv", + "{item}_ISM{mdi}.csv", "{item}.met" ], "rs": false, @@ -5204,8 +5203,7 @@ "table_name": "OMASA ISM2 2TC @{table_bitrate} RS {bandwidth}", "nummetadata": 3, "metadatafilenames": [ - "{item}_ISM1.csv", - "{item}_ISM2.csv", + "{item}_ISM{mdi}.csv", "{item}.met" ], "rs": true, @@ -5243,8 +5241,7 @@ "table_name": "OMASA ISM2 1TC @{table_bitrate} kbps {bandwidth}", "nummetadata": 3, "metadatafilenames": [ - "{item}_ISM1.csv", - "{item}_ISM2.csv", + "{item}_ISM{mdi}.csv", "{item}.met" ], "rs": false, @@ -5293,9 +5290,7 @@ "table_name": "OMASA ISM3 2TC @{table_bitrate} kbps {bandwidth}", "nummetadata": 4, "metadatafilenames": [ - "{item}_ISM1.csv", - "{item}_ISM2.csv", - "{item}_ISM3.csv", + "{item}_ISM{mdi}.csv", "{item}.met" ], "rs": false, @@ -5369,9 +5364,7 @@ "table_name": "OMASA ISM3 2TC @{table_bitrate} RS {bandwidth}", "nummetadata": 4, "metadatafilenames": [ - "{item}_ISM1.csv", - "{item}_ISM2.csv", - "{item}_ISM3.csv", + "{item}_ISM{mdi}.csv", "{item}.met" ], "rs": true, @@ -5409,9 +5402,7 @@ "table_name": "OMASA ISM3 1TC @{table_bitrate} kbps {bandwidth}", "nummetadata": 4, "metadatafilenames": [ - "{item}_ISM1.csv", - "{item}_ISM2.csv", - "{item}_ISM3.csv", + "{item}_ISM{mdi}.csv", "{item}.met" ], "rs": false, @@ -5460,10 +5451,7 @@ "table_name": "OMASA ISM4 2TC @{table_bitrate} kbps {bandwidth}", "nummetadata": 5, "metadatafilenames": [ - "{item}_ISM1.csv", - "{item}_ISM2.csv", - "{item}_ISM3.csv", - "{item}_ISM4.csv", + "{item}_ISM{mdi}.csv", "{item}.met" ], "rs": false, @@ -5537,10 +5525,7 @@ "table_name": "OMASA ISM4 2TC @{table_bitrate} RS {bandwidth}", "nummetadata": 5, "metadatafilenames": [ - "{item}_ISM1.csv", - "{item}_ISM2.csv", - "{item}_ISM3.csv", - "{item}_ISM4.csv", + "{item}_ISM{mdi}.csv", "{item}.met" ], "rs": true, @@ -5578,10 +5563,7 @@ "table_name": "OMASA ISM4 1TC @{table_bitrate} kbps {bandwidth}", "nummetadata": 5, "metadatafilenames": [ - "{item}_ISM1.csv", - "{item}_ISM2.csv", - "{item}_ISM3.csv", - "{item}_ISM4.csv", + "{item}_ISM{mdi}.csv", "{item}.met" ], "rs": false, -- GitLab From 9ee7f1ede5ab65e3b51e2d7bc043b37171906a50 Mon Sep 17 00:00:00 2001 From: knj Date: Fri, 24 Nov 2023 09:58:27 +0100 Subject: [PATCH 9/9] fix scripts readme --- scripts/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/README.md b/scripts/README.md index a798ec3a45..bc7ae8f32e 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -158,8 +158,8 @@ The different scripts share a common set of command line options: Cut bitstream to this (maximum) length. Is applied AFTER --sidstart processing, if this is given --info Ouput debug info in subfolders of /res (use with caution, this can generate a huge amount of data) --sofa SOFA Directory for the group B binaural renderer to look for SOFA files - -e ENC, --enc ENC Encoder binary name (default /Users/knj/Documents/IVAS/PC/ivas-codec/IVAS_cod) - -d DEC, --dec DEC Decoder binary name (default /Users/knj/Documents/IVAS/PC/ivas-codec/IVAS_dec) + -e ENC, --enc ENC Encoder binary name (default ./IVAS_cod) + -d DEC, --dec DEC Decoder binary name (default ./IVAS_dec) --fail_log_dir FAIL_LOG_DIR Move logs of failed modes to dir (default none) ``` -- GitLab