From caefe6ce2aa50a479d6fca15e6c2570f8fe00622 Mon Sep 17 00:00:00 2001 From: Treffehn Date: Tue, 23 May 2023 16:31:33 +0200 Subject: [PATCH 1/4] removed loudness adjustment from postprocessing, does not work for ISM yet --- ivas_processing_scripts/__init__.py | 27 +++++++++++++++++++ ivas_processing_scripts/processing/chains.py | 21 --------------- .../processing/processing.py | 14 ++-------- 3 files changed, 29 insertions(+), 33 deletions(-) diff --git a/ivas_processing_scripts/__init__.py b/ivas_processing_scripts/__init__.py index 1a3fa594..87378f19 100755 --- a/ivas_processing_scripts/__init__.py +++ b/ivas_processing_scripts/__init__.py @@ -53,6 +53,7 @@ from ivas_processing_scripts.processing.processing import ( reverse_process_2, ) from ivas_processing_scripts.utils import DirManager, apply_func_parallel +from ivas_processing_scripts.audiotools.wrappers.bs1770 import scale_files def logging_init(args, cfg): @@ -174,9 +175,35 @@ def main(args): "mp" if cfg.multiprocessing else None, ) + # remove preamble and split signals if hasattr(cfg, "preprocessing_2"): reverse_process_2(cfg, logger) + # scale individual files + # TODO: create new function for that part + if cfg.postprocessing.get("loudness", False): + if hasattr(cfg, "preprocessing_2"): + out_paths_splits = cfg.pre2.out_paths_splits + out_meta_splits = cfg.pre2.out_meta_splits + else: + out_paths_splits = [] + for out_dir in cfg.out_dirs: + condition_list = [] + for item in cfg.items_list: + condition_list.append(out_dir.joinpath(item.name)) + out_paths_splits.append(condition_list) + + # TODO: get out_meta_splits and use + scale_files( + out_paths_splits, + cfg.postprocessing["fmt"], + cfg.postprocessing["loudness"], + cfg.postprocessing.get("loudness_fmt", None), + cfg.postprocessing["fs"], + None, + logger, + ) + if cfg.condition_in_output_filename: rename_generated_conditions(cfg.output_path) diff --git a/ivas_processing_scripts/processing/chains.py b/ivas_processing_scripts/processing/chains.py index c11be9a1..f40f7bd7 100755 --- a/ivas_processing_scripts/processing/chains.py +++ b/ivas_processing_scripts/processing/chains.py @@ -212,7 +212,6 @@ def get_processing_chain( # get pre and post processing configurations pre_cfg = getattr(cfg, "preprocessing", {}) - pre2_cfg = getattr(cfg, "preprocessing_2", {}) post_cfg = cfg.postprocessing # default to input values if preprocessing was not requested @@ -243,18 +242,8 @@ def get_processing_chain( { "in_fs": tmp_in_fs, "in_fmt": tmp_in_fmt, - "out_fs": post_cfg.get("fs"), "out_fmt": "MONO", - "out_cutoff": tmp_lp_cutoff, - "out_loudness": post_cfg.get("loudness"), - "out_loudness_fmt": post_cfg.get("loudness_fmt"), - "bin_dataset": post_cfg.get("bin_dataset"), - "bin_lfe_gain": post_cfg.get("bin_lfe_gain"), - "limit": post_cfg.get("limit", True), - "trajectory": post_cfg.get("trajectory"), "multiprocessing": cfg.multiprocessing, - "mnru_q": tmp_mnru_q, - "esdru_alpha": tmp_esdru_alpha, }, name="mono_dmx", ) @@ -419,14 +408,6 @@ def get_processing_chain( raise SystemExit(f"Unknown condition {condition}!") # add postprocessing step based on condition - # if concatenation and splitting do loudness adjustment only on splitted files - if pre2_cfg.get("concatenate_input", False): - loudness_postprocessing = None - loudness_fmt_postprocessing = None - else: - loudness_postprocessing = post_cfg.get("loudness") - loudness_fmt_postprocessing = post_cfg.get("loudness_fmt", post_cfg.get("fmt")) - chain["processes"].append( Postprocessing( { @@ -435,8 +416,6 @@ def get_processing_chain( "out_fs": post_cfg.get("fs"), "out_fmt": post_cfg.get("fmt"), "out_cutoff": tmp_lp_cutoff, - "out_loudness": loudness_postprocessing, - "out_loudness_fmt": loudness_fmt_postprocessing, "bin_dataset": post_cfg.get("bin_dataset"), "bin_lfe_gain": post_cfg.get("bin_lfe_gain"), "limit": post_cfg.get("limit", True), diff --git a/ivas_processing_scripts/processing/processing.py b/ivas_processing_scripts/processing/processing.py index cfc5a381..458e88da 100755 --- a/ivas_processing_scripts/processing/processing.py +++ b/ivas_processing_scripts/processing/processing.py @@ -57,7 +57,6 @@ from ivas_processing_scripts.audiotools.metadata import ( split_meta_in_file, write_ISM_metadata_in_file, ) -from ivas_processing_scripts.audiotools.wrappers.bs1770 import scale_files from ivas_processing_scripts.constants import LOGGER_DATEFMT, LOGGER_FORMAT from ivas_processing_scripts.processing.config import TestConfig from ivas_processing_scripts.utils import apply_func_parallel, list_audio, pairwise @@ -350,17 +349,8 @@ def reverse_process_2(cfg, logger): else: out_meta_splits = None - # scale individual files - if cfg.postprocessing.get("loudness", False): - scale_files( - out_paths_splits, - cfg.postprocessing["fmt"], - cfg.postprocessing["loudness"], - cfg.postprocessing.get("loudness_fmt", cfg.postprocessing["fmt"]), - cfg.postprocessing["fs"], - out_meta_splits, - logger, - ) + cfg.pre2.out_paths_splits = out_paths_splits + cfg.pre2.out_meta_splits = out_meta_splits return -- GitLab From 561ef35b6d9ba3694388963c5f71d152de7ac1c0 Mon Sep 17 00:00:00 2001 From: Treffehn Date: Tue, 23 May 2023 16:59:33 +0200 Subject: [PATCH 2/4] should also work for ISM now --- ivas_processing_scripts/__init__.py | 26 ++--------------- .../processing/processing.py | 29 +++++++++++++++++++ 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/ivas_processing_scripts/__init__.py b/ivas_processing_scripts/__init__.py index 87378f19..f5365de7 100755 --- a/ivas_processing_scripts/__init__.py +++ b/ivas_processing_scripts/__init__.py @@ -51,9 +51,9 @@ from ivas_processing_scripts.processing.processing import ( rename_generated_conditions, reorder_items_list, reverse_process_2, + scale_resulting_files, ) from ivas_processing_scripts.utils import DirManager, apply_func_parallel -from ivas_processing_scripts.audiotools.wrappers.bs1770 import scale_files def logging_init(args, cfg): @@ -180,30 +180,10 @@ def main(args): reverse_process_2(cfg, logger) # scale individual files - # TODO: create new function for that part if cfg.postprocessing.get("loudness", False): - if hasattr(cfg, "preprocessing_2"): - out_paths_splits = cfg.pre2.out_paths_splits - out_meta_splits = cfg.pre2.out_meta_splits - else: - out_paths_splits = [] - for out_dir in cfg.out_dirs: - condition_list = [] - for item in cfg.items_list: - condition_list.append(out_dir.joinpath(item.name)) - out_paths_splits.append(condition_list) - - # TODO: get out_meta_splits and use - scale_files( - out_paths_splits, - cfg.postprocessing["fmt"], - cfg.postprocessing["loudness"], - cfg.postprocessing.get("loudness_fmt", None), - cfg.postprocessing["fs"], - None, - logger, - ) + scale_resulting_files(cfg, logger) + # rename output with condition name if cfg.condition_in_output_filename: rename_generated_conditions(cfg.output_path) diff --git a/ivas_processing_scripts/processing/processing.py b/ivas_processing_scripts/processing/processing.py index 458e88da..0ee024bd 100755 --- a/ivas_processing_scripts/processing/processing.py +++ b/ivas_processing_scripts/processing/processing.py @@ -60,6 +60,7 @@ from ivas_processing_scripts.audiotools.metadata import ( from ivas_processing_scripts.constants import LOGGER_DATEFMT, LOGGER_FORMAT from ivas_processing_scripts.processing.config import TestConfig from ivas_processing_scripts.utils import apply_func_parallel, list_audio, pairwise +from ivas_processing_scripts.audiotools.wrappers.bs1770 import scale_files class Processing(ABC): @@ -573,3 +574,31 @@ def rename_generated_conditions(output_path: Path): for file_path in subdirectory.iterdir(): new_filename = f"{file_path.stem}.{subdirectory.name}{file_path.suffix}" file_path.rename(subdirectory / new_filename) + + +def scale_resulting_files(cfg, logger): + if hasattr(cfg, "preprocessing_2"): + out_paths_splits = cfg.pre2.out_paths_splits + out_meta_splits = cfg.pre2.out_meta_splits + else: + num_obj = audio.fromtype(cfg.postprocessing["fmt"]).num_channels + out_paths_splits = [] + out_meta_splits = [] + item_names = [Path(i.name) for i in cfg.items_list] + for out_dir in cfg.out_dirs: + condition_list = [] + for item in item_names: + condition_list.append(out_dir.joinpath(item)) + out_paths_splits.append(condition_list) + a = metadata_search(out_dir, item_names, num_obj) + out_meta_splits.append(a) + + scale_files( + out_paths_splits, + cfg.postprocessing["fmt"], + cfg.postprocessing["loudness"], + cfg.postprocessing.get("loudness_fmt", None), + cfg.postprocessing["fs"], + out_meta_splits, + logger, + ) \ No newline at end of file -- GitLab From 41699c30b8f63d5d6380fc259b26c1d36a987e58 Mon Sep 17 00:00:00 2001 From: Treffehn Date: Wed, 24 May 2023 16:32:45 +0200 Subject: [PATCH 3/4] fixed bug when no metadata in not ISM format --- ivas_processing_scripts/processing/processing.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ivas_processing_scripts/processing/processing.py b/ivas_processing_scripts/processing/processing.py index 0ee024bd..e47514f6 100755 --- a/ivas_processing_scripts/processing/processing.py +++ b/ivas_processing_scripts/processing/processing.py @@ -583,15 +583,18 @@ def scale_resulting_files(cfg, logger): else: num_obj = audio.fromtype(cfg.postprocessing["fmt"]).num_channels out_paths_splits = [] - out_meta_splits = [] + if isinstance(audio.fromtype(cfg.postprocessing["fmt"]), audio.ObjectBasedAudio): + out_meta_splits = [] + else: + out_meta_splits = None item_names = [Path(i.name) for i in cfg.items_list] for out_dir in cfg.out_dirs: condition_list = [] for item in item_names: condition_list.append(out_dir.joinpath(item)) out_paths_splits.append(condition_list) - a = metadata_search(out_dir, item_names, num_obj) - out_meta_splits.append(a) + if isinstance(audio.fromtype(cfg.postprocessing["fmt"]), audio.ObjectBasedAudio): + out_meta_splits.append(metadata_search(out_dir, item_names, num_obj)) scale_files( out_paths_splits, -- GitLab From 164c3799d690d480310e9f768242afa9f3ed048e Mon Sep 17 00:00:00 2001 From: Treffehn Date: Wed, 24 May 2023 16:33:13 +0200 Subject: [PATCH 4/4] formatting --- ivas_processing_scripts/processing/processing.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/ivas_processing_scripts/processing/processing.py b/ivas_processing_scripts/processing/processing.py index e47514f6..be701c4f 100755 --- a/ivas_processing_scripts/processing/processing.py +++ b/ivas_processing_scripts/processing/processing.py @@ -57,10 +57,10 @@ from ivas_processing_scripts.audiotools.metadata import ( split_meta_in_file, write_ISM_metadata_in_file, ) +from ivas_processing_scripts.audiotools.wrappers.bs1770 import scale_files from ivas_processing_scripts.constants import LOGGER_DATEFMT, LOGGER_FORMAT from ivas_processing_scripts.processing.config import TestConfig from ivas_processing_scripts.utils import apply_func_parallel, list_audio, pairwise -from ivas_processing_scripts.audiotools.wrappers.bs1770 import scale_files class Processing(ABC): @@ -583,7 +583,9 @@ def scale_resulting_files(cfg, logger): else: num_obj = audio.fromtype(cfg.postprocessing["fmt"]).num_channels out_paths_splits = [] - if isinstance(audio.fromtype(cfg.postprocessing["fmt"]), audio.ObjectBasedAudio): + if isinstance( + audio.fromtype(cfg.postprocessing["fmt"]), audio.ObjectBasedAudio + ): out_meta_splits = [] else: out_meta_splits = None @@ -593,7 +595,9 @@ def scale_resulting_files(cfg, logger): for item in item_names: condition_list.append(out_dir.joinpath(item)) out_paths_splits.append(condition_list) - if isinstance(audio.fromtype(cfg.postprocessing["fmt"]), audio.ObjectBasedAudio): + if isinstance( + audio.fromtype(cfg.postprocessing["fmt"]), audio.ObjectBasedAudio + ): out_meta_splits.append(metadata_search(out_dir, item_names, num_obj)) scale_files( @@ -604,4 +608,4 @@ def scale_resulting_files(cfg, logger): cfg.postprocessing["fs"], out_meta_splits, logger, - ) \ No newline at end of file + ) -- GitLab