Commit 88bffca6 authored by Archit Tamarapu's avatar Archit Tamarapu
Browse files

pass logger down to all run() functions to help debug executables

parent a5808a88
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -326,13 +326,13 @@ def process_audio(
    if mask is not None:
        if logger:
            logger.debug("Applying mask filter using ITU STL filter")
        x.audio = maskfilter_itu(x, mask)
        x.audio = maskfilter_itu(x, mask, logger=logger)

    """resampling"""
    if x.fs != fs:
        if logger:
            logger.debug(f"Resampling from {x.fs} to {fs} using ITU STL filter")
        x.audio = resample_itu(x, fs)
        x.audio = resample_itu(x, fs, logger=logger)
        x.fs = fs

    """low-pass filtering"""
@@ -342,7 +342,7 @@ def process_audio(
                logger.debug(
                    f"Applying low-pass filter with cutoff {fc}Hz using ITU STL filter"
                )
            x.audio = lpfilter_itu(x, fc)
            x.audio = lpfilter_itu(x, fc, logger=logger)
        except NotImplementedError:
            warn(
                f"Low-pass filter cutoff {fc}Hz not supported by ITU filter. Falling back to python implementation."
@@ -357,13 +357,13 @@ def process_audio(
    if mnru_q is not None:
        if logger:
            logger.debug("Applying P.50 Fullband MNRU")
        x.audio = p50fbmnru(x, mnru_q)
        x.audio = p50fbmnru(x, mnru_q, logger=logger)

    """ESDRU"""
    if esdru_alpha is not None:
        if logger:
            logger.debug("Applying ESDRU Recommendation ITU-T P.811")
        x.audio = esdru(x, esdru_alpha)
        x.audio = esdru(x, esdru_alpha, logger=logger)

    """Spatial distortion"""
    if (
+1 −1
Original line number Diff line number Diff line
@@ -721,7 +721,7 @@ def add_masa_metadata_preamble_repeat(

            num_tc = masa.num_channels - getattr(masa, "num_ism_channels", 0)

            masaAnalyzer(sba, num_tc, masa.dirs, tmp_meta)
            masaAnalyzer(sba, num_tc, masa.dirs, tmp_meta, logger=logger)

            if logger:
                logger.debug(f"Preamble Metadata size {tmp_meta.stat().st_size}")
+10 −6
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ def bs1770demo(
    input: audio.Audio,
    target_loudness: Optional[float] = -26,
    rms: Optional[bool] = False,
    logger: Optional[logging.Logger] = None,
) -> Tuple[float, float]:
    """
    Wrapper for ITU-R BS.1770-4, requires bs1770demo binary
@@ -83,7 +84,7 @@ def bs1770demo(
        binary = find_binary("bs1770demo")

    # checking if the new binary (with '-rms') is used
    result_check = run([str(binary)], check=False)
    result_check = run([str(binary)], check=False, logger=logger)
    if "-rms" not in result_check.stdout:
        raise RuntimeError(
            'A bs1770demo executable without RMS support (cmdl option "-rms") was detected. Please update the bs1770demo executable. See bin/README.md for details.'
@@ -98,7 +99,7 @@ def bs1770demo(
        warn(
            "ITU-R BS.1770-4 only supports 48kHz sampling rate. Temporarily resampling signal for measurement."
        )
        tmp_sig = resample_itu(input, 48000)
        tmp_sig = resample_itu(input, 48000, logger=logger)
    else:
        tmp_sig = input.audio

@@ -143,7 +144,7 @@ def bs1770demo(
            cmd.insert(1, "-rms")

        # run command
        result = run(cmd)
        result = run(cmd, logger=logger)

        # parse output
        # we are looking for the (floating-point) number after the search string - '( )' around the number denotes the first group
@@ -162,6 +163,7 @@ def get_loudness(
    target_loudness: Optional[float] = -26,
    loudness_format: Optional[str] = None,
    rms: Optional[bool] = False,
    logger: Optional[logging.Logger] = None,
) -> Tuple[float, float, str]:
    """
    Loudness measurement using ITU-R BS.1770-4
@@ -214,7 +216,9 @@ def get_loudness(
        convert.format_conversion(input, tmp)
    else:
        tmp.audio = input.audio
    measured_loudness, scale_factor = bs1770demo(tmp, target_loudness, rms)
    measured_loudness, scale_factor = bs1770demo(
        tmp, target_loudness, rms, logger=logger
    )
    return measured_loudness, scale_factor, loudness_format


@@ -261,7 +265,7 @@ def loudness_norm(

    # save loudness before and after scaling for the logger info
    loudness_before, scale_factor_new, loundness_fmt_used = get_loudness(
        scaled_input, target_loudness, loudness_format, rms
        scaled_input, target_loudness, loudness_format, rms, logger=logger
    )

    # repeat until convergence of loudness
@@ -272,7 +276,7 @@ def loudness_norm(

        # measure loudness and get scaling factor
        measured_loudness, scale_factor_new, _ = get_loudness(
            scaled_input, target_loudness, loudness_format, rms
            scaled_input, target_loudness, loudness_format, rms, logger=logger
        )

        num_iter += 1
+12 −4
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@
#  the United Nations Convention on Contracts on the International Sales of Goods.
#

import logging
from pathlib import Path
from typing import Optional, Union
from warnings import warn
@@ -56,6 +57,7 @@ def dlyerr_2_errpat(
    flag_word: Optional[bool] = None,
    flag_lf: Optional[bool] = None,
    delay: Optional[int] = None,
    logger: Optional[logging.Logger] = None,
) -> None:
    """
    Wrapper for dlyerr_2_errpat binary to convert delay and error profiles to frame error patterns for EVS JBM
@@ -133,7 +135,7 @@ def dlyerr_2_errpat(
        cmd.extend(["-d", str(delay)])

    # run command
    run(cmd)
    run(cmd, logger=logger)

    return

@@ -148,6 +150,7 @@ def evs_jbm(
    errpatt_seed,
    errpatt_frames_packet,
    master_seed,
    logger: Optional[logging.Logger] = None,
):
    # convert delay and error profile
    delay = None
@@ -167,7 +170,9 @@ def evs_jbm(
        dlyerr_pattern = error_pattern
        # compute offset of error pattern
        len_pattern = length_pattern(dlyerr_pattern)
        shift = random_seed((0, len_pattern - 1), master_seed, errpatt_seed)
        shift = random_seed(
            (0, len_pattern - 1), master_seed, errpatt_seed, logger=logger
        )

    elif error_profile is not None:
        # if error profile number is given
@@ -202,7 +207,9 @@ def evs_jbm(

        # compute offset of error pattern
        len_pattern = length_pattern(dlyerr_pattern)
        shift = random_seed((0, len_pattern - 1), master_seed, error_profile, False)
        shift = random_seed(
            (0, len_pattern - 1), master_seed, error_profile, False, logger=logger
        )

    fer_pattern = Path(bitstream).with_suffix(".evs_jbm_fer.192")

@@ -215,10 +222,11 @@ def evs_jbm(
        shift=shift,
        late_loss_rate=late_loss_rate,
        length=length,
        logger=logger,
    )

    # apply FER pattern with eid-xor
    eid_xor(fer_pattern, bitstream, bitstream_processed)
    eid_xor(fer_pattern, bitstream, bitstream_processed, logger=logger)


def validate_evs_jbm(
+12 −3
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@
#  the United Nations Convention on Contracts on the International Sales of Goods.
#

import logging
import os.path
from pathlib import Path
from typing import Optional, Union
@@ -43,6 +44,7 @@ def eid_xor(
    error_pattern: Union[str, Path],
    in_bitstream: Union[str, Path],
    out_bitstream: Union[str, Path],
    logger: Optional[logging.Logger] = None,
) -> None:
    """
    Wrapper for eid-xor binary to apply error patterns for the bitstream processing
@@ -87,7 +89,7 @@ def eid_xor(
    ]

    # run command
    run(cmd)
    run(cmd, logger=logger)

    return

@@ -101,6 +103,7 @@ def create_and_apply_error_pattern(
    preamble: Optional[int] = 0,
    master_seed: Optional[int] = 0,
    prerun_seed: Optional[int] = 0,
    logger: Optional[logging.Logger] = None,
) -> None:
    """
    Function to create (or use existing) frame error pattern for bitstream processing
@@ -132,7 +135,13 @@ def create_and_apply_error_pattern(
                ".192"
            )
            create_error_pattern(
                len_sig, error_pattern, error_rate, preamble, master_seed, prerun_seed
                len_sig,
                error_pattern,
                error_rate,
                preamble,
                master_seed,
                prerun_seed,
                logger=logger,
            )
        else:
            raise ValueError(
@@ -144,7 +153,7 @@ def create_and_apply_error_pattern(
        )

    # apply error pattern
    eid_xor(error_pattern, in_bitstream, out_bitstream)
    eid_xor(error_pattern, in_bitstream, out_bitstream, logger=logger)

    return

Loading