Loading ivas_processing_scripts/audiotools/convert/omasa.py +16 −16 Original line number Diff line number Diff line Loading @@ -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, \ Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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( Loading ivas_processing_scripts/audiotools/convert/osba.py +0 −2 Original line number Diff line number Diff line Loading @@ -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: Loading ivas_processing_scripts/processing/evs.py +1 −1 Original line number Diff line number Diff line Loading @@ -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) Loading ivas_processing_scripts/processing/processing.py +5 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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): Loading ivas_processing_scripts/processing/processing_splitting_scaling.py +1 −1 Original line number Diff line number Diff line Loading @@ -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)) { Loading Loading
ivas_processing_scripts/audiotools/convert/omasa.py +16 −16 Original line number Diff line number Diff line Loading @@ -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, \ Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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( Loading
ivas_processing_scripts/audiotools/convert/osba.py +0 −2 Original line number Diff line number Diff line Loading @@ -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: Loading
ivas_processing_scripts/processing/evs.py +1 −1 Original line number Diff line number Diff line Loading @@ -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) Loading
ivas_processing_scripts/processing/processing.py +5 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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): Loading
ivas_processing_scripts/processing/processing_splitting_scaling.py +1 −1 Original line number Diff line number Diff line Loading @@ -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)) { Loading