Commit 59266d92 authored by bayers's avatar bayers
Browse files

add OSBA to pyivastest framework

parent 30733d95
Loading
Loading
Loading
Loading
+1383 −1

File changed.

Preview size limit exceeded, changes collapsed.

+26 −0
Original line number Diff line number Diff line
@@ -65,6 +65,13 @@ masa_alts = ({'masa_meta_file': 'stv2MASA2TC48c.met',
              'masa_audio_file': 'stv1MASA1TC48c.wav',
              'masa_tag': '1MASA1TC'})

sba_alts = ({'sba_audio_file': 'stvFOA48c.wav',
              'sba_tag': 'FOA'},
             {'sba_audio_file': 'stv2OA48c.wav',
              'sba_tag': '2OA'},
             {'sba_audio_file': 'stv3OA48c.wav',
              'sba_tag': '3OA'})

# files containing 1-4 ISMs as channels
ism_files = ('stv1ISM48s.wav', 'stv2ISM48s.wav', 'stv3ISM48s.wav', 'stv4ISM48s.wav')
# per-object metadata
@@ -100,6 +107,25 @@ for enum_idx, (ism_audio_file, ism_meta_file) in enumerate(zip(ism_files, ism_me
        if not os.path.exists(masa_meta_name) or force_overwrite:
            shutil.copyfile(os.path.join(input_dir, masa_item['masa_meta_file']), masa_meta_name)
            wrote_files.append(masa_meta_name)
    for sba_item in sba_alts:
        sba_tag = sba_item['sba_tag']

        osba_file_body = f'stvOSBA_{n_isms}ISM_{sba_tag}48c'
        osba_file = os.path.join(output_dir, f'{osba_file_body}.wav')

        if not os.path.exists(osba_file) or force_overwrite:
            audiofile.combinefiles(in_filenames=[os.path.join(input_dir, ism_audio_file),
                                                os.path.join(input_dir, sba_item['sba_audio_file'])],
                                out_file=osba_file)
            wrote_files.append(osba_file)

        # copy ISM metadata files under names matching the combined file
        for ism_idx in range(n_isms):
            ism_file_name = os.path.join(output_dir, f'{osba_file_body}_ISM{ism_idx+1}{os.path.splitext(ism_meta_file)[1]}')
            if not os.path.exists(ism_file_name) or force_overwrite:
                shutil.copyfile(os.path.join(input_dir, ism_meta_file), ism_file_name)
                wrote_files.append(ism_file_name)


# info print. helps setting up .gitignore
if len(wrote_files) > 0:
+145 −0
Original line number Diff line number Diff line
@@ -356,6 +356,151 @@ _format_configs = {
        "lfe_index": [],
        "altname": "meta",
    },
    # OSBA Formats
    "OSBA_ISM1_HOA3":
        {
                "name": "OSBA_ISM1_HOA3",
                "ambi_order": 3,
                "isplanar": False,
                "nchannels": 17,
                "isloudspeaker": False,
                "isheadphones": False,
                "lfe_index": [],
                "altname": "osba3_ism1",

        },
    "OSBA_ISM1_HOA2":
        {
            "name": "OSBA_ISM1_HOA2",
            "ambi_order": 2,
            "isplanar": False,
            "nchannels": 10,
            "isloudspeaker": False,
            "isheadphones": False,
            "lfe_index": [],
            "altname": "osba2_ism1",

        },
    "OSBA_ISM1_FOA":
        {
            "name": "OSBA_ISM1_FOA",
            "ambi_order": 1,
            "isplanar": False,
            "nchannels": 5,
            "isloudspeaker": False,
            "isheadphones": False,
            "lfe_index": [],
            "altname": "osba1_ism1",

        },
    "OSBA_ISM2_HOA3":
        {
                "name": "OSBA_ISM2_HOA3",
                "ambi_order": 3,
                "isplanar": False,
                "nchannels": 18,
                "isloudspeaker": False,
                "isheadphones": False,
                "lfe_index": [],
                "altname": "osba3_ism2",

        },
    "OSBA_ISM2_HOA2":
        {
            "name": "OSBA_ISM2_HOA2",
            "ambi_order": 2,
            "isplanar": False,
            "nchannels": 11,
            "isloudspeaker": False,
            "isheadphones": False,
            "lfe_index": [],
            "altname": "osba2_ism2",

        },
    "OSBA_ISM2_FOA":
        {
            "name": "OSBA_ISM2_FOA",
            "ambi_order": 1,
            "isplanar": False,
            "nchannels": 6,
            "isloudspeaker": False,
            "isheadphones": False,
            "lfe_index": [],
            "altname": "osba1_ism2",

        },
    "OSBA_ISM3_HOA3":
        {
            "name": "OSBA_ISM3_HOA3",
            "ambi_order": 3,
            "isplanar": False,
            "nchannels": 19,
            "isloudspeaker": False,
            "isheadphones": False,
            "lfe_index": [],
            "altname": "osba3_ism3",

        },
    "OSBA_ISM3_HOA2":
        {
            "name": "OSBA_ISM3_HOA2",
            "ambi_order": 2,
            "isplanar": False,
            "nchannels": 12,
            "isloudspeaker": False,
            "isheadphones": False,
            "lfe_index": [],
            "altname": "osba2_ism3",

        },
    "OSBA_ISM3_FOA":
        {
            "name": "OSBA_ISM3_FOA",
            "ambi_order": 1,
            "isplanar": False,
            "nchannels": 7,
            "isloudspeaker": False,
            "isheadphones": False,
            "lfe_index": [],
            "altname": "osba1_ism3",

        },
    "OSBA_ISM4_HOA3":
        {
            "name": "OSBA_ISM4_HOA3",
            "ambi_order": 3,
            "isplanar": False,
            "nchannels": 20,
            "isloudspeaker": False,
            "isheadphones": False,
            "lfe_index": [],
            "altname": "osba3_ism4",

        },
    "OSBA_ISM4_HOA2":
        {
            "name": "OSBA_ISM4_HOA2",
            "ambi_order": 2,
            "isplanar": False,
            "nchannels": 13,
            "isloudspeaker": False,
            "isheadphones": False,
            "lfe_index": [],
            "altname": "osba2_ism4",

        },
    "OSBA_ISM4_FOA":
        {
            "name": "OSBA_ISM4_FOA",
            "ambi_order": 1,
            "isplanar": False,
            "nchannels": 8,
            "isloudspeaker": False,
            "isheadphones": False,
            "lfe_index": [],
            "altname": "osba1_ism4",

        },
}

# Channel indices of planar Ambisonic components of ACN
+7 −0
Original line number Diff line number Diff line
@@ -592,6 +592,13 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector):
                        if config["cmd"]["in_config"] == "SBA":
                            wav_info = af.get_wav_file_info(in_file_name_transformed)
                            in_format = spformat.detect_format(wav_info["channels"])
                        elif config["cmd"]["in_config"][0:4] == "OSBA":
                            # get number of ISMs expected
                            osba_ism_config = config["cmd"]["in_config"][5:9]
                            osba_ism_format_dict = spformat.get_format_dict(osba_ism_config)
                            wav_info = af.get_wav_file_info(in_file_name_transformed)
                            osba_ambi_config = spformat.detect_format(wav_info["channels"] - osba_ism_format_dict["nchannels"])
                            in_format = f"OSBA_{osba_ism_config}_{osba_ambi_config}"

                        # save in config as json file
                        in_format_dict = spformat.get_format_dict(in_format)