Commit 97331089 authored by Anika Treffehn's avatar Anika Treffehn
Browse files

fixed some omasa metadata problems

parent b8de52cb
Loading
Loading
Loading
Loading
+16 −16
Original line number Diff line number Diff line
@@ -29,7 +29,8 @@
#  the United Nations Convention on Contracts on the International Sales of Goods.
#

import copy
from copy import copy, deepcopy
import numpy as np

from ivas_processing_scripts.audiotools import audio
from ivas_processing_scripts.audiotools.convert.objectbased import render_oba_to_binaural, render_oba_to_cba, \
@@ -48,19 +49,20 @@ def convert_omasa(

    # split OMASA object in ISM and MASA object
    oba = audio.fromarray("ISM" + str(omasa.num_ism_channels), omasa.audio[:, :omasa.num_ism_channels], omasa.fs)
    oba.metadata_files = omasa.metadata_files
    oba.object_pos = omasa.object_pos
    masa = audio.fromarray("MASA" + str(omasa.num_channels-omasa.num_ism_channels), omasa.audio[:, omasa.num_ism_channels:], omasa.fs)
    oba.metadata_files = copy(omasa.metadata_files)
    oba.object_pos = copy(omasa.object_pos)
    masa = audio.fromarray("MASA" + str(omasa.num_channels-omasa.num_ism_channels) + "DIR" + str(omasa.dirs), omasa.audio[:, omasa.num_ism_channels:], omasa.fs)
    masa.metadata_file = omasa.metadata_files[-1]

    # OMASA -> Binaural
    if isinstance(out, audio.BinauralAudio):
        # render MASA and ISM part separately
        # ISM
        out_ism = copy.deepcopy(out)
        out_ism = deepcopy(out)
        render_oba_to_binaural(oba, out_ism, **kwargs)

        # MASA
        out_masa = copy.deepcopy(out)
        out_masa = deepcopy(out)
        render_masa_to_binaural(masa, out_masa, **kwargs)

        # combine results
@@ -70,11 +72,11 @@ def convert_omasa(
    elif isinstance(out, audio.ChannelBasedAudio):
        # render MASA and ISM part separately
        # ISM
        out_ism = copy.deepcopy(out)
        out_ism = deepcopy(out)
        render_oba_to_cba(oba, out_ism)

        # MASA
        out_masa = copy.deepcopy(out)
        out_masa = deepcopy(out)
        render_masa_to_cba(masa, out_masa)

        # combine results
@@ -84,11 +86,11 @@ def convert_omasa(
    elif isinstance(out, audio.SceneBasedAudio):
        # render MASA and ISM part separately
        # ISM
        out_ism = copy.deepcopy(out)
        out_ism = deepcopy(out)
        render_oba_to_sba(oba, out_ism)

        # MASA
        out_masa = copy.deepcopy(out)
        out_masa = deepcopy(out)
        render_masa_to_sba(masa, out_masa)

        # combine results
@@ -96,17 +98,15 @@ def convert_omasa(

    # OMASA -> OSBA
    elif isinstance(out, audio.OSBAAudio):
        # TODO (treffehn)
        # check if ism object number is the same
        if out.num_ism_channels != masa.num_ism_channels:
        if out.num_ism_channels != omasa.num_ism_channels:
            raise ValueError("OMASA to OSBA conversion only possible if number of ISM objects matches")

        # only render MASA part
        out_sba = audio.fromtype("MASA")
        render_masa_to_sba(masa, out_sba)
        out_masa = deepcopy(out)
        render_masa_to_sba(masa, out_masa)

        out.audio[:, :omasa.num_ism_channels] = omasa.audio[:, :omasa.num_ism_channels]
        out.audio[:, omasa.num_ism_channels:] = out_sba.audio
        out.audio = np.concatenate((omasa.audio[:, :omasa.num_ism_channels], out_masa.audio), axis=1)

    else:
        raise NotImplementedError(
+0 −2
Original line number Diff line number Diff line
@@ -107,8 +107,6 @@ def convert_osba(
        out_sba.metadata_file = out.metadata_files[-1]
        render_sba_to_masa(sba, out_sba)

        # out.audio[:, :osba.num_ism_channels] = osba.audio[:, :osba.num_ism_channels]
        # out.audio[:, osba.num_ism_channels:] = out_sba.audio
        out.audio = np.concatenate((osba.audio[:, :osba.num_ism_channels], out_sba.audio), axis=1)

    else:
+1 −1
Original line number Diff line number Diff line
@@ -284,7 +284,7 @@ class EVS(Processing):

            # copy MASA metadata for MASA pass-through
            if isinstance(self.in_fmt, audio.MetadataAssistedSpatialAudio):
                # TODO: add OMASA
                # TODO treffehn: add OMASA
                md_file_in = in_file.parent / (in_file.name + ".met")
                md_file_out = out_file.parent / (out_file.name + ".met")
                copyfile(md_file_in, md_file_out)
+5 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ from abc import ABC, abstractmethod
from itertools import repeat
from multiprocessing import Pool
from pathlib import Path
import shutil
from shutil import copyfile
from time import sleep
from typing import Iterable, Union
@@ -502,6 +503,10 @@ def process_item(
        if processing_paths_meta[-1]:
            for idx, ppm in enumerate(processing_paths_meta[-1]):
                copyfile(ppm, out_meta[idx])
        if "MASA" in chain[-1].out_fmt:
            masa_meta_file_tmp = Path(processing_paths[-1]).parent / (Path(processing_paths[-1]).name + ".met")
            masa_meta_file = Path(out_file).parent / (Path(out_file).name + ".met")
            copyfile(masa_meta_file_tmp, masa_meta_file)


def remove_preamble(x, out_fmt, fs, repeat_signal, preamble_len_ms, meta, logger):
+1 −1
Original line number Diff line number Diff line
@@ -344,7 +344,7 @@ def validate_tracefile(tracefile):
        if entry[1] >= 0:
            if entry[1] == prevRtpTs:
                raise ValueError(f"Error in JBM trace file at line {j}: duplicated rtpTs found")
            # TODO: (treffehn) include RTP time stamp overflow handling?
            # TODO: include RTP time stamp overflow handling?
            # else if (entry.rtpTs + rtpTsExtension < prevRtpTs) {
            # if (entry.rtpTs + rtpTsExtension + (1LL << 32) - prevRtpTs <
            #         prevRtpTs - (entry.rtpTs + rtpTsExtension)) {