From d94ae23f15f11e19e83f64ddae9aaf8cbfded61e Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 15 Aug 2025 14:58:35 +0200 Subject: [PATCH 1/2] enable using IVAS_rend also for pre-rendering --- examples/TEMPLATE.yml | 4 ++ ivas_processing_scripts/processing/chains.py | 53 +++++++++++++++++--- 2 files changed, 50 insertions(+), 7 deletions(-) diff --git a/examples/TEMPLATE.yml b/examples/TEMPLATE.yml index 6248a888..73b4c3b1 100755 --- a/examples/TEMPLATE.yml +++ b/examples/TEMPLATE.yml @@ -240,6 +240,10 @@ conditions_to_generate: # fs: 32000 ### Additional commandline options; default = null # opts: ["-q", "-dtx", 4] + ### Input format conversion, if encoding a different format + # fmt: "FOA" + ### Optional use of IVAS_rend for prerendering; can be True (default search) or a path to the binary + # ivas_prerend: false ### Decoder options dec: ### Path to decoder binary; default search for IVAS_dec in bin folder (primary) and PATH (secondary) diff --git a/ivas_processing_scripts/processing/chains.py b/ivas_processing_scripts/processing/chains.py index 6ee222dc..56e2cbbc 100755 --- a/ivas_processing_scripts/processing/chains.py +++ b/ivas_processing_scripts/processing/chains.py @@ -31,6 +31,7 @@ # from pathlib import Path +from platform import system from shutil import copyfile, rmtree from typing import Optional from warnings import warn @@ -49,7 +50,12 @@ from ivas_processing_scripts.processing.processing_splitting_scaling import ( Processing_splitting_scaling, ) from ivas_processing_scripts.processing.tx import get_tx_cfg -from ivas_processing_scripts.utils import get_abs_path, list_audio, parse_gain +from ivas_processing_scripts.utils import ( + get_abs_path, + find_binary, + list_audio, + parse_gain, +) def init_processing_chains(cfg: TestConfig) -> None: @@ -218,6 +224,35 @@ def get_preprocessing_2(cfg: TestConfig) -> dict: return chain +def get_prerend( + rend_cfg: dict = None, + name="prerend", + use_windows_codec_binaries: bool = False, + attrs: dict = None, +): + + if rend_cfg: + # set to dict; if the user didn't configure anything and wants defaults + # Workaround since processing:TestConfig:_validate_file_cfg() removes keys with None values + if isinstance(rend_cfg, bool): + rend_cfg = { + "bin": find_binary( + f"IVAS_rend{ '.exe' if system() == 'Linux' and use_windows_codec_binaries else '' }" + ) + } + attrs.setdefault("bin", get_abs_path(rend_cfg.get("bin"))) + attrs.setdefault("opts", rend_cfg.get("opts")) + attrs.setdefault("use_windows_codec_binaries", use_windows_codec_binaries) + return IVAS_rend( + attrs, + ) + else: + return Postprocessing( + attrs, + name=name, + ) + + def get_processing_chain( condition: str, cfg: TestConfig, @@ -334,8 +369,11 @@ def get_processing_chain( # if the encoding format differs from the format after the preprocessing, add format conversion stuff if (cod_fmt := cod_cfg.get("fmt", tmp_in_fmt)) != tmp_in_fmt: chain["processes"].append( - Postprocessing( - { + get_prerend( + cod_cfg.get("ivas_prerend"), + name="cod_fmt", + use_windows_codec_binaries=cfg.use_windows_codec_binaries, + attrs={ "in_fs": tmp_in_fs, "in_fmt": tmp_in_fmt, "out_fs": tmp_in_fs, @@ -343,7 +381,6 @@ def get_processing_chain( "multiprocessing": cfg.multiprocessing, "tx_condition": False, }, - name="cod_fmt", ) ) tmp_in_fmt = cod_fmt @@ -411,8 +448,11 @@ def get_processing_chain( # if the encoding format differs from the format after the preprocessing, add format conversion if (cod_fmt := cod_cfg.get("fmt", tmp_in_fmt)) != tmp_in_fmt: chain["processes"].append( - Postprocessing( - { + get_prerend( + cod_cfg.get("ivas_prerend"), + name="cod_fmt", + use_windows_codec_binaries=cfg.use_windows_codec_binaries, + attrs={ "in_fs": tmp_in_fs, "in_fmt": tmp_in_fmt, "out_fs": tmp_in_fs, @@ -420,7 +460,6 @@ def get_processing_chain( "multiprocessing": cfg.multiprocessing, "tx_condition": False, }, - name="cod_fmt", ) ) tmp_in_fmt = cod_fmt -- GitLab From 7a2bd4a11173373c9c449db7a81189974df759cf Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 15 Aug 2025 15:00:36 +0200 Subject: [PATCH 2/2] formatting --- ivas_processing_scripts/processing/chains.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ivas_processing_scripts/processing/chains.py b/ivas_processing_scripts/processing/chains.py index e617a4ef..b58ab4a9 100755 --- a/ivas_processing_scripts/processing/chains.py +++ b/ivas_processing_scripts/processing/chains.py @@ -52,8 +52,8 @@ from ivas_processing_scripts.processing.processing_splitting_scaling import ( ) from ivas_processing_scripts.processing.tx import get_tx_cfg from ivas_processing_scripts.utils import ( - get_abs_path, find_binary, + get_abs_path, list_audio, parse_gain, ) @@ -231,7 +231,6 @@ def get_prerend( use_windows_codec_binaries: bool = False, attrs: dict = None, ): - if rend_cfg: # set to dict; if the user didn't configure anything and wants defaults # Workaround since processing:TestConfig:_validate_file_cfg() removes keys with None values -- GitLab