Commit a5c4bb90 authored by Fabian Müller's avatar Fabian Müller
Browse files

Add script to filter out smoke test items broken in basop

parent 15577aa3
Loading
Loading
Loading
Loading
Loading
+53 −0
Original line number Diff line number Diff line
#! /usr/bin/env python3

import argparse
import json
import logging
import sys


logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s')
logger = logging.getLogger()


def main():
    parser = argparse.ArgumentParser()

    parser.add_argument("input", help="input JSON", type=argparse.FileType('r'))
    parser.add_argument("output", help="output JSON", type=argparse.FileType('w'), nargs="?")
    parser.add_argument("--inline", "-i", help="patch input inline", action="store_true")

    args = parser.parse_args()

    if not args.inline and not args.output:
        logging.error("You must specify an output file or use --inline")
        return 1

    modes = json.load(args.input)

    for mode in ("MC", "stereo", "OMASA"):
        for encoder_config_name in modes[mode].keys():
            try:
                del modes[mode][encoder_config_name]["dec"]["EXT"]
            except KeyError:
                logger.warning(f"No EXT dec in {mode} -> {encoder_config_name}, skipping")
                continue
            else:
                logger.info(f"Found EXT dec in {mode} -> {encoder_config_name}, removing")

    for encoder_config_name in tuple(modes["OSBA"].keys()):
        if not "FOA" in encoder_config_name:
            continue

        logger.info(f"Removing OSBA FOA encoder config {encoder_config_name}")
        del modes["OSBA"][encoder_config_name]

    if args.inline:
        with open(args.input.name, "w") as f:
            json.dump(modes, f, indent=4)
    else:
        json.dump(modes, args.output, indent=4)


if __name__ == "__main__":
    sys.exit(main())