88// source code in the PATENTS file, you can obtain it at
99// www.aomedia.org/license/patent.
1010
11- syntax = "proto2 " ;
11+ edition = "2023 ";
1212
1313package libiamf_proto ;
1414
1515import "obu_header.proto" ;
1616import "param_definitions.proto" ;
1717
18+ option features.enum_type = CLOSED ;
19+
1820enum AudioElementType {
1921 AUDIO_ELEMENT_INVALID = 0 ;
2022 AUDIO_ELEMENT_CHANNEL_BASED = 1 ;
2123 AUDIO_ELEMENT_SCENE_BASED = 2 ;
24+ AUDIO_ELEMENT_OBJECT_BASED = 3 ;
2225}
2326
2427message ParamDefinitionExtension {
25- optional uint32 param_definition_size = 1 ;
26- optional bytes param_definition_bytes = 2 ;
28+ // `param_definition_size` is ignored. The value in the bitstream is inferred
29+ // based on the size of `param_definition_bytes`.
30+ uint32 param_definition_size = 1 [deprecated = true ];
31+ bytes param_definition_bytes = 2 ;
2732}
2833
2934message AudioElementParam {
30- optional uint32 deprecated_param_definition_type = 1 [deprecated = true ];
31- optional ParamDefinitionType param_definition_type = 5 ;
35+ uint32 deprecated_param_definition_type = 1 [deprecated = true ];
36+
37+ ParamDefinitionType param_definition_type = 5 ;
38+
3239 oneof param_definition {
3340 DemixingParamDefinition demixing_param = 2 ;
3441 ReconGainParamDefinition recon_gain_param = 3 ;
3542 ParamDefinitionExtension param_definition_extension = 4 ;
3643 }
44+
45+ // Next ID: 6
3746}
3847
3948// Valid proto enums start at index 1, which are different from the
@@ -70,27 +79,36 @@ enum ExpandedLoudspeakerLayout {
7079 EXPANDED_LOUDSPEAKER_LAYOUT_STEREO_SI = 11 ;
7180 EXPANDED_LOUDSPEAKER_LAYOUT_STEREO_TP_SI = 12 ;
7281 EXPANDED_LOUDSPEAKER_LAYOUT_TOP_6_CH = 13 ;
73- EXPANDED_LOUDSPEAKER_LAYOUT_RESERVED_13 = 14 ;
82+ EXPANDED_LOUDSPEAKER_LAYOUT_10_2_9_3_CH = 14 ;
83+ EXPANDED_LOUDSPEAKER_LAYOUT_LFE_PAIR = 15 ;
84+ EXPANDED_LOUDSPEAKER_LAYOUT_BOTTOM_3_CH = 16 ;
85+ EXPANDED_LOUDSPEAKER_LAYOUT_7_1_5_4_CH = 17 ;
86+ EXPANDED_LOUDSPEAKER_LAYOUT_BOTTOM_4_CH = 18 ;
87+ EXPANDED_LOUDSPEAKER_LAYOUT_TOP_1_CH = 19 ;
88+ EXPANDED_LOUDSPEAKER_LAYOUT_TOP_5_CH = 20 ;
7489 EXPANDED_LOUDSPEAKER_LAYOUT_RESERVED_255 = 256 ;
7590}
7691
7792message ChannelAudioLayerConfig {
78- optional uint32 deprecated_loudspeaker_layout = 1 [deprecated = true ];
79- optional LoudspeakerLayout loudspeaker_layout = 10 ;
80- optional uint32 output_gain_is_present_flag = 2 ;
81- optional uint32 recon_gain_is_present_flag = 3 ;
82- optional uint32 reserved_a = 4 ;
83- optional uint32 substream_count = 5 ;
84- optional uint32 coupled_substream_count = 6 ;
85- optional uint32 output_gain_flag = 7 ;
86- optional uint32 reserved_b = 8 ;
87- optional int32 output_gain = 9 ;
88- optional ExpandedLoudspeakerLayout expanded_loudspeaker_layout = 11 ;
93+ uint32 deprecated_loudspeaker_layout = 1 [deprecated = true ];
94+
95+ LoudspeakerLayout loudspeaker_layout = 10 ;
96+ uint32 output_gain_is_present_flag = 2 ;
97+ uint32 recon_gain_is_present_flag = 3 ;
98+ uint32 reserved_a = 4 ;
99+ uint32 substream_count = 5 ;
100+ uint32 coupled_substream_count = 6 ;
101+ uint32 output_gain_flag = 7 ;
102+ uint32 reserved_b = 8 ;
103+ int32 output_gain = 9 ;
104+ ExpandedLoudspeakerLayout expanded_loudspeaker_layout = 11 ;
89105}
90106
91107message ScalableChannelLayoutConfig {
92- optional uint32 num_layers = 1 ;
93- optional uint32 reserved = 2 ;
108+ // `num_layers` is ignored. The value in the bitstream is inferred based on
109+ // the number of `channel_audio_layer_configs`.
110+ uint32 num_layers = 1 [deprecated = true ];
111+ uint32 reserved = 2 ;
94112 repeated ChannelAudioLayerConfig channel_audio_layer_configs = 3 ;
95113}
96114
@@ -101,44 +119,59 @@ enum AmbisonicsMode {
101119}
102120
103121message AmbisonicsMonoConfig {
104- optional uint32 output_channel_count = 1 ;
105- optional uint32 substream_count = 2 ;
106- repeated uint32 channel_mapping = 3 [ packed = true ] ;
122+ uint32 output_channel_count = 1 ;
123+ uint32 substream_count = 2 ;
124+ repeated uint32 channel_mapping = 3 ;
107125}
108126
109127message AmbisonicsProjectionConfig {
110- optional uint32 output_channel_count = 1 ;
111- optional uint32 substream_count = 2 ;
112- optional uint32 coupled_substream_count = 3 ;
113- repeated int32 demixing_matrix = 4 [ packed = true ] ;
128+ uint32 output_channel_count = 1 ;
129+ uint32 substream_count = 2 ;
130+ uint32 coupled_substream_count = 3 ;
131+ repeated int32 demixing_matrix = 4 ;
114132}
115133
116134message AmbisonicsConfig {
117- optional AmbisonicsMode ambisonics_mode = 1 ;
135+ AmbisonicsMode ambisonics_mode = 1 ;
136+
118137 oneof ambisonics_config {
119138 AmbisonicsMonoConfig ambisonics_mono_config = 2 ;
120139 AmbisonicsProjectionConfig ambisonics_projection_config = 3 ;
121140 }
122141}
123142
143+ message ObjectsConfig {
144+ uint32 num_objects = 1 ;
145+ bytes objects_config_extension_bytes = 2 ;
146+ }
147+
124148message AudioElementConfigExtension {
125- optional uint32 audio_element_config_size = 1 ;
126- optional bytes audio_element_config_bytes = 2 ;
149+ // `audio_element_config_size` is ignored. The value in the bitstream is
150+ // inferred based on the size of `audio_element_config_bytes`.
151+ uint32 audio_element_config_size = 1 [deprecated = true ];
152+ bytes audio_element_config_bytes = 2 ;
127153}
128154
129155message AudioElementObuMetadata {
130- optional uint32 audio_element_id = 1 ;
131- optional AudioElementType audio_element_type = 2 ;
132- optional uint32 reserved = 3 ;
133- optional uint32 codec_config_id = 4 ;
134- optional uint32 num_substreams = 5 ;
135- repeated uint32 audio_substream_ids = 6 [packed = true ];
136- optional uint32 num_parameters = 7 ;
156+ uint32 audio_element_id = 1 ;
157+ AudioElementType audio_element_type = 2 ;
158+ uint32 reserved = 3 ;
159+ uint32 codec_config_id = 4 ;
160+ // `num_substreams` is ignored. The value in the bitstream is inferred based
161+ // on the number of `audio_substream_ids`.
162+ uint32 num_substreams = 5 [deprecated = true ];
163+ repeated uint32 audio_substream_ids = 6 ;
164+ // `num_parameters` is ignored. The value in the bitstream is inferred based
165+ // on the number of `audio_element_params`.
166+ uint32 num_parameters = 7 [deprecated = true ];
137167 repeated AudioElementParam audio_element_params = 8 ;
168+
138169 oneof config {
139170 ScalableChannelLayoutConfig scalable_channel_layout_config = 9 ;
140171 AmbisonicsConfig ambisonics_config = 10 ;
141172 AudioElementConfigExtension audio_element_config_extension = 11 ;
173+ ObjectsConfig objects_config = 13 ;
142174 }
143- optional ObuHeaderMetadata obu_header = 12 ;
175+
176+ ObuHeaderMetadata obu_header = 12 ;
144177}
0 commit comments