Commit 95eb8252 authored by Archit Tamarapu's avatar Archit Tamarapu
Browse files

add extended metadata support for IVAS ISM

parent 323280f0
Loading
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -413,6 +413,8 @@ conditions_to_generate:
      # fs: 32000
      ### Additional commandline options; default = null
      # opts: ["-q", "-dtx", 4]
      ### Extended metadata flag for ISM > 64kbps, ignored otherwise; default = false
      # extended_metadata: true
    ### Decoder options
    dec:
      ### Path to decoder binary; default search for IVAS_dec in bin folder (primary) and PATH (secondary)
+2 −0
Original line number Diff line number Diff line
@@ -276,6 +276,8 @@ conditions_to_generate:
          # fs: 32000
          ### Additional commandline options; default = null
          # opts: ["-q", "-dtx", 4]
          ### Extended metadata flag for ISM > 64kbps, ignored otherwise; default = false
          # extended_metadata: true
      ### Decoder options
      dec:
          ### Path to decoder binary; default search for IVAS_dec in bin folder (primary) and PATH (secondary)
+1 −0
Original line number Diff line number Diff line
@@ -500,6 +500,7 @@ def get_processing_chain(
                    "cod_opts": cod_cfg.get("opts"),
                    "dec_bin": get_abs_path(dec_cfg.get("bin", None)),
                    "dec_opts": dec_cfg.get("opts"),
                    "extended_metadata": cod_cfg.get("extended_metadata", False),
                    "multiprocessing": cfg.multiprocessing,
                    "tx": tx_cfg,
                    "preamble": preamble,
+20 −18
Original line number Diff line number Diff line
@@ -201,7 +201,9 @@ class IVAS(Processing):
        # use quiet mode
        cmd.extend(["-q"])

        fmt_codec = IVAS.parse_config(self.in_fmt, metadata_files)
        fmt_codec = IVAS.parse_config(
            self.in_fmt, metadata_files, self.extended_metadata
        )
        if fmt_codec == [""]:
            cmd.extend(
                [
@@ -350,7 +352,11 @@ class IVAS(Processing):
        run(cmd, logger=logger)

    @staticmethod
    def parse_config(fmt: audio.Audio, metadata_files: Optional[list] = None):
    def parse_config(
        fmt: audio.Audio,
        metadata_files: Optional[list] = None,
        extended_metadata: Optional[bool] = False,
    ):
        if fmt.name == "MONO":
            return [""]
        elif fmt.name == "STEREO":
@@ -359,9 +365,12 @@ class IVAS(Processing):
            # replace any missing files with NULL
            while len(metadata_files) < int(fmt.num_channels):
                metadata_files.append("NULL")
            return ["-ism", str(fmt.num_channels)] + metadata_files[: fmt.num_channels]
            return [
                "-ism",
                f"{'+' if extended_metadata else ''}{fmt.num_channels}",
            ] + metadata_files[: fmt.num_channels]
        elif isinstance(fmt, audio.MetadataAssistedSpatialAudio):
            return ["-masa", str(fmt.num_channels), metadata_files[0]]
            return ["-masa", f"{fmt.num_channels}", metadata_files[0]]
        elif isinstance(fmt, audio.SceneBasedAudio):
            if fmt.is_planar:
                return ["-sba", f"-{fmt.ambi_order}"]
@@ -374,23 +383,16 @@ class IVAS(Processing):
        ]:
            return ["-mc", fmt.name]
        elif isinstance(fmt, audio.OSBAAudio):
            if fmt.is_planar:
                return [
                    "-ism_sba",
                    str(fmt.num_ism_channels),
                    f"-{str(fmt.ambi_order)}",
                ] + metadata_files
            else:
            return [
                "-ism_sba",
                    str(fmt.num_ism_channels),
                    f"+{str(fmt.ambi_order)}",
                f"{fmt.num_ism_channels}",
                f"{'-' if fmt.is_planar else '+'}{fmt.ambi_order}",
            ] + metadata_files
        elif isinstance(fmt, audio.OMASAAudio):
            return [
                "-ism_masa",
                str(fmt.num_ism_channels),
                str(fmt.num_channels - fmt.num_ism_channels),
                f"{fmt.num_ism_channels}",
                f"{fmt.num_channels - fmt.num_ism_channels}",
            ] + metadata_files

        raise ValueError(f"IVAS: Invalid input config: {fmt.name}.")
+1500 −1500

File changed.

Preview size limit exceeded, changes collapsed.

Loading