{"id":13437070,"url":"https://github.com/ebu/libadm","last_synced_at":"2025-07-11T04:39:22.744Z","repository":{"id":38194333,"uuid":"142037386","full_name":"ebu/libadm","owner":"ebu","description":"Audio Definition Model (ITU-R BS.2076) handling library","archived":false,"fork":false,"pushed_at":"2024-04-08T15:55:33.000Z","size":1607,"stargazers_count":33,"open_issues_count":41,"forks_count":14,"subscribers_count":12,"default_branch":"master","last_synced_at":"2024-04-13T22:26:53.983Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://libadm.readthedocs.io","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":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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":"2018-07-23T16:00:22.000Z","updated_at":"2023-12-23T09:55:16.000Z","dependencies_parsed_at":"2024-01-07T12:53:43.634Z","dependency_job_id":"b990e21e-a833-4f72-9467-e49d6468ae18","html_url":"https://github.com/ebu/libadm","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebu%2Flibadm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebu%2Flibadm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebu%2Flibadm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebu%2Flibadm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ebu","download_url":"https://codeload.github.com/ebu/libadm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244370762,"owners_count":20442300,"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":"2024-07-31T03:00:54.116Z","updated_at":"2025-03-19T06:30:35.676Z","avatar_url":"https://github.com/ebu.png","language":"C++","funding_links":[],"categories":["Metadata"],"sub_categories":[],"readme":"# libadm - ITU-R BS.2076 Library\n\n[![](https://github.com/ebu/libadm/workflows/Linux/badge.svg)](https://github.com/ebu/libadm/actions?workflow=Linux)\n[![](https://github.com/ebu/libadm/workflows/macOS/badge.svg)](https://github.com/ebu/libadm/actions?workflow=macOS)\n[![](https://github.com/ebu/libadm/workflows/Windows/badge.svg)](https://github.com/ebu/libadm/actions?workflow=Windows)\n[![Documentation Status](https://readthedocs.org/projects/libadm/badge/?version=latest)](https://libadm.readthedocs.io/en/latest/?badge=latest)\n[![codecov](https://codecov.io/gh/ebu/libadm/branch/master/graph/badge.svg)](https://codecov.io/gh/ebu/libadm)\n\n## Introduction\n\nThe `libadm` library is a modern C++11 library to parse, modify, create and\nwrite [`ITU-R BS.2076`](https://www.itu.int/rec/R-REC-BS.2076) conformant XML. It works well with the header-only\nlibrary [`libbw64`](https://github.com/ebu/libbw64) to write ADM\nrelated applications with minimal dependencies.\n\n[Read the documentation](https://libadm.readthedocs.io/en/latest/) to get\nstarted.\n\n## Features\n\n- minimal dependencies\n- expressive syntax\n- easy access to referenced ADM elements\n- common definitions support\n\n## Dependencies\n\n- compiler with C++11 support\n- Boost header libraries (version 1.57 or later)\n  - Boost.Optional\n  - Boost.Variant\n  - Boost.Range\n  - Boost.Iterator\n  - Boost.Functional\n  - Boost.Format\n- CMake build system (version 3.5 or later)\n\n## Installation\n\n### macOS\nOn macOS you can use homebrew to install the library. You just have to add the NGA homebrew tap and can then use the usual install command.\n\n```\nbrew tap ebu/homebrew-nga\nbrew install libadm\n```\n\n### Manual installation\nTo manually install the library you have to clone the git repository and then use the CMake build system to build and install it.\n\n```\ngit clone git@github.com:ebu/libadm.git\ncd libadm\nmkdir build \u0026\u0026 cd build\ncmake ..\nmake\nmake install\n```\n\n## CMake\nAs the library uses CMake as a build system it is really easy to set up and use if your project does too. Assuming you have installed the library, the following code shows a complete CMake example to compile a program which uses the libadm.\n\n```\ncmake_minimum_required(VERSION 3.5)\nproject(libadm_example VERSION 1.0.0 LANGUAGES CXX)\n\nfind_package(adm REQUIRED)\n\nadd_executable(example example.cpp)\ntarget_link_libraries(example PRIVATE adm)\n```\n\nIf you prefer not to install the library on your system you can also use the library as a subproject. You can just add the library as a CMake subproject. Just add the folder containing the repository to your project and you can use the adm target.\n\n```\ncmake_minimum_required(VERSION 3.5)\nproject(libadm_example VERSION 1.0.0 LANGUAGES CXX)\n\nadd_subdirectory(submodules/libadm)\n\nadd_executable(example example.cpp)\ntarget_link_libraries(example PRIVATE adm)\n```\n\n#### Note\n\nIf `libadm` is used as a CMake subproject the default values of the options\n\n- `ADM_UNIT_TESTS`\n- `ADM_EXAMPLES`\n- `ADM_PACKAGE_AND_INSTALL`\n\nare automatically set to `FALSE`.\n\n## Example\n\nThe following minimal example shows how easy a valid ADM file can be created\nfrom scratch using the `libadm` library. For more examples have a look at the\n[examples folder](examples) in the repository.\n\n```cpp\n#include \u003ciostream\u003e\n#include \u003csstream\u003e\n#include \u003cadm/adm.hpp\u003e\n#include \u003cadm/utilities/object_creation.hpp\u003e\n#include \u003cadm/write.hpp\u003e\n\nint main() {\n  using namespace adm;\n\n  // create ADM elements\n  auto admProgramme = AudioProgramme::create(AudioProgrammeName(\"Alice and Bob talking\"));\n  auto speechContent = AudioContent::create(AudioContentName(\"Speech\"));\n  auto aliceHolder = createSimpleObject(\"Alice\");\n  auto bobHolder = createSimpleObject(\"Bob\");\n\n  // add references\n  admProgramme-\u003eaddReference(speechContent);\n  speechContent-\u003eaddReference(aliceHolder.audioObject);\n  speechContent-\u003eaddReference(bobHolder.audioObject);\n\n  auto admDocument = Document::create();\n  admDocument-\u003eadd(admProgramme);\n\n  // write XML data to stdout\n  writeXml(std::cout, admDocument);\n  return 0;\n}\n```\n\n## Current Limitations\nIt can take time for revisions to Rec. ITU-R BS.2076 to be incorporated into this library. The implementation of the library might not include all possible uses of all the Recommendation.\n\nThe areas that are currently unsupported include:\n1. Some ADM sub-elements are missing\n2. There is no SADM support (ITU-R BS.2125)\n\n## Credits\n\n*libadm* is originally a development of the [IRT](https://www.irt.de).\n\n## Acknowledgement\n\nThis project has received funding from the European Union’s Horizon 2020\nresearch and innovation programme under grant agreement No 687645.\n\n## License\n\n```\nCopyright 2018-2020 The libadm Authors\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Febu%2Flibadm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Febu%2Flibadm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Febu%2Flibadm/lists"}