Name | Date | Size | #Lines | LOC | ||
---|---|---|---|---|---|---|
.. | - | - | ||||
.github/ | 04-Jul-2025 | - | 110 | 86 | ||
docs/ | 04-Jul-2025 | - | 335 | 261 | ||
external/ | 04-Jul-2025 | - | 726 | 669 | ||
gh_pages/ | 04-Jul-2025 | - | 497 | 447 | ||
iamf/ | 04-Jul-2025 | - | 197,093 | 167,641 | ||
.bazelrc | D | 04-Jul-2025 | 814 | 26 | 20 | |
.bazelversion | D | 04-Jul-2025 | 5 | 1 | 1 | |
.clang-format | D | 04-Jul-2025 | 88 | 5 | 4 | |
.gitignore | D | 04-Jul-2025 | 11 | 3 | 2 | |
Android.bp | D | 04-Jul-2025 | 3.3 KiB | 101 | 98 | |
BUILD | D | 04-Jul-2025 | 128 | 10 | 5 | |
CHANGELOG.md | D | 04-Jul-2025 | 3.6 KiB | 89 | 69 | |
CONTRIBUTING.md | D | 04-Jul-2025 | 1 KiB | 29 | 21 | |
LICENSE | D | 04-Jul-2025 | 16.1 KiB | 197 | 143 | |
METADATA | D | 04-Jul-2025 | 1.2 KiB | 27 | 24 | |
MODULE.bazel | D | 04-Jul-2025 | 1 KiB | 43 | 40 | |
MODULE_LICENSE_AOM_PATENT | D | 04-Jul-2025 | 0 | |||
MODULE_LICENSE_BSD | D | 04-Jul-2025 | 0 | |||
OWNERS | D | 04-Jul-2025 | 52 | 3 | 1 | |
PATENTS | D | 04-Jul-2025 | 5.6 KiB | 109 | 85 | |
README.md | D | 04-Jul-2025 | 3.7 KiB | 106 | 71 | |
WORKSPACE | D | 04-Jul-2025 | 1.5 KiB | 51 | 44 |
README.md
1# iamf-tools 2 3## What is IAMF? 4 5The [Immersive Audio Model and Formats](https://aomediacodec.github.io/iamf/) 6(IAMF) standard is defined by the Alliance for Open Media (AOM). 7 8## What is `iamf-tools`? 9 10`iamf-tools` implements tools to help users process and work with the IAMF 11format. These tools can be used as a complement to the `libiamf` 12[reference decoder](https://github.com/AOMediaCodec/libiamf/) and other tools 13such as [ffmpeg](https://ffmpeg.org/) and 14[MP4Box](https://github.com/gpac/gpac?tab=readme-ov-file#mp4box). 15 16### Encoding IAMF files 17 18There are multiple workflows for creating IAMF files, supporting different types 19of inputs. 20 21 22 23- [Encode an ADM-BWF file to IAMF](#using-the-encoder-with-adm-bwf-input) 24- [Encode wav files to IAMF using the iamf-tools encoder](#using-the-encoder-with-wav-files-and-proto-input) 25- [Merge IAMF files and video into an mp4 file](docs/external/encoding_with_external_tools.md#merge-an-iamf-file-with-video-into-mp4) 26- [Encode wav files to IAMF using ffmpeg](docs/external/encoding_with_external_tools.md#encode-wav-files-to-iamf-with-ffmpeg) 27 28### Decoding IAMF files 29 30The `libiamf` reference decoder is available at 31https://github.com/AOMediaCodec/libiamf/. 32 33### Web Demo 34 35The [web demo](https://aomediacodec.github.io/iamf-tools/web_demo/) hosted in 36the GitHub Pages of this repo decodes and renders standalone IAMF files to 37stereo and binaural wav files for preview and comparison. 38 39## Encoder 40 41The encoder can be used to encode a standalone IAMF Sequence (`.iamf`) file from 42a set of multichannel wav files or an ADM-BWF file. 43 44### Building the encoder 45 46See [Build instructions](docs/build_instructions.md) to build from source. 47 48### Using the encoder with wav files and proto input 49 50The `iamf-tools` encoder can be used to encode a set of multichannel wav files 51into an IAMF file. An accompanying input textproto file serves as the 52configuration file, specifying details such as channel layout, mix gains and 53codec to use for the underlying audio elements. 54 55Prepare up to two multichannel wav files and the input textproto file. See 56[Textproto templates](iamf/cli/textproto_templates) for some example input 57textprotos and details on how to customize them. 58 59Run the encoder. Specify the input file with `--user_metadata_filename`. 60 61Optional flags: 62 63- `--input_wav_directory` controls the directory wav files are read from 64 (default `iamf/cli/testdata/`). 65- `--output_iamf_directory` controls the output directory of the IAMF files. 66 67Using the encoder: 68 69``` 70bazel-bin/iamf/cli/encoder_main --user_metadata_filename=iamf/cli/testdata/test_000002.textproto --output_iamf_directory=. 71``` 72 73If this example is successful the encoder will produce an output 74`test_000002.iamf` file in the current directory. 75 76### Using the encoder with ADM-BWF input 77 78Run the encoder. Specify the input file with `--adm_filename`. See the 79`adm_to_user_metadata` [README.md](iamf/cli/adm_to_user_metadata) for details on 80the conversion. 81 82> [!WARNING] 83> 84> Some ADM conversions are a work in progress and are experimental 85> (b/392958726). 86 87Optional flags: 88 89- `--output_iamf_directory` controls the output directory of the IAMF files. 90- `--adm_importance_threshold` controls the threshold below which ADM 91 `audioObject`s are omitted (default 0). 92- `--adm_frame_duration_ms` controls the frame size of the output IAMF in ms 93 (default 10). 94 95``` 96bazel-bin/iamf/cli/encoder_main --adm_filename=path/to/adm.wav --output_iamf_directory=. 97``` 98 99The encoder will produce an output `.iamf` file in the output directory, where 100the underlying audio streams are encoded with PCM. 101 102## License 103 104Released under the BSD 3-Clause Clear License. See [LICENSE](LICENSE) for 105details. 106