Skip to content

Commit 9527c7b

Browse files
jwcullentdaede
authored andcommitted
Add "Test Set 7" which focuses on features enabled by Base-Enhanced profile.
- Update protos to allow a reserved profile (255). - Update protos to support `MixPresentationTags`. - Several tests use a mix Presentation which works under Base-Enhanced profile: - Using [3, 28] audio elements. - Using [19, 28] channels. - Using `MixPresentationTags` (should be gracefully ignored by older profiles). - Other tests signal the not-yet-defined profile 255. - `sine_1500_stereo_48khz_-15dBFS.wav`: A quiet sine wav. - Based on AOMediaCodec/iamf-tools@62bb73f2 - Based on Immersive_Audio_Container/[240729]IAMF_Ref_SW_V1.1_additional_TCs.xlsx from https://groups.aomedia.org/g/WG-Storage-and-Transport/message/884, but indexed at 0.
1 parent 177337c commit 9527c7b

81 files changed

Lines changed: 6398 additions & 22 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

proto/ia_sequence_header.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ enum ProfileVersion {
1919
PROFILE_VERSION_SIMPLE = 1;
2020
PROFILE_VERSION_BASE = 2;
2121
PROFILE_VERSION_BASE_ENHANCED = 3;
22+
PROFILE_VERSION_RESERVED_255 = 256;
2223
}
2324

2425
message IASequenceHeaderObuMetadata {

proto/mix_presentation.proto

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,16 @@ message MixPresentationSubMix {
170170
repeated MixPresentationLayout layouts = 5;
171171
}
172172

173+
message MixPresentationTag {
174+
optional string tag_name = 1;
175+
optional string tag_value = 2;
176+
}
177+
178+
message MixPresentationTags {
179+
optional uint32 num_tags = 1;
180+
repeated MixPresentationTag tags = 2;
181+
}
182+
173183
message MixPresentationObuMetadata {
174184
reserved 2;
175185
optional uint32 mix_presentation_id = 1;
@@ -188,5 +198,10 @@ message MixPresentationObuMetadata {
188198

189199
optional uint32 num_sub_mixes = 3;
190200
repeated MixPresentationSubMix sub_mixes = 4;
201+
202+
// When true, `mix_presentation_tags` will be examined.
203+
optional bool include_mix_presentation_tags = 11;
204+
optional MixPresentationTags mix_presentation_tags = 12;
205+
191206
optional ObuHeaderMetadata obu_header = 8;
192207
}

tests/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ Title | Summary
6363
`sine_1000_48kHz_512ms.wav` | Sine wave. | 2 | 48kHz | pcm_s16le | 512ms
6464
`sine_1000_48kHz.wav` | Sine wave. | 2 | 48kHz | pcm_s16le | 500ms
6565
`sine_1000_4oa_48kHz.wav` | Sine wave using fourth-order ambisonics. | 25 | 48kHz | pcm_s16le | 5000ms
66+
`sine_1500_stereo_48khz_-15dBFS.wav` | Sine wave using at -15dBFS. | 2 | 48kHz | pcm_s16le | 5000ms
6667
`stereo_8_samples_48khz_s16le.wav` | Tiny test file. The first channel encodes 1, 2, ... 8. The second channel encodes 65535, 65534, ... 65528. | 2 | 48kHz | pcm_s16le | 8 samples
6768
`stereo_8_samples_48khz_s24le.wav` | Tiny test file. The first channel encodes 1, 2, ... 8. The second channel encodes 16777216, 16777215, ... 16777209. | 2 | 48kHz | pcm_s24le | 8 samples
6869
`Transport_TOA_5s.wav` | Short clip of vehicles driving by using third-order ambisonics. | 16 | 48kHz | pcm_s16le | 5s

tests/coverage.csv

Lines changed: 27 additions & 22 deletions
Large diffs are not rendered by default.
469 KB
Binary file not shown.
938 KB
Binary file not shown.
3.66 MB
Binary file not shown.

tests/test_000700.iamf

12.9 MB
Binary file not shown.

tests/test_000700.textproto

Lines changed: 260 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,260 @@
1+
# Copyright (c) 2024, Alliance for Open Media. All rights reserved
2+
#
3+
# This source code is subject to the terms of the BSD 3-Clause Clear License
4+
# and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear
5+
# License was not distributed with this source code in the LICENSE file, you
6+
# can obtain it at www.aomedia.org/license/software-license/bsd-3-c-c. If the
7+
# Alliance for Open Media Patent License 1.0 was not distributed with this
8+
# source code in the PATENTS file, you can obtain it at
9+
# www.aomedia.org/license/patent.
10+
11+
# proto-file: third_party/iamf_tools/iamf/cli/proto/user_metadata.proto
12+
# proto-message: UserMetadata
13+
14+
test_vector_metadata {
15+
human_readable_description:
16+
"An example using the maximum number of channels for Base-Enhanced "
17+
"profile. It has three audio elements {fourth-order mono ambisonics, LFE, "
18+
"Stereo} and a 7.1.4 output layout."
19+
file_name_prefix: "test_000700"
20+
is_valid: true
21+
is_valid_to_decode: true
22+
validate_user_loudness: true
23+
mp4_fixed_timestamp: "2024-08-14 00:00:00"
24+
test_repository_tags: ["github/aomediacodec/libiamf/main"]
25+
primary_tested_spec_sections: [
26+
"3.6.2/loudspeaker_layout == Expanded",
27+
"3.6.2/loudspeaker_layout == Stereo",
28+
"3.6.2/expanded_loudspeaker_layout == LFE",
29+
"3.6.3/ambisonics_mono_config",
30+
"3.7.3/sound_system == 7.1.4",
31+
"3.7.4/default_mix_gain",
32+
"4.2/Base-Enhanced Profile",
33+
"8.5.1/Loudness Information"
34+
]
35+
base_test: "test_000617"
36+
}
37+
38+
ia_sequence_header_metadata {
39+
primary_profile: PROFILE_VERSION_BASE_ENHANCED
40+
additional_profile: PROFILE_VERSION_BASE_ENHANCED
41+
}
42+
43+
codec_config_metadata {
44+
codec_config_id: 200
45+
codec_config {
46+
codec_id: CODEC_ID_LPCM
47+
num_samples_per_frame: 1024
48+
audio_roll_distance: 0
49+
decoder_config_lpcm {
50+
sample_format_flags: LPCM_LITTLE_ENDIAN
51+
sample_size: 16
52+
sample_rate: 48000
53+
}
54+
}
55+
}
56+
57+
audio_element_metadata: [
58+
{
59+
audio_element_id: 300
60+
audio_element_type: AUDIO_ELEMENT_SCENE_BASED
61+
reserved: 0
62+
codec_config_id: 200
63+
num_substreams: 25
64+
audio_substream_ids: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
65+
num_parameters: 0
66+
ambisonics_config {
67+
ambisonics_mode: AMBISONICS_MODE_MONO
68+
ambisonics_mono_config {
69+
output_channel_count: 25
70+
substream_count: 25
71+
channel_mapping: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
72+
}
73+
}
74+
},
75+
{
76+
audio_element_id: 301
77+
audio_element_type: AUDIO_ELEMENT_CHANNEL_BASED
78+
reserved: 0
79+
codec_config_id: 200
80+
num_substreams: 1
81+
audio_substream_ids: [25]
82+
num_parameters: 0
83+
scalable_channel_layout_config {
84+
num_layers: 1
85+
reserved: 0
86+
channel_audio_layer_configs: [
87+
{
88+
loudspeaker_layout: LOUDSPEAKER_LAYOUT_EXPANDED
89+
output_gain_is_present_flag: 0
90+
recon_gain_is_present_flag: 0
91+
reserved_a: 0
92+
substream_count: 1
93+
coupled_substream_count: 0
94+
expanded_loudspeaker_layout: EXPANDED_LOUDSPEAKER_LAYOUT_LFE
95+
}
96+
]
97+
}
98+
},
99+
{
100+
audio_element_id: 302
101+
audio_element_type: AUDIO_ELEMENT_CHANNEL_BASED
102+
reserved: 0
103+
codec_config_id: 200
104+
num_substreams: 1
105+
audio_substream_ids: [26]
106+
num_parameters: 0
107+
scalable_channel_layout_config {
108+
num_layers: 1
109+
reserved: 0
110+
channel_audio_layer_configs: [
111+
{
112+
loudspeaker_layout: LOUDSPEAKER_LAYOUT_STEREO
113+
output_gain_is_present_flag: 0
114+
recon_gain_is_present_flag: 0
115+
reserved_a: 0
116+
substream_count: 1
117+
coupled_substream_count: 1
118+
}
119+
]
120+
}
121+
}
122+
]
123+
124+
mix_presentation_metadata {
125+
mix_presentation_id: 42
126+
count_label: 1
127+
annotations_language: ["en-us"]
128+
localized_presentation_annotations: ["test_mix_pres"]
129+
num_sub_mixes: 1
130+
sub_mixes {
131+
num_audio_elements: 3
132+
audio_elements: [
133+
{
134+
audio_element_id: 300
135+
localized_element_annotations: ["test_sub_mix_0_audio_element_0"]
136+
rendering_config {
137+
headphones_rendering_mode: HEADPHONES_RENDERING_MODE_STEREO
138+
}
139+
element_mix_config {
140+
mix_gain {
141+
param_definition {
142+
parameter_id: 999 # Non-existent; default will be used
143+
parameter_rate: 48000
144+
param_definition_mode: 1
145+
reserved: 0
146+
}
147+
default_mix_gain: -768
148+
}
149+
}
150+
},
151+
{
152+
audio_element_id: 301
153+
localized_element_annotations: ["test_sub_mix_0_audio_element_1"]
154+
rendering_config {
155+
headphones_rendering_mode: HEADPHONES_RENDERING_MODE_STEREO
156+
}
157+
element_mix_config {
158+
mix_gain {
159+
param_definition {
160+
parameter_id: 998 # Non-existent; default will be used
161+
parameter_rate: 48000
162+
param_definition_mode: 1
163+
reserved: 0
164+
}
165+
default_mix_gain: -768
166+
}
167+
}
168+
},
169+
{
170+
audio_element_id: 302
171+
localized_element_annotations: ["test_sub_mix_0_audio_element_2"]
172+
rendering_config {
173+
headphones_rendering_mode: HEADPHONES_RENDERING_MODE_STEREO
174+
}
175+
element_mix_config {
176+
mix_gain {
177+
param_definition {
178+
parameter_id: 998 # Non-existent; default will be used
179+
parameter_rate: 48000
180+
param_definition_mode: 1
181+
reserved: 0
182+
}
183+
default_mix_gain: -768
184+
}
185+
}
186+
}
187+
]
188+
output_mix_config {
189+
output_mix_gain {
190+
param_definition {
191+
parameter_id: 997 # Non-existent; default will be used
192+
parameter_rate: 48000
193+
param_definition_mode: 1
194+
reserved: 0
195+
}
196+
default_mix_gain: 0
197+
}
198+
}
199+
num_layouts: 2
200+
layouts {
201+
loudness_layout {
202+
layout_type: LAYOUT_TYPE_LOUDSPEAKERS_SS_CONVENTION
203+
ss_layout {
204+
sound_system: SOUND_SYSTEM_A_0_2_0
205+
reserved: 0
206+
}
207+
}
208+
loudness {
209+
info_type_bit_masks: []
210+
integrated_loudness: -4273
211+
digital_peak: -1765
212+
}
213+
}
214+
layouts {
215+
loudness_layout {
216+
layout_type: LAYOUT_TYPE_LOUDSPEAKERS_SS_CONVENTION
217+
ss_layout {
218+
sound_system: SOUND_SYSTEM_J_4_7_0
219+
reserved: 0
220+
}
221+
}
222+
loudness {
223+
info_type_bit_masks: []
224+
integrated_loudness: -5997
225+
digital_peak: -2459
226+
}
227+
}
228+
}
229+
}
230+
231+
audio_frame_metadata: [
232+
{
233+
wav_filename: "sine_1000_4oa_48khz.wav"
234+
samples_to_trim_at_end: 640
235+
samples_to_trim_at_start: 0
236+
audio_element_id: 300
237+
channel_ids: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
238+
channel_labels: ["A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12", "A13", "A14", "A15", "A16", "A17", "A18", "A19", "A20", "A21", "A22", "A23", "A24"]
239+
},
240+
{
241+
wav_filename: "Mechanism_5s.wav"
242+
samples_to_trim_at_end: 640
243+
samples_to_trim_at_start: 0
244+
audio_element_id: 301
245+
channel_ids: [3]
246+
channel_labels: ["LFE"]
247+
},
248+
{
249+
wav_filename: "dialog_clip_stereo.wav"
250+
samples_to_trim_at_end: 640
251+
samples_to_trim_at_start: 0
252+
audio_element_id: 302
253+
channel_ids: [0, 1]
254+
channel_labels: ["L2", "R2"]
255+
}
256+
]
257+
258+
temporal_delimiter_metadata {
259+
enable_temporal_delimiters: false
260+
}

tests/test_000700_f.mp4

12.9 MB
Binary file not shown.

0 commit comments

Comments
 (0)