BBC R&D

Abstract

The Audio Definition Model is an ITU specification of metadata that can be used to describe object-based audio, scene-based audio and channel-based audio. It can be included in BWF WAVE files or used as a streaming format in production environments.

Audio Definition Model

ITU-R BS.2076 Audio Definition Model - Metadata specification

ITU-R BS.2088 Specification of the BW64 - A long-form file format for audio data files with metadata in broadcasting

Example files using this format can be found here

BBC Audio Toolbox


The BBC Audio Toolbox is a suite of C++ libraries for manipulating object-based audio and ADM based BWF files.

Please note IMPORTANT library changes below in the Deprecated Libraries section.

All the libraries have the following licence:



Copyright (c) 2015 British Broadcasting Corporation

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Additionally, the BBC requests that improvements and fixes made to the Software are sent to the BBC for incorporation into the publicly available versions.



Source Code


Please note IMPORTANT library changes below in the Deprecated Libraries section.

bbcat-base Base library for the BBC Audio Toolbox

bbcat-dsp DSP library for the BBC Audio Toolbox

bbcat-adm Audio Definition Model handling library for the BBC Audio Toolbox

bbcat-fileio File I/O library for the BBC Audio Toolbox

All libraries can be built on Mac OSX, Linux and Windows 64-bit architectures. Each library relies on those above so all libraries must be built and installed. See the README file in each library for instructions. bbcat-fileio contains several example programs to read and write ADM based BWF files in the examples/ folder.

For all architectures, building using CMake is now supported. On Windows this allows building using Visual Studio and produces libraries for statically linking only. IMPORTANT: Care must be taken when linking statically to ensure all parts of the libraries are included, please see the examples for more information.

autotools can still be used on OSX and Linux but this will be deprecated in favour of CMake in a future release.

Examples


Some of the examples (in bbcat-fileio/examples):

create-adm.cpp - example code for creating an ADM (in XML form) WITHOUT using a RIFF file

read-adm-bwf.cpp - example code for reading the displaying parts of the ADM and then accessing the sample data of one of the ADM audio objects

write-adm-bwf.cpp - example code for creation of a simple ADM

write-separate-adm.cpp - example code for creation of a simple ADM and then writing the CHNA and AXML chunks to a RIFF file

udp-demo.cpp - example of using UDP port, threading and a lock-free buffer

Deprecated Libraries


The following libraries have been deprecated and replaced by bbcat-adm and bbcat-fileio above - they will still work but will not be updated:

bbcat-control Control library for the BBC Audio Toolbox

bbcat-audioobjects Audio objects library for the BBC Audio Toolbox

bbcat-adm provides pure Audio Definition Model data handling facilities without any file reading or writing, that is now provided by bbcat-fileio.

Crucially, the API's have not changed - the classes and filenames are as they were, just their location has changed.

For example:
bbcat-control/AudioObjectParameters.h is now bbcat-adm/AudioObjectParameters.h
bbcat-audioobjects/ADMData.h is now bbcat-adm/ADMData.h
bbcat-audioobjects/RIFFFile.h is now bbcat-fileio/RIFFFile.h
bbcat-audioobjects/TinyXMLADMData.h is now bbcat-fileio/TinyXMLADMData.h

Python


The Python code has now been deprecated in favour of the C++ code above.

Contact


Please email audio@rd.bbc.co.uk if you have any questions or queries.

Topics