Skip to content

Commit

Permalink
Add "Test Set 7" which focuses on features enabled by Base-Enhanced p…
Browse files Browse the repository at this point in the history
…rofile.

  - 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.
  • Loading branch information
jwcullen committed Aug 16, 2024
1 parent 0471b3b commit f6c1a1a
Show file tree
Hide file tree
Showing 81 changed files with 6,398 additions and 22 deletions.
1 change: 1 addition & 0 deletions proto/ia_sequence_header.proto
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ enum ProfileVersion {
PROFILE_VERSION_SIMPLE = 1;
PROFILE_VERSION_BASE = 2;
PROFILE_VERSION_BASE_ENHANCED = 3;
PROFILE_VERSION_RESERVED_255 = 256;
}

message IASequenceHeaderObuMetadata {
Expand Down
15 changes: 15 additions & 0 deletions proto/mix_presentation.proto
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,16 @@ message MixPresentationSubMix {
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;
Expand All @@ -188,5 +198,10 @@ message MixPresentationObuMetadata {

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;
}
1 change: 1 addition & 0 deletions tests/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ Title | Summary
`sine_1000_48kHz_512ms.wav` | Sine wave. | 2 | 48kHz | pcm_s16le | 512ms
`sine_1000_48kHz.wav` | Sine wave. | 2 | 48kHz | pcm_s16le | 500ms
`sine_1000_4oa_48kHz.wav` | Sine wave using fourth-order ambisonics. | 25 | 48kHz | pcm_s16le | 5000ms
`sine_1500_stereo_48khz_-15dBFS.wav` | Sine wave using at -15dBFS. | 2 | 48kHz | pcm_s16le | 5000ms
`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
`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
`Transport_TOA_5s.wav` | Short clip of vehicles driving by using third-order ambisonics. | 16 | 48kHz | pcm_s16le | 5s
Expand Down
49 changes: 27 additions & 22 deletions tests/coverage.csv

Large diffs are not rendered by default.

Binary file added tests/sine_1500_stereo_48khz_-15dBFS.wav
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added tests/test_000700.iamf
Binary file not shown.
260 changes: 260 additions & 0 deletions tests/test_000700.textproto
Original file line number Diff line number Diff line change
@@ -0,0 +1,260 @@
# Copyright (c) 2024, 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.

# proto-file: third_party/iamf_tools/iamf/cli/proto/user_metadata.proto
# proto-message: UserMetadata

test_vector_metadata {
human_readable_description:
"An example using the maximum number of channels for Base-Enhanced "
"profile. It has three audio elements {fourth-order mono ambisonics, LFE, "
"Stereo} and a 7.1.4 output layout."
file_name_prefix: "test_000700"
is_valid: true
is_valid_to_decode: true
validate_user_loudness: true
mp4_fixed_timestamp: "2024-08-14 00:00:00"
test_repository_tags: ["github/aomediacodec/libiamf/main"]
primary_tested_spec_sections: [
"3.6.2/loudspeaker_layout == Expanded",
"3.6.2/loudspeaker_layout == Stereo",
"3.6.2/expanded_loudspeaker_layout == LFE",
"3.6.3/ambisonics_mono_config",
"3.7.3/sound_system == 7.1.4",
"3.7.4/default_mix_gain",
"4.2/Base-Enhanced Profile",
"8.5.1/Loudness Information"
]
base_test: "test_000617"
}

ia_sequence_header_metadata {
primary_profile: PROFILE_VERSION_BASE_ENHANCED
additional_profile: PROFILE_VERSION_BASE_ENHANCED
}

codec_config_metadata {
codec_config_id: 200
codec_config {
codec_id: CODEC_ID_LPCM
num_samples_per_frame: 1024
audio_roll_distance: 0
decoder_config_lpcm {
sample_format_flags: LPCM_LITTLE_ENDIAN
sample_size: 16
sample_rate: 48000
}
}
}

audio_element_metadata: [
{
audio_element_id: 300
audio_element_type: AUDIO_ELEMENT_SCENE_BASED
reserved: 0
codec_config_id: 200
num_substreams: 25
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]
num_parameters: 0
ambisonics_config {
ambisonics_mode: AMBISONICS_MODE_MONO
ambisonics_mono_config {
output_channel_count: 25
substream_count: 25
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]
}
}
},
{
audio_element_id: 301
audio_element_type: AUDIO_ELEMENT_CHANNEL_BASED
reserved: 0
codec_config_id: 200
num_substreams: 1
audio_substream_ids: [25]
num_parameters: 0
scalable_channel_layout_config {
num_layers: 1
reserved: 0
channel_audio_layer_configs: [
{
loudspeaker_layout: LOUDSPEAKER_LAYOUT_EXPANDED
output_gain_is_present_flag: 0
recon_gain_is_present_flag: 0
reserved_a: 0
substream_count: 1
coupled_substream_count: 0
expanded_loudspeaker_layout: EXPANDED_LOUDSPEAKER_LAYOUT_LFE
}
]
}
},
{
audio_element_id: 302
audio_element_type: AUDIO_ELEMENT_CHANNEL_BASED
reserved: 0
codec_config_id: 200
num_substreams: 1
audio_substream_ids: [26]
num_parameters: 0
scalable_channel_layout_config {
num_layers: 1
reserved: 0
channel_audio_layer_configs: [
{
loudspeaker_layout: LOUDSPEAKER_LAYOUT_STEREO
output_gain_is_present_flag: 0
recon_gain_is_present_flag: 0
reserved_a: 0
substream_count: 1
coupled_substream_count: 1
}
]
}
}
]

mix_presentation_metadata {
mix_presentation_id: 42
count_label: 1
annotations_language: ["en-us"]
localized_presentation_annotations: ["test_mix_pres"]
num_sub_mixes: 1
sub_mixes {
num_audio_elements: 3
audio_elements: [
{
audio_element_id: 300
localized_element_annotations: ["test_sub_mix_0_audio_element_0"]
rendering_config {
headphones_rendering_mode: HEADPHONES_RENDERING_MODE_STEREO
}
element_mix_config {
mix_gain {
param_definition {
parameter_id: 999 # Non-existent; default will be used
parameter_rate: 48000
param_definition_mode: 1
reserved: 0
}
default_mix_gain: -768
}
}
},
{
audio_element_id: 301
localized_element_annotations: ["test_sub_mix_0_audio_element_1"]
rendering_config {
headphones_rendering_mode: HEADPHONES_RENDERING_MODE_STEREO
}
element_mix_config {
mix_gain {
param_definition {
parameter_id: 998 # Non-existent; default will be used
parameter_rate: 48000
param_definition_mode: 1
reserved: 0
}
default_mix_gain: -768
}
}
},
{
audio_element_id: 302
localized_element_annotations: ["test_sub_mix_0_audio_element_2"]
rendering_config {
headphones_rendering_mode: HEADPHONES_RENDERING_MODE_STEREO
}
element_mix_config {
mix_gain {
param_definition {
parameter_id: 998 # Non-existent; default will be used
parameter_rate: 48000
param_definition_mode: 1
reserved: 0
}
default_mix_gain: -768
}
}
}
]
output_mix_config {
output_mix_gain {
param_definition {
parameter_id: 997 # Non-existent; default will be used
parameter_rate: 48000
param_definition_mode: 1
reserved: 0
}
default_mix_gain: 0
}
}
num_layouts: 2
layouts {
loudness_layout {
layout_type: LAYOUT_TYPE_LOUDSPEAKERS_SS_CONVENTION
ss_layout {
sound_system: SOUND_SYSTEM_A_0_2_0
reserved: 0
}
}
loudness {
info_type_bit_masks: []
integrated_loudness: -4273
digital_peak: -1765
}
}
layouts {
loudness_layout {
layout_type: LAYOUT_TYPE_LOUDSPEAKERS_SS_CONVENTION
ss_layout {
sound_system: SOUND_SYSTEM_J_4_7_0
reserved: 0
}
}
loudness {
info_type_bit_masks: []
integrated_loudness: -5997
digital_peak: -2459
}
}
}
}

audio_frame_metadata: [
{
wav_filename: "sine_1000_4oa_48khz.wav"
samples_to_trim_at_end: 640
samples_to_trim_at_start: 0
audio_element_id: 300
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]
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"]
},
{
wav_filename: "Mechanism_5s.wav"
samples_to_trim_at_end: 640
samples_to_trim_at_start: 0
audio_element_id: 301
channel_ids: [3]
channel_labels: ["LFE"]
},
{
wav_filename: "dialog_clip_stereo.wav"
samples_to_trim_at_end: 640
samples_to_trim_at_start: 0
audio_element_id: 302
channel_ids: [0, 1]
channel_labels: ["L2", "R2"]
}
]

temporal_delimiter_metadata {
enable_temporal_delimiters: false
}
Binary file added tests/test_000700_f.mp4
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added tests/test_000700_s.mp4
Binary file not shown.
Binary file added tests/test_000701.iamf
Binary file not shown.
Loading

0 comments on commit f6c1a1a

Please sign in to comment.