Test vectors
January 16, 2026 ยท View on GitHub
Test vectors are grouped with a common prefix. For example test_000012 has several files associated with it.
- Metadata describing the test vector:
test_000012.textproto. - Standalone IAMF bitstream:
test_000012.iamf. - Fragmented MP4 file:
test_000012_f.mp4. - Standalone MP4 file:
test_000012_s.mp4. - Rendered WAV file (per
mix_presentation_idx, sub mix index y, layout index z):test_000012_rendered_id_x_sub_mix_y_layout_z.wav
Generate Test Suite
generate_test_suite is a script which runs the encoder to generate several
test suite files.
Prerequisites:
- The path to a built
encoder_main, usuallybazel-bin/iamf/cli/encoder_main.
Note that example commands below assume a working directory of iamf_tools.
Run the test suite.
Arguments:
encoder_bin, full path to the built encoder_main tool. test_data_dir, full
path to folder containing .textproto and reference .wav files. output_dir,
full path to write IAMF files produced by encoder_main.
For a simple configuration, this example will dump all files to the
output_dir.
bazel run -c opt iamf/cli/testdata:generate_test_suite -- --encoder_bin=bazel-bin/iamf/cli/encoder_main --test_data_dir=$PWD/iamf/cli/testdata/ --output_dir=/tmp/iamf_artifacts
Extra arguments:
regex_filter, optionally included, regex to filter output files. For example
--regex_filter="000100" will run a single file, or
--regex_filter="0001\d{2}" will process files in the range [test_000100,
test_000199].
.textproto files
Theses file describe metadata about the test vector to encode an IA Sequence.
is_valid: True when the encoder can produce an IA Sequence where all mixes would be understood by a compliant decoder. False when one or more mixes exercise fields or features which would cause mixes to be ignored.is_valid_to_decode: True when an IAMF-compliant decoder could decode at least one mix of the associated IA Sequence ("should-pass"). False when all mixes are non-conformant and may fail to be decoded ("should-fail"). The IAMF spec does not specify what happens when requirements are violated; a robust system may still attempt to process and create output for "should-fail" tests.human_readable_descriptions: A short description of what is being tested and why.mp4_fixed_timestamp: The timestamp within the MP4 file. Can be safely ignored.primary_tested_spec_sections: A list of the main sections being tested. In the formX.Y.Z/class_or_field_nameto represent theclass_or_field_namein the IAMF specification SectionX.Y.Zis being tested.base_test: The recommended textproto to diff against.- Other fields refer to the OBUs and data within the test vector.
Input WAV files
Test vectors may have multiple substreams with several input .wav files. These .wav files may be shared with other test vectors. The .textproto file has a section which input wav file associated with each substream.
Summary
| Title | Summary | Channels | Sample Rate | Format | Duration |
|---|---|---|---|---|---|
audiolab-acoustic-guitar_2OA_470_ALLRAD_0.5s | Short clip of a guitar playing using 7.1.4. | 12 | 48kHz | pcm_s16le | 500ms |
audiolab-acoustic-guitar_2OA_470_ALLRAD_5s.wav | Short clip of a guitar playing using 7.1.4. | 12 | 48kHz | pcm_s16le | 5s |
audiolab-acoustic-guitar_2OA_470_ALLRAD_concat.wav | Clip of a guitar playing which which is repeated once using 7.1.4. | 12 | 48kHz | pcm_s16le | 22.77s |
dialog_clip_stereo.wav | English dialog. | 2 | 48kHz | pcm_s16le | 5s |
Mechanism_5s_32bit.wav | Mechanical noises using 7.1.4. | 12 | 48kHz | pcm_s32le | 5s |
Mechanism_5s_24bit.wav | Mechanical noises using 7.1.4. | 12 | 48kHz | pcm_s24le | 5s |
Mechanism_5s.wav | Mechanical noises using 7.1.4. | 12 | 48kHz | pcm_s16le | 5s |
Mechanism_5s_44100hz_s16le.wav | Mechanical noises using 7.1.4. | 12 | 44.1k | pcm_s16le | 5s |
sample1_48kHz_stereo.wav | Sawtooth wave. | 2 | 48kHz | pcm_s16le | 5s |
sawtooth_10000_foa_48kHz.wav | Sawtooth wave using first-order ambisonics. | 4 | 48kHz | pcm_s16le | 500ms |
sawtooth_10000_stereo_44100hz_s16le.wav | Sawtooth wave. | 2 | 44.1kHz | pcm_s16le | 500ms |
sawtooth_10000_stereo_48kHz_s24le.wav | Sawtooth wave. | 2 | 48kHz | pcm_s24le | 500ms |
sawtooth_10000_stereo_48kHz.wav | Sawtooth wave. | 2 | 48kHz | pcm_s16le | 500ms |
sawtooth_100_stereo.wav | Sawtooth wave. | 2 | 16kHz | pcm_s16le | 500ms |
sawtooth_8000_toa_48kHz.wav | Sawtooth wave using third-order ambisonics. | 16 | 48kHz | pcm_s16le | 500ms |
sine_1000_16khz_512ms.wav | Sine wave. | 2 | 16kHz | pcm_s16le | 512ms |
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 |
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 |
Transport_9.1.6_5s.wav | Short clip of vehicles driving by using 9.1.6. | 16 | 48kHz | pcm_s16le | 5s |
Output WAV files
Output wav files are based on the layout in the mix presentation. Typically the ordering of channels is based on the related ITU-2051-3 layout.
| Mix Presentation Layout | Channel Order Convention | Channel Order |
|---|---|---|
| Sound System A (0+2+0) | ITU-2051-3 | L, R |
| Sound System B (0+5+0) | ITU-2051-3 | L, R, C, LFE, Ls, Rs |
| Sound System C (2+5+0) | ITU-2051-3 | L, R, C, LFE, Ls, Rs, Ltf, Rtf |
| Sound System D (4+5+0) | ITU-2051-3 | L, R, C, LFE, Ls, Rs, Ltf, Rtf, Ltr, Rtr |
| Sound System E (4+5+1) | ITU-2051-3 | L, R, C, LFE, Ls, Rs, Ltf, Rtf, Ltr, Rtr, Cbf |
| Sound System F (3+7+0) | ITU-2051-3 | C, L, R, LH, RH, LS, RS, LB, RB, CH, LFE1, LFE2 |
| Sound System G (4+9+0) | ITU-2051-3 | L, R, C, LFE, Lss, Rss, Lrs, Rrs, Ltf, Rtf, Ltb, Rtb, Lsc, Rsc |
| Sound System H (9+10+3) | ITU-2051-3 | FL, FR, FC, LFE1, BL, BR, FLc, FRc, BC, LFE2, SiL, SiR, TpFL, TpFR, TpFC, TpC, TpBL, TpBR, TpSiL, TpSiR, TpBC, BtFC, BtFL, BtFR |
| Sound System I (0+7+0) | ITU_2051-3 | L, R, C, LFE, Lss, Rss, Lrs, Rrs |
| Sound System J (4+7+0) | ITU_2051-3 | L, R, C, LFE, Lss, Rss, Lrs, Rrs, Ltf, Rtf, Ltb, Rtb |
| Sound System 10 | IAMF | L7, R7, C, LFE, Lss7, Rss7, Lrs7, Rrs7, Ltf2, Rtf2 |
| Sound System 11 | IAMF | L3, R3, C, LFE, Ltf3, Rtf3, |
| Sound System 12 | IAMF | C |
| Sound System 13 | IAMF | FL, FR, FC, LFE, BL, BR, FLc, FRc, SiL, SiR, TpFL, TpFR, TpBL, TpBR, TpSiL, TpSiR |
| Sound System 14 | IAMF | L, R, C, LFE, Lss, Rss, Lrs, Rrs, Ltf, Rtf, Ltb, Rtb, TpC, BtFL, BtFR, BtBL, BtBR |
| Binaural Layout | IAMF | L2, R2 |