diff --git a/ivas_processing_scripts/__init__.py b/ivas_processing_scripts/__init__.py index 1a3fa594476d66917354cd9171e7737687641ce9..f5365de714088dba5176a0b12c120924e492eb8b 100755 --- a/ivas_processing_scripts/__init__.py +++ b/ivas_processing_scripts/__init__.py @@ -51,6 +51,7 @@ 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 @@ -174,9 +175,15 @@ 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 + if cfg.postprocessing.get("loudness", False): + 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/chains.py b/ivas_processing_scripts/processing/chains.py index c11be9a1bc54700ee37cb9d3e6624fefcea19935..f40f7bd7ece95476d9709f348e914bf82f38606d 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 cfc5a3811af66f6abc2406ae9cd1134435315b9a..be701c4f8441623dc539ffda5df02ecec1a5bf6d 100755 --- a/ivas_processing_scripts/processing/processing.py +++ b/ivas_processing_scripts/processing/processing.py @@ -350,17 +350,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 @@ -583,3 +574,38 @@ 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 = [] + 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) + 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, + cfg.postprocessing["fmt"], + cfg.postprocessing["loudness"], + cfg.postprocessing.get("loudness_fmt", None), + cfg.postprocessing["fs"], + out_meta_splits, + logger, + )