| # Build instructions |
| |
| ## Prerequisites for building the encoder |
| |
| ### All platforms |
| |
| - Bazelisk: `iamf-tools` uses the Bazel build system, via bazelisk. See |
| [Bazelisk installation instructions](https://bazel.build/install/bazelisk). |
| For further information on Bazel, see |
| [Getting started](https://bazel.build/start). |
| - CMake: required to build some dependencies. See CMake's |
| [Download](https://cmake.org/download/) page to install. |
| - Clang 13+ or GCC 10+ for Linux-like systems or MSVC for Windows. |
| |
| ### Additional Windows prerequisites |
| |
| Windows requires some additional prerequisites: |
| |
| - MSYS32: See [msys2.org](https://www.msys2.org/) for installation |
| instructions. |
| - MSCV: Follow Bazel's |
| [Build on Windows](https://bazel.build/configure/windows) for installation |
| instructions. |
| - Address |
| [long path issues](https://bazel.build/configure/windows#long-path-issues) |
| by adding the following to `iamf-tools/.bazelrc` or another |
| [custom .bazelrc](https://bazel.build/run/bazelrc) file: |
| |
| `startup --output_user_root=C:/tmp` |
| |
| ## Building the encoder |
| |
| Building the encoder binary: |
| |
| ``` |
| bazelisk build -c opt //iamf/cli:encoder_main |
| ``` |
| |
| Running built-in tests: |
| |
| ``` |
| bazelisk test -c opt //iamf/... |
| ``` |
| |
| ## Test suite |
| |
| [iamf/cli/testdata](../iamf/cli/testdata) covers a wide variety of IAMF |
| features. These samples can be used as encoder input. After encoding the |
| resultant `.iamf` files can be used to assist in testing or debugging an |
| IAMF-compliant decoder. |
| |
| See the separate [README.md](../iamf/cli/testdata/README.md) for further |
| documentation. |
| |
| ## Folder structure |
| |
| * `<root>` - Project-level files like the license, README (this file), and |
| BUILD files. |
| * `iamf/` |
| * `common/` - Common utility files. |
| * `tests/` - Unit tests for files under `common/`. |
| * `cli/` - Files related to the command line interface (CLI) to generate |
| and write an IA Sequence. |
| * `adm_to_user_metadata/` - Components to convert ADM files to |
| protocol buffers which can be used for input to the encoder. |
| * `codec/` - Files that encode or decode substreams with |
| codec-specific libraries. |
| * `tests/` - Unit tests for files under `codec/`. |
| * `obu_to_proto/` - Components to convert classes under `iamf/obu` to |
| protocol buffers. |
| * `proto/` - [Protocol buffers](https://protobuf.dev/) defining the |
| data scheme for the input files under `iamf/cli/testdata/` or |
| user-created ones. |
| * `proto_to_obu/` - Components to convert protocol buffers to classes |
| under `iamf/obu`. |
| * `testdata/` - Sample input files to the encoder. See also |
| [Test Suite](#Test-Suite). |
| * `tests/` - Unit tests for files under `iamf/cli/`. |
| * `user_metadata_builder/` - Files to help build a `UserMetadata`. |
| * `obu/` - Files relating to IAMF Open Bitstream Units (OBU)s. |
| * `decoder_config/` - Files relating codec-specific decoder configs. |
| * `tests/` - Unit tests for files under `decoder_config/`. |
| * `tests/` - Unit tests for files under `obu/`. |
| * `external/` - Custom `*.BUILD` files for external dependencies. |
| * `docs/` - Documentation. |
| |
| ## Contributing |
| |
| If you have improvements or fixes, we would love to have your contributions. See |
| [CONTRIBUTING.md](../CONTRIBUTING.md) for details. |