Skip to content

Commit

Permalink
Add enough OBUs to create a valid mix in some recently created test v…
Browse files Browse the repository at this point in the history
…ectors.

  - These now have a mix that is valid under the claimed profiles - which should still decode correctly.
    - Mark these as invalid because the new extension fields *shouldn't* normally be present under the claimed profiles.
  - Tweak some fields to be consistent with the new OBUs.
  - `test_000129`: Also add another arbitrary audio frame because the arbitrary audio element claims two substreams.

PiperOrigin-RevId: 653424840
  • Loading branch information
jwcullen committed Jul 18, 2024
1 parent 733262c commit 972545f
Show file tree
Hide file tree
Showing 5 changed files with 558 additions and 33 deletions.
127 changes: 121 additions & 6 deletions iamf/cli/testdata/test_000119.textproto
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,15 @@

test_vector_metadata {
human_readable_description:
"An invalid IAMF stream using an imaginary `codec_id`. It would be valid "
"if the `codec_id` was `ipcm`."
"An invalid stereo stream. The first mix uses a single stereo audio "
"element encoded with LPCM. The second mix uses a single stereo audio "
"element encoded with an imaginary `codec_id`. For convenience, the "
"imaginary `codec_id` uses the same syntax as LPCM."
file_name_prefix: "test_000119"
is_valid: false
partition_mix_gain_parameter_blocks: false
validate_user_loudness: true
mp4_fixed_timestamp: "2024-07-10 00:00:00"
mp4_fixed_timestamp: "2024-07-17 00:00:00"
primary_tested_spec_sections: [
"3.5/codec_id",
"4.1/Simple Profile"
Expand All @@ -32,6 +34,116 @@ ia_sequence_header_metadata {
additional_profile: PROFILE_VERSION_SIMPLE
}

codec_config_metadata {
codec_config_id: 200
codec_config {
codec_id: CODEC_ID_LPCM
num_samples_per_frame: 8
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_CHANNEL_BASED
reserved: 0
codec_config_id: 200
num_substreams: 1
audio_substream_ids: [0]
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
language_labels: ["en-us"]
mix_presentation_annotations_array: [
{
mix_presentation_friendly_label: "test_mix_pres"
}
]
num_sub_mixes: 1
sub_mixes {
num_audio_elements: 1
audio_elements {
audio_element_id: 300
mix_presentation_element_annotations_array: [
{
audio_element_friendly_label: "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: 100
parameter_rate: 48000
param_definition_mode: 1
reserved: 0
}
default_mix_gain: 0
}
}
}
output_mix_config {
output_mix_gain {
param_definition {
parameter_id: 100
parameter_rate: 48000
param_definition_mode: 1
reserved: 0
}
default_mix_gain: 0
}
}
num_layouts: 1
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: -32768
digital_peak: -32768
}
}
}
}

audio_frame_metadata {
wav_filename: "stereo_8_samples_48khz_s16le.wav"
samples_to_trim_at_end: 6
samples_to_trim_at_start: 0
audio_element_id: 300
channel_ids: [0, 1]
channel_labels: ["L2", "R2"]
}

arbitrary_obu_metadata: [
{
# Simple profile does not support `codec_id == fake`.
Expand All @@ -41,7 +153,7 @@ arbitrary_obu_metadata: [
payload:
"\x22" # codec_config_id.
"fake" # codec_id.
"\x02" # num_samples_per_frame.
"\x08" # num_samples_per_frame.
"\x00\x00" # audio_roll_distance.
# Begin an imaginary `decoder_config`. For convenience it has the same
# syntax as LPCM.
Expand All @@ -57,7 +169,7 @@ arbitrary_obu_metadata: [
"\x00" # audio_element_type (3), reserved (5).
"\x22" # codec_config_id.
"\x01" # num_substreams.
"\x00" # substream_id.
"\x01" # substream_id.
"\x00" # num_parameters.
"\x20" # num_layers (3), reserved (5)
"\x10" # loudspeaker_layout (4), output_gain_is_present_flag (1), reserved (2).
Expand Down Expand Up @@ -94,7 +206,10 @@ arbitrary_obu_metadata: [
{
insertion_hook: INSERTION_HOOK_AFTER_AUDIO_FRAMES_AT_TICK
insertion_tick: 0
obu_type: OBU_IA_AUDIO_FRAME_ID_0
obu_type: OBU_IA_AUDIO_FRAME_ID_1
obu_header: {
num_samples_to_trim_at_end: 6
}
# A short payload which which represents an audio frame encoding using an
# imaginary codec associated with the imaginary `codec_id`.
payload: "fakedata"
Expand Down
114 changes: 107 additions & 7 deletions iamf/cli/testdata/test_000120.textproto
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,14 @@

test_vector_metadata {
human_readable_description:
"An invalid IAMF stream using a reserved "
"`audio_element_type`."
"An invalid IAMF stream. The first mix uses a single stereo audio element. "
"The second mix presentation uses an `audio_element_type` which is "
"reserved in Simple profile."
file_name_prefix: "test_000120"
is_valid: false
partition_mix_gain_parameter_blocks: false
validate_user_loudness: true
mp4_fixed_timestamp: "2024-07-10 00:00:00"
mp4_fixed_timestamp: "2024-07-17 00:00:00"
primary_tested_spec_sections: [
"3.6/audio_element_type",
"4.1/Simple Profile"
Expand All @@ -36,7 +37,7 @@ codec_config_metadata {
codec_config_id: 0x22
codec_config {
codec_id: CODEC_ID_LPCM
num_samples_per_frame: 2
num_samples_per_frame: 8
audio_roll_distance: 0
decoder_config_lpcm {
sample_format_flags: LPCM_LITTLE_ENDIAN
Expand All @@ -46,6 +47,102 @@ codec_config_metadata {
}
}

audio_element_metadata {
audio_element_id: 300
audio_element_type: AUDIO_ELEMENT_CHANNEL_BASED
reserved: 0
codec_config_id: 0x22
num_substreams: 1
audio_substream_ids: [0]
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
language_labels: ["en-us"]
mix_presentation_annotations_array: [
{
mix_presentation_friendly_label: "test_mix_pres"
}
]
num_sub_mixes: 1
sub_mixes {
num_audio_elements: 1
audio_elements {
audio_element_id: 300
mix_presentation_element_annotations_array: [
{
audio_element_friendly_label: "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: 100
parameter_rate: 48000
param_definition_mode: 1
reserved: 0
}
default_mix_gain: 0
}
}
}
output_mix_config {
output_mix_gain {
param_definition {
parameter_id: 100
parameter_rate: 48000
param_definition_mode: 1
reserved: 0
}
default_mix_gain: 0
}
}
num_layouts: 1
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: -32768
digital_peak: -32768
}
}
}
}

audio_frame_metadata {
wav_filename: "stereo_8_samples_48khz_s16le.wav"
samples_to_trim_at_end: 6
samples_to_trim_at_start: 0
audio_element_id: 300
channel_ids: [0, 1]
channel_labels: ["L2", "R2"]
}

arbitrary_obu_metadata: [
{
# Simple profile does not support `audio_element_type == 2`.
Expand All @@ -57,7 +154,7 @@ arbitrary_obu_metadata: [
"\x40" # audio_element_type (3), reserved (5).
"\x22" # codec_config_id.
"\x01" # num_substreams.
"\x00" # substream_id.
"\x01" # substream_id.
"\x00" # num_parameters.
# Begin `extension_config`.
"\x00" # audio_element_config_size.
Expand Down Expand Up @@ -92,8 +189,11 @@ arbitrary_obu_metadata: [
{
insertion_hook: INSERTION_HOOK_AFTER_AUDIO_FRAMES_AT_TICK
insertion_tick: 0
obu_type: OBU_IA_AUDIO_FRAME_ID_0
payload: "datadata"
obu_type: OBU_IA_AUDIO_FRAME_ID_1
obu_header: {
num_samples_to_trim_at_end: 6
}
payload: "somedata"
}
]

Expand Down
Loading

0 comments on commit 972545f

Please sign in to comment.