// 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 www.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
// www.aomedia.org/license/patent.

edition = "2023";

package iamf_tools_cli_proto;

import "iamf/cli/proto/arbitrary_obu.proto";
import "iamf/cli/proto/audio_element.proto";
import "iamf/cli/proto/audio_frame.proto";
import "iamf/cli/proto/codec_config.proto";
import "iamf/cli/proto/encoder_control_metadata.proto";
import "iamf/cli/proto/ia_sequence_header.proto";
import "iamf/cli/proto/mix_presentation.proto";
import "iamf/cli/proto/parameter_block.proto";
import "iamf/cli/proto/temporal_delimiter.proto";
import "iamf/cli/proto/test_vector_metadata.proto";

message UserMetadata {
  reserved 1, 5;

  // Top-level metadata about the file.
  TestVectorMetadata test_vector_metadata = 9;

  // Knobs to control the encoder behavior.
  EncoderControlMetadata encoder_control_metadata = 12;

  // Descriptor OBUs.
  repeated IASequenceHeaderObuMetadata ia_sequence_header_metadata = 10;
  repeated CodecConfigObuMetadata codec_config_metadata = 2;
  repeated AudioElementObuMetadata audio_element_metadata = 3;
  repeated MixPresentationObuMetadata mix_presentation_metadata = 4;

  // Temporal Unit OBUs.
  repeated AudioFrameObuMetadata audio_frame_metadata = 6;
  repeated ParameterBlockObuMetadata parameter_block_metadata = 7;
  TemporalDelimiterObuMetadata temporal_delimiter_metadata = 8;

  // A list of arbitrary OBUs to insert blindly into the stream. There is no
  // attempt to validate or process any side effects of adding the OBUs.
  repeated ArbitraryObuMetadata arbitrary_obu_metadata = 11;

  // Next ID: 13
}
