| // 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. |
| |
| syntax = "proto2"; |
| |
| package iamf_tools_cli_proto; |
| |
| import "iamf/cli/proto/obu_header.proto"; |
| import "iamf/cli/proto/param_definitions.proto"; |
| |
| message MixPresentationAnnotations { |
| option deprecated = true; |
| |
| optional string mix_presentation_friendly_label = 1; |
| } |
| |
| message MixPresentationElementAnnotations { |
| option deprecated = true; |
| |
| optional string audio_element_friendly_label = 1; |
| } |
| |
| message ElementMixConfig { |
| option deprecated = true; |
| |
| optional MixGainParamDefinition mix_gain = 1; |
| } |
| |
| enum HeadPhonesRenderingMode { |
| HEADPHONES_RENDERING_MODE_INVALID = 0; |
| HEADPHONES_RENDERING_MODE_STEREO = 1; |
| HEADPHONES_RENDERING_MODE_BINAURAL = 2; |
| HEADPHONES_RENDERING_MODE_RESERVED_2 = 3; |
| HEADPHONES_RENDERING_MODE_RESERVED_3 = 4; |
| } |
| |
| message RenderingConfig { |
| optional HeadPhonesRenderingMode headphones_rendering_mode = 1; |
| optional uint32 reserved = 2; |
| optional uint32 rendering_config_extension_size = 3; |
| optional bytes rendering_config_extension_bytes = 4; |
| } |
| |
| message SubMixAudioElement { |
| reserved 2; |
| |
| optional uint32 audio_element_id = 1; |
| // Superseded by `localized_element_annotations`. |
| repeated MixPresentationElementAnnotations |
| mix_presentation_element_annotations_array = 4 [deprecated = true]; |
| // Length should be equal to `count_label` in the OBU. |
| repeated string localized_element_annotations = 6; |
| |
| optional RenderingConfig rendering_config = 5; |
| // Superseded by `element_mix_gain`. |
| optional ElementMixConfig element_mix_config = 3 [deprecated = true]; |
| optional MixGainParamDefinition element_mix_gain = 7; |
| } |
| |
| message OutputMixConfig { |
| option deprecated = true; |
| |
| optional MixGainParamDefinition output_mix_gain = 1; |
| } |
| |
| enum SoundSystem { |
| SOUND_SYSTEM_INVALID = 0; |
| SOUND_SYSTEM_A_0_2_0 = 1; |
| SOUND_SYSTEM_B_0_5_0 = 2; |
| SOUND_SYSTEM_C_2_5_0 = 3; |
| SOUND_SYSTEM_D_4_5_0 = 4; |
| SOUND_SYSTEM_E_4_5_1 = 5; |
| SOUND_SYSTEM_F_3_7_0 = 6; |
| SOUND_SYSTEM_G_4_9_0 = 7; |
| SOUND_SYSTEM_H_9_10_3 = 8; |
| SOUND_SYSTEM_I_0_7_0 = 9; |
| SOUND_SYSTEM_J_4_7_0 = 10; |
| SOUND_SYSTEM_10_2_7_0 = 11; |
| SOUND_SYSTEM_11_2_3_0 = 12; |
| SOUND_SYSTEM_12_0_1_0 = 13; |
| SOUND_SYSTEM_13_6_9_0 = 14; |
| } |
| |
| message LoudspeakersSsConventionLayout { |
| optional SoundSystem sound_system = 1; |
| optional uint32 reserved = 2; |
| } |
| |
| message LoudspeakersReservedOrBinauralLayout { |
| optional uint32 reserved = 1; |
| } |
| |
| enum LayoutType { |
| LAYOUT_TYPE_INVALID = 0; |
| LAYOUT_TYPE_RESERVED_0 = 1; |
| LAYOUT_TYPE_RESERVED_1 = 2; |
| LAYOUT_TYPE_LOUDSPEAKERS_SS_CONVENTION = 3; |
| LAYOUT_TYPE_BINAURAL = 4; |
| } |
| |
| message Layout { |
| reserved 2; |
| |
| optional LayoutType layout_type = 1; |
| oneof specific_layout { |
| LoudspeakersSsConventionLayout ss_layout = 3; |
| LoudspeakersReservedOrBinauralLayout reserved_or_binaural_layout = 4; |
| } |
| } |
| |
| enum AnchorType { |
| ANCHOR_TYPE_INVALID = 0; |
| ANCHOR_TYPE_UNKNOWN = 1; |
| ANCHOR_TYPE_DIALOGUE = 2; |
| ANCHOR_TYPE_ALBUM = 3; |
| } |
| |
| // Values are represented to align with the IAMF spec. |
| // |
| // See |
| // https://aomediacodec.github.io/iamf/v1.1.0.html#obu-mixpresentation-loudness |
| // for further details. |
| // |
| // See detailed examples on Q7.8 format below in `LoudnessInfo`. |
| message AnchorElement { |
| optional AnchorType anchor_element = 1; |
| optional int32 anchored_loudness = 2; // Q7.8. |
| } |
| |
| message AnchoredLoudness { |
| // `num_anchored_loudness` is ignored. The value in the bitstream is inferred |
| // based on the number of `anchor_elements`. |
| optional uint32 num_anchored_loudness = 1 [deprecated = true]; |
| repeated AnchorElement anchor_elements = 2; |
| } |
| |
| enum LoudnessInfoTypeBitMask { |
| LOUDNESS_INFO_TYPE_INVALID = 0; |
| LOUDNESS_INFO_TYPE_TRUE_PEAK = 1; |
| LOUDNESS_INFO_TYPE_ANCHORED_LOUDNESS = 2; |
| LOUDNESS_INFO_TYPE_RESERVED_4 = 4; |
| LOUDNESS_INFO_TYPE_RESERVED_8 = 8; |
| LOUDNESS_INFO_TYPE_RESERVED_16 = 16; |
| LOUDNESS_INFO_TYPE_RESERVED_32 = 32; |
| LOUDNESS_INFO_TYPE_RESERVED_64 = 64; |
| LOUDNESS_INFO_TYPE_RESERVED_128 = 128; |
| } |
| |
| // Values are represented to align with the IAMF spec. |
| // |
| // See |
| // https://aomediacodec.github.io/iamf/v1.1.0.html#obu-mixpresentation-loudness |
| // for further details. |
| // |
| // To convert from dB to Q7.8, multiply by 256. Example: |
| // - For -3 dB, set the proto value to 256 * -3 = -768. |
| // - For +6 dB, set the proto value to 256 * 6 = 1536. |
| message LoudnessInfo { |
| optional uint32 deprecated_info_type = 1 [deprecated = true]; |
| repeated LoudnessInfoTypeBitMask info_type_bit_masks = 8 [packed = true]; |
| optional int32 integrated_loudness = 2; // Q7.8. |
| optional int32 digital_peak = 3; // Q7.8. |
| optional int32 true_peak = 4; // Q7.8. |
| optional AnchoredLoudness anchored_loudness = 5; |
| optional uint32 info_type_size = 6; |
| optional bytes info_type_bytes = 7; |
| |
| // Next ID: 9 |
| } |
| |
| message MixPresentationLayout { |
| optional Layout loudness_layout = 1; |
| optional LoudnessInfo loudness = 2; |
| } |
| |
| message MixPresentationSubMix { |
| // `num_audio_elements` is ignored. The value in the bitstream is inferred |
| // based on the number of `audio_elements`. |
| optional uint32 num_audio_elements = 1 [deprecated = true]; |
| repeated SubMixAudioElement audio_elements = 2; |
| |
| // Superseded by `output_mix_gain`. |
| optional OutputMixConfig output_mix_config = 3 [deprecated = true]; |
| optional MixGainParamDefinition output_mix_gain = 6; |
| |
| // `num_layouts` is ignored. The value in the bitstream is inferred |
| // based on the number of `layouts`. |
| optional uint32 num_layouts = 4 [deprecated = true]; |
| repeated MixPresentationLayout layouts = 5; |
| |
| // Next ID: 7 |
| } |
| |
| message MixPresentationTag { |
| optional string tag_name = 1; |
| optional string tag_value = 2; |
| } |
| |
| message MixPresentationTags { |
| // `num_tags` is ignored. The value in the bitstream is inferred based on the |
| // number of tags. |
| optional uint32 num_tags = 1 [deprecated = true]; |
| repeated MixPresentationTag tags = 2; |
| } |
| |
| message MixPresentationObuMetadata { |
| reserved 2; |
| |
| optional uint32 mix_presentation_id = 1; |
| optional uint32 count_label = 5; |
| |
| // Superseded by `annotations_language`. |
| repeated string language_labels = 6 [deprecated = true]; |
| // Length should be equal to `count_label`. |
| repeated string annotations_language = 9; |
| |
| // Superseded by `localized_presentation_annotations`. |
| repeated MixPresentationAnnotations mix_presentation_annotations_array = 7 |
| [deprecated = true]; |
| // Length should be equal to `count_label`. |
| repeated string localized_presentation_annotations = 10; |
| |
| // `num_sub_mixes` is ignored. The value in the bitstream is inferred |
| // based on the number of `sub_mixes`. |
| optional uint32 num_sub_mixes = 3 [deprecated = true]; |
| repeated MixPresentationSubMix sub_mixes = 4; |
| |
| // When false [default]: The encoder will ignore the below |
| // `mix_presentation_tags`. Beware that other features |
| // may still result in additional non-user specified |
| // tags. To stricly encode a file without any tags, set |
| // both `include_mix_presentation_tags` and |
| // `EncoderControlMetadata.add_build_information_tag` |
| // fields to false. |
| // When true: The encoder will use the `mix_presentation_tags` field. |
| optional bool include_mix_presentation_tags = 11; |
| optional MixPresentationTags mix_presentation_tags = 12; |
| |
| optional ObuHeaderMetadata obu_header = 8; |
| |
| // Next ID: 13 |
| } |