Skip to content

Commit

Permalink
Add some test vectors that exercise channel limit per profile.
Browse files Browse the repository at this point in the history
  - `test_000123`: Has a mix which is suitable for Base profile, and another mix where the audio elements individually would be valid in Base profile, but when combined they surpass the channel limit.
  - `test_000132`: Has a mix which is suitable for Simple profile, and another mix which uses a fourth-order ambisonics audio element which never is valid in Simple profile.

PiperOrigin-RevId: 653425256
  • Loading branch information
jwcullen committed Jul 18, 2024
1 parent 972545f commit 33d66b1
Show file tree
Hide file tree
Showing 4 changed files with 602 additions and 0 deletions.
1 change: 1 addition & 0 deletions iamf/cli/testdata/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ Title | Summary
`sine_1000_16khz_512ms_s32le.wav` | Sine wave. | 1 | 16kHz | pcm_s32le | 512ms
`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
`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
Binary file added iamf/cli/testdata/sine_1000_4oa_48khz.wav
Binary file not shown.
307 changes: 307 additions & 0 deletions iamf/cli/testdata/test_000123.textproto
Original file line number Diff line number Diff line change
@@ -0,0 +1,307 @@
# 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: iamf/cli/proto/user_metadata.proto
# proto-message: UserMetadata

test_vector_metadata {
human_readable_description:
"A 7.1.4 + TOA IAMF stream encoded using Opus and with two Mix "
"Presentations. The first Mix Presentation uses both Audio Elements. The "
"second Mix Presentation uses only the 7.1.4 Audio Element. The primary "
"profile is set to Base and the additional profile is set to "
" Base-Enhanced."
file_name_prefix: "test_000123"
is_valid: true
validate_user_loudness: true
mp4_fixed_timestamp: "2024-07-17 00:00:00"
primary_tested_spec_sections: [
"3.6/num_substreams",
"3.6.2/subtream_count",
"3.6.2/coupled_substream_count",
"3.6.4/subtream_count",
"3.6.4/coupled_substream_count",
"4.2/Simple Profile",
"4.2/Base-Enhannced Profile",
"4.3/Cumulative channel limit"
]
base_test: "test_000118"
output_wav_file_bit_depth_override: 16
}

ia_sequence_header_metadata {
primary_profile: PROFILE_VERSION_BASE
additional_profile: PROFILE_VERSION_BASE_ENHANCED
}

codec_config_metadata {
codec_config_id: 200
codec_config {
codec_id: CODEC_ID_OPUS
num_samples_per_frame: 960
audio_roll_distance: -4
decoder_config_opus {
version: 1
pre_skip: 312
input_sample_rate: 48000
opus_encoder_metadata {
target_bitrate_per_channel: 48000
application: APPLICATION_AUDIO
use_float_api: false
}
}
}
}

audio_element_metadata: [
{
audio_element_id: 300
audio_element_type: AUDIO_ELEMENT_CHANNEL_BASED
reserved: 0
codec_config_id: 200
num_substreams: 7
audio_substream_ids: [0, 1, 2, 3, 4, 5, 6]
num_parameters: 0
scalable_channel_layout_config {
num_layers: 1
reserved: 0
channel_audio_layer_configs: [
{
loudspeaker_layout: LOUDSPEAKER_LAYOUT_7_1_4_CH
output_gain_is_present_flag: 0
recon_gain_is_present_flag: 0
reserved_a: 0
substream_count: 7
coupled_substream_count: 5
}
]
}
},
{
audio_element_id: 301
audio_element_type: AUDIO_ELEMENT_SCENE_BASED
reserved: 0
codec_config_id: 200
num_substreams: 16
audio_substream_ids: [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
num_parameters: 0
ambisonics_config {
ambisonics_mode: AMBISONICS_MODE_MONO
ambisonics_mono_config {
output_channel_count: 16
substream_count: 16
channel_mapping: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
}
}
}
]

mix_presentation_metadata {
mix_presentation_id: 42
count_label: 1
language_labels: ["en-us"]
mix_presentation_annotations_array: [
{
mix_presentation_friendly_label: "test_mix_pres_0_with_twenty_eight_channels"
}
]
num_sub_mixes: 1
sub_mixes {
num_audio_elements: 2
audio_elements: [
{
audio_element_id: 300
mix_presentation_element_annotations_array: [
{
audio_element_friendly_label: "test_mix_pres_0_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
mix_presentation_element_annotations_array: [
{
audio_element_friendly_label: "test_mix_pres_0_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
}
}
}
]
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: -3519
digital_peak: 0
}
}
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: -4937
digital_peak: -1771
}
}
}
}

mix_presentation_metadata {
mix_presentation_id: 43
count_label: 1
language_labels: ["en-us"]
mix_presentation_annotations_array: [
{
mix_presentation_friendly_label: "test_mix_pres_with_sixteen_channels"
}
]
num_sub_mixes: 1
sub_mixes {
num_audio_elements: 1
audio_elements: [
{
audio_element_id: 301
mix_presentation_element_annotations_array: [
{
audio_element_friendly_label: "test_mix_pres_1_sub_mix_0_audio_element_0"
}
]
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: -3602
digital_peak: -768
}
}
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: -5656
digital_peak: -3293
}
}
}
}

audio_frame_metadata: [
{
wav_filename: "Mechanism_5s.wav"
samples_to_trim_at_end: 648
samples_to_trim_at_start: 312
audio_element_id: 300
channel_ids: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
channel_labels: ["L7", "R7", "C", "LFE", "Lss7", "Rss7", "Lrs7", "Rrs7", "Ltf4", "Rtf4", "Ltb4", "Rtb4"]
},
{
wav_filename: "Transport_TOA_5s.wav"
samples_to_trim_at_end: 648
samples_to_trim_at_start: 312
audio_element_id: 301
channel_ids: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
channel_labels: ["A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12", "A13", "A14", "A15"]
}
]

temporal_delimiter_metadata {
enable_temporal_delimiters: false
}
Loading

0 comments on commit 33d66b1

Please sign in to comment.