diff --git a/iamf/cli/testdata/README.md b/iamf/cli/testdata/README.md index a0b6b342..f314baf9 100644 --- a/iamf/cli/testdata/README.md +++ b/iamf/cli/testdata/README.md @@ -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 diff --git a/iamf/cli/testdata/sine_1000_4oa_48khz.wav b/iamf/cli/testdata/sine_1000_4oa_48khz.wav new file mode 100644 index 00000000..cb047d08 Binary files /dev/null and b/iamf/cli/testdata/sine_1000_4oa_48khz.wav differ diff --git a/iamf/cli/testdata/test_000123.textproto b/iamf/cli/testdata/test_000123.textproto new file mode 100644 index 00000000..17e421c3 --- /dev/null +++ b/iamf/cli/testdata/test_000123.textproto @@ -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 +} diff --git a/iamf/cli/testdata/test_000132.textproto b/iamf/cli/testdata/test_000132.textproto new file mode 100644 index 00000000..78ac39ac --- /dev/null +++ b/iamf/cli/testdata/test_000132.textproto @@ -0,0 +1,294 @@ +# 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 fourth-order ambisonics + stereo 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 stereo Audio Element. " + "The primary profile is set to Simple and the additional profile is set to " + "Base-Enhanced." + file_name_prefix: "test_000132" + 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_SIMPLE + 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_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_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_0_with_twenty_seven_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: -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: -2458 + } + } + } +} + +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_two_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: 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: -6481 + digital_peak: -2560 + } + } + } +} + +audio_frame_metadata: [ + { + wav_filename: "sine_1000_4oa_48khz.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, 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: "dialog_clip_stereo.wav" + samples_to_trim_at_end: 648 + samples_to_trim_at_start: 312 + audio_element_id: 301 + channel_ids: [0, 1] + channel_labels: ["L2", "R2"] + } +] + +temporal_delimiter_metadata { + enable_temporal_delimiters: false +}