Upgrade iamf_tools to e42e82092f6a46df4c1eebc0e67fa1fdd6788696

This project was upgraded with external_updater.
Usage: tools/external_updater/updater.sh update external/iamf_tools
For more info, check https://cs.android.com/android/platform/superproject/main/+/main:tools/external_updater/README.md

Bug: 388336285
Test: TreeHugger
Change-Id: I26bb4762aa7508ea05e87aafb92d7a4e761a6ae0
tree: 14c6ca040570be10cdd108e63b9ce78943eb06c2
  1. .github/
  2. docs/
  3. external/
  4. gh_pages/
  5. iamf/
  6. .bazelrc
  7. .bazelversion
  8. .clang-format
  9. .gitignore
  10. Android.bp
  11. BUILD
  12. CHANGELOG.md
  13. CONTRIBUTING.md
  14. LICENSE
  15. METADATA
  16. MODULE.bazel
  17. MODULE_LICENSE_AOM_PATENT
  18. MODULE_LICENSE_BSD
  19. OWNERS
  20. PATENTS
  21. README.md
  22. WORKSPACE
README.md

iamf-tools

What is IAMF?

The Immersive Audio Model and Formats (IAMF) standard is defined by the Alliance for Open Media (AOM).

What is iamf-tools?

iamf-tools implements tools to help users process and work with the IAMF format. These tools can be used as a complement to the libiamf reference decoder and other tools such as ffmpeg and MP4Box.

Encoding IAMF files

There are multiple workflows for creating IAMF files, supporting different types of inputs.

IAMF encode workflows

Decoding IAMF files

The libiamf reference decoder is available at https://github.com/AOMediaCodec/libiamf/.

Web Demo

The web demo hosted in the GitHub Pages of this repo decodes and renders standalone IAMF files to stereo and binaural wav files for preview and comparison.

Encoder

The encoder can be used to encode a standalone IAMF Sequence (.iamf) file from a set of multichannel wav files or an ADM-BWF file.

Building the encoder

See Build instructions to build from source.

Using the encoder with wav files and proto input

The iamf-tools encoder can be used to encode a set of multichannel wav files into an IAMF file. An accompanying input textproto file serves as the configuration file, specifying details such as channel layout, mix gains and codec to use for the underlying audio elements.

Prepare up to two multichannel wav files and the input textproto file. See Textproto templates for some example input textprotos and details on how to customize them.

Run the encoder. Specify the input file with --user_metadata_filename.

Optional flags:

  • --input_wav_directory controls the directory wav files are read from (default iamf/cli/testdata/).
  • --output_iamf_directory controls the output directory of the IAMF files.

Using the encoder:

bazel-bin/iamf/cli/encoder_main --user_metadata_filename=iamf/cli/testdata/test_000002.textproto --output_iamf_directory=.

If this example is successful the encoder will produce an output test_000002.iamf file in the current directory.

Using the encoder with ADM-BWF input

Run the encoder. Specify the input file with --adm_filename. See the adm_to_user_metadata README.md for details on the conversion.

[!WARNING]

Some ADM conversions are a work in progress and are experimental (b/392958726).

Optional flags:

  • --output_iamf_directory controls the output directory of the IAMF files.
  • --adm_importance_threshold controls the threshold below which ADM audioObjects are omitted (default 0).
  • --adm_frame_duration_ms controls the frame size of the output IAMF in ms (default 10).
bazel-bin/iamf/cli/encoder_main --adm_filename=path/to/adm.wav --output_iamf_directory=.

The encoder will produce an output .iamf file in the output directory, where the underlying audio streams are encoded with PCM.

License

Released under the BSD 3-Clause Clear License. See LICENSE for details.