// 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 libiamf_proto; import "obu_header.proto"; import "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 { optional uint32 audio_element_id = 1; reserved 2; // 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 { optional LayoutType layout_type = 1; reserved 2; 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; } message AnchorElement { optional AnchorType anchor_element = 1; optional int32 anchored_loudness = 2; } message AnchoredLoudness { optional uint32 num_anchored_loudness = 1; 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; } message LoudnessInfo { optional uint32 deprecated_info_type = 1 [deprecated = true]; repeated LoudnessInfoTypeBitMask info_type_bit_masks = 8 [packed = true]; optional int32 integrated_loudness = 2; optional int32 digital_peak = 3; optional int32 true_peak = 4; optional AnchoredLoudness anchored_loudness = 5; optional uint32 info_type_size = 6; optional bytes info_type_bytes = 7; } message MixPresentationLayout { optional Layout loudness_layout = 1; optional LoudnessInfo loudness = 2; } message MixPresentationSubMix { optional uint32 num_audio_elements = 1; repeated SubMixAudioElement audio_elements = 2; // Superseded by `output_mix_gain`. optional OutputMixConfig output_mix_config = 3 [deprecated = true]; optional MixGainParamDefinition output_mix_gain = 6; optional uint32 num_layouts = 4; repeated MixPresentationLayout layouts = 5; } message MixPresentationTag { optional string tag_name = 1; optional string tag_value = 2; } message MixPresentationTags { optional uint32 num_tags = 1; 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; optional uint32 num_sub_mixes = 3; repeated MixPresentationSubMix sub_mixes = 4; // When true, `mix_presentation_tags` will be examined. optional bool include_mix_presentation_tags = 11; optional MixPresentationTags mix_presentation_tags = 12; optional ObuHeaderMetadata obu_header = 8; }