{"id":27954443,"url":"https://github.com/ebu/ebu-adm-toolbox","last_synced_at":"2025-05-07T17:29:35.147Z","repository":{"id":65608469,"uuid":"594059982","full_name":"ebu/ebu-adm-toolbox","owner":"ebu","description":"A set of tools for processing ADM (Audio Definition Model) files.","archived":false,"fork":false,"pushed_at":"2024-02-23T15:37:35.000Z","size":3053,"stargazers_count":5,"open_issues_count":1,"forks_count":0,"subscribers_count":7,"default_branch":"main","last_synced_at":"2024-04-16T00:43:08.061Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://ebu-adm-toolbox.readthedocs.io/en/latest/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ebu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-01-27T14:04:25.000Z","updated_at":"2023-11-15T22:47:45.000Z","dependencies_parsed_at":"2024-02-23T16:39:54.210Z","dependency_job_id":"61a8aae8-3536-447c-86ce-6bf2cc562394","html_url":"https://github.com/ebu/ebu-adm-toolbox","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebu%2Febu-adm-toolbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebu%2Febu-adm-toolbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebu%2Febu-adm-toolbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebu%2Febu-adm-toolbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ebu","download_url":"https://codeload.github.com/ebu/ebu-adm-toolbox/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252926212,"owners_count":21826266,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-07T17:29:34.319Z","updated_at":"2025-05-07T17:29:35.103Z","avatar_url":"https://github.com/ebu.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EBU ADM Toolbox\n\nThe EAT is a set of tools for processing ADM (Audio Definition Model) files. It can convert ADM files between profiles, validate them, render them, fix common issues, and more.\n\nIt contains:\n- A framework for building processing graphs that operate on audio and associated data.\n- A set of ADM-related processes that sit within this framework.\n- A command-line tool `eat-process`, which processes ADM files using the processes from the framework, as defined in a configuration file.\n- A set of example configuration files for the tool, for doing things like profile conversion, loudness measurement, fixing common issues, validation etc.\n\nFor more information, see the documentation at https://ebu-adm-toolbox.readthedocs.io/\n\n## Usage\n\nThe `eat-process` tool requires only one argument: the configuration file which\nspecifies the processes to run and how to connect them.\n\n```bash\neat-process /path/to/configuration_file.json\n```\n\nConfiguration files can specify everything required to perform some processing, but normally they leave parameters such as paths to input and output files unspecified. These can be passed on the command-line with the `-o` option, which takes a process and parameter name, and a value to set it to. For example:\n\n```bash\neat-process example_configs/conform_block_timing.json -o input.path in.wav -o output.path out.wav\n```\n\nThis will enforce a minimum block duration on `in.wav`, writing to `out.wav`.\n\nFor information on the config file format, options and available processes, see the documentation at https://ebu-adm-toolbox.readthedocs.io/\n\n## Compiling\nTo compile the toolbox you will require a working C++20 development environment. It's currently tested on `ubuntu-latest`, `macos-latest` and `windows-latest`; see [here](https://github.com/actions/runner-images#available-images) for details.\n\nCMake version 3.21 or higher is required to configure and build the project.\n\nIf building via vcpkg/the supplied CMake presets, the Ninja build system is required along with the following:\n```\n// on macOS/linux\npkg-config\n\n// on linux (macOS has these by default)\ncurl \nzip\nunzip\ntar\n```\n\nTo build:\n```bash\ngit clone git@github.com:ebu/ebu-adm-toolbox.git --recursive\ncd ebu-adm-toolbox\n# This step may not be neccessary and should only be required once\n./external/vcpkg/bootstrap-vcpkg.sh # bootstrap_vcpkg.bat if on windows\n# This step configures and builds using vcpkg, see CMakePresets.json for details\ncmake --preset release \u0026\u0026 cmake --build --preset release\n```\n\nReplace the `git@...` url with the https equivalent if not using ssh, and replace release with debug if a debug build is required.\n\nOn Windows a 64 bit developer command prompt should be used, or the preset can be built directly from Visual Studio using its inbuilt CMake support.\n\nThe CMake preset uses vcpkg to build the project's dependencies, alternatively these can be manually built by the user\n```\nlibadm v0.13\nlibbw64 v0.10\nlibear v0.9\nlibebur128 v1.2.6\ncli11 v2.2.0\nnlohmann/json v3.11.2\nvalijson v1.0\n\nCatch2 v3.0.1 // Only required for tests\n```\n\n## Development Guidelines\n\n### General approach\nTry and adhere to the suggestions in the [pitchfork layout], using 'separate\nheader placement' with merged tests (i.e. separate src/include paths but tests\nin src).\n\nThe library is called 'eat' for EBU ADM Toolbox, it comprises:\n* framework (graph generation and execution) \n* processes (i/o, various metadata and audio manipulation)\n* render (BS.2127 renderer implementation)\n* utilities (support code hared between the above\nThese components are split into eat::framework, eat::process etc. namespaces, also reflected in the directory structure\n\n[pitchfork layout]: https://api.csswg.org/bikeshed/?force=1\u0026url=https://raw.githubusercontent.com/vector-of-bool/pitchfork/develop/data/spec.bs\n\n### Dependency management\n\n* Use CPM.cmake for header only libraries, cmake config or small / quick to build dependencies?\n* Document dependencies and attempt to find in exported config but do not force any management system on users?\n\n### Formatting\n* Use clang format and cmake formatting via Format.cmake\n\n### Testing\n* Catch2 v3 built as a static library and using minimal includes (start with catch/test_macros.hpp)\n* Use built in cmake for test registration\n* Start with one test binary for binary, probably add separate ones for algorithms as we add them\n\n### Packaging\n* export a cmake config for ease of inclusion\n\n## License\n\nApache 2.0, see `LICENSE.txt`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Febu%2Febu-adm-toolbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Febu%2Febu-adm-toolbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Febu%2Febu-adm-toolbox/lists"}