blob: cac5ccbf83d41e2c2d11660ca8154d7d615f66c8 [file] [log] [blame]
#!/usr/bin/env python3
## Copyright (c) 2023, Alliance for Open Media. All rights reserved
##
## This source code is subject to the terms of the BSD 3-Clause Clear License and the
## Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear License was
## not distributed with this source code in the LICENSE file, you can obtain it
## at aomedia.org/license/software-license/bsd-3-c-c/. If the Alliance for Open Media Patent
## License 1.0 was not distributed with this source code in the PATENTS file, you
## can obtain it at aomedia.org/license/patent-license/.
##
"""Helper tool to dump an AVM frame proto to a JSON file."""
from collections.abc import Sequence
import pathlib
from absl import app
from absl import flags
from absl import logging
from avm_stats import avm_frame_pb2
from google.protobuf import json_format
_PROTO = flags.DEFINE_string("proto", None, "Path to AVM frame protobuf.")
flags.mark_flag_as_required("proto")
_OUTPUT_JSON = flags.DEFINE_string(
"output_json", None, "Path to output JSON file."
)
flags.mark_flag_as_required("output_json")
def dump_json(proto: avm_frame_pb2.Frame, output_json: pathlib.Path):
"""Dumps an AVM frame proto to a JSON file.
Args:
frame: AVM frame proto object.
output_json: Path to write JSON to.
"""
with output_json.open("w") as f:
json = json_format.MessageToJson(proto)
f.write(json)
logging.info("Wrote %s.", output_json)
def main(argv: Sequence[str]) -> None:
if len(argv) > 1:
raise app.UsageError("Too many command-line arguments.")
proto_path = pathlib.Path(_PROTO.value)
output_json = pathlib.Path(_OUTPUT_JSON.value)
with proto_path.open("rb") as f:
proto = avm_frame_pb2.Frame.FromString(f.read())
dump_json(proto, output_json)
if __name__ == "__main__":
app.run(main)