TECH 3285-s7 SPECIFICATION OF THE BROADCAST WAVE FORMAT - A FORMAT FOR AUDIO DATA FILES IN BROADCASTING. Supplement 7: <chna> Chunk

Similar documents
Long-form file format for the international exchange of audio programme materials with metadata

Multichannel use of the BWF audio file format (MBWF)

a format for audio data files in broadcasting Version 1 July 2001 Technical Specification

RF64: An extended File Format for Audio

TECH 3381 CARRIAGE OF EBU-TT-D IN ISOBMFF VERSION: 1.0 SOURCE: SP/MIM XML SUBTITLES

RECOMMENDATION ITU-R BS File format for the exchange of audio programme materials with metadata on information technology media

TECH SPECIFICATION Version 1.0 ADM RENDERER FOR USE IN NEXT GENERATION AUDIO BROADCASTING SOURCE: BTF RENDERER GROUP

RECOMMENDATION ITU-R BR File format for the exchange of audio programme materials with metadata on information technology media

Material Exchange Format Timecode Implementation

1.1 SD Commercial File Delivery standard (FAST)

Audio Interchange File Format: "AIFF" A Standard for Sampled Sound Files Version 1.3 Apple Computer, Inc.

TRANSCODER SDK CERTIFICATION PROCESS VENDORS. Instructions to Validate the Correct Implementation of the Nielsen ID3 Software Development Kit

Copyright by Minnetonka Audio Software, Inc.

LV 5770SER43 LV 5770SER42

Information technology MPEG systems technologies. Part 8: Coding-independent code points

EBU Tech Doc Three parts of Tech Doc 3344

SPARK. Native Device Interface (NDI)

Dynamic Memory: Alignment and Fragmentation

IEC TC 100 AGS September 17

Media Analysis Tools. How we check media files. Jérôme Martinez MediaArea.net SARL

,879 B FAT #1 FAT #2 root directory data. Figure 1: Disk layout for a 1.44 Mb DOS diskette. B is the boot sector.

R 118 TIERING OF CAMERAS FOR USE IN TELEVISION PRODUCTION

The Journalling Flash File System

File test version. DPP Compliance Programme AMWA / UK DPP -- AS-11 UK DPP HD Shim v1.1 File Conformance Test Suite

Audio issues in MIR evaluation

PROPOSED SMPTE STANDARD for Television Material Exchange Format (MXF) Operational pattern 1A (Single Item, Single Package)

Media Formats. Sound. Image. Video. WAV (uncompressed, PCM) MIDI. BMP XML dia MPEG

SUBTITLE EXCHANGE FORMAT (DPP-EBU-TT) Version 2.0

Decoder Plug-In USER MANUAL

VARIABLES AND CONSTANTS

ARM MPEG-4 AAC LC Decoder Technical Specification

cout << "How many numbers would you like to type? "; cin >> memsize; p = new int[memsize];

ISO/IEC INTERNATIONAL STANDARD. Information technology Coding of audio-visual objects Part 12: ISO base media file format

WavPack 5 Library Documentation

Adstream File Delivery Specifications For Adstream Nordic

Apple Core Audio Format Specification 1.0

Final assignment: Hash map

16 July r1 SAS-2 Add device slot numbering fields to DISCOVER

DECLARATIONS. Character Set, Keywords, Identifiers, Constants, Variables. Designed by Parul Khurana, LIECA.

Dolby E High-Level Frame Description

D1.4 Digitization Guide Cassette Audio Project Parameters

AMWA AS-11. Technical Overview of AS-11 Specifications

Administrative Guideline. SMPTE Metadata Registers Maintenance and Publication SMPTE AG 18:2017. Table of Contents

HDR and Dolby Atmos Support for DTA-2195


ATSC Standard: A/342 Part 2, AC-4 System

ASN2XML. ASN.1 to XML Translator. Version 2.1. Reference Manual. Objective Systems July 2010

Memory Based Driver Help Kepware Technologies

D1.5a Create Access Master Files

Dolby Vision. Profiles and levels V1.2.9

Opus Generated by Doxygen Thu May :22:05

Week 3 Lecture 2. Types Constants and Variables

Custom XML Files for ANC Packets

Data Storage and Query Answering. Data Storage and Disk Structure (4)

For Mac and iphone. James McCartney Core Audio Engineer. Eric Allamanche Core Audio Engineer

CSci 4061 Introduction to Operating Systems. Input/Output: High-level

Adstream File Delivery Specifications For Adstream Nordic

C Programming. Course Outline. C Programming. Code: MBD101. Duration: 10 Hours. Prerequisites:

The Journalling Flash File System

FOR Loop. FOR Loop has three parts:initialization,condition,increment. Syntax. for(initialization;condition;increment){ body;

Operation manual. LM-Correct. Loudness Measurement & Correction. v 1.2. NUGEN Audio NUGEN Audio

Stem Creation Guide. Introduction

Representing Data Elements

TransMu x. Users Manual. Version 3. Copyright PixelTools Corporation

Variables Data types Variable I/O. C introduction. Variables. Variables 1 / 14

Embedding Metadata in Digital Audio Files Guideline for Federal Agency Use of Broadcast WAVE Files

ISO/IEC INTERNATIONAL STANDARD. Information technology JPEG 2000 image coding system Part 3: Motion JPEG 2000

Data File Header Structure for the dbase Version 7 Table File

Ate. Web Services Integration Toolkit for OpenVMS. Interface Definition File (IDL) Reference. June 2012

Alarms & Events Plug-In Kepware Technologies

CSE 230 Intermediate Programming in C and C++

Number Systems for Computers. Outline of Introduction. Binary, Octal and Hexadecimal numbers. Issues for Binary Representation of Numbers

Recitation #11 Malloc Lab. November 7th, 2017

Internet Engineering Task Force (IETF) Category: Standards Track. Mozilla Corporation April 2016

This document is a preview generated by EVS

INTERNATIONAL STANDARD

AudioGate version Release Information (Windows)

CS 61C: Great Ideas in Computer Architecture. (Brief) Review Lecture

Lecture 5: Outline. I. Multi- dimensional arrays II. Multi- level arrays III. Structures IV. Data alignment V. Linked Lists

ISO/IEC Information technology Radio frequency identification (RFID) for item management: Data protocol Application interface

Transceiver IP Link Protocol rev.1

XL-PB350CA. EoC bridge slave. User manual

DTMediaRead Programmers Interface

Module 10 MULTIMEDIA SYNCHRONIZATION

UM1641 User manual. Sampling rate conversion SRC236 library software expansion for STM32Cube. Introduction

PSK Propagation Reporter DLL Documentation 2013-Mar-10 Philip Gladstone

2012 Grimm Audio, All rights reserved. Reproduction in whole or in part is prohibited. Specifications subject to change without notice.

Reminder: compiling & linking

[MS-ASPSS]: ASP.NET State Service Database Repository Communications Protocol

OptimiData. JPEG2000 Software Development Kit for C/C++ Reference Manual. Version 1.6. from

ISO/IEC INTERNATIONAL STANDARD. Information technology Coding of audiovisual. Part 12: ISO base media file format

Storage and Indexing, Part I

The type of all data used in a C (or C++) program must be specified

06-078r3 SAS-2 Expander Route Table (REPORT EXPANDER ROUTE TABLE) 21 June 2006

Low Level Optimization by Data Alignment. Presented by: Mark Hauschild

Universal Serial Bus - USB 2.0

DPP Compliance Programme AMWA AS-11 DPP Product Test Report (See note 5, on next page) DPP Lab, BBC R&D, Centre House, 56 Wood Lane, W12 7SB, UK

Defining Unified CCX CTI Messages

ISO/IEC INTERNATIONAL STANDARD. Information technology MPEG systems technologies Part 7: Common encryption in ISO base media file format files

More in-class activities / questions

Transcription:

TECH 3285-s7 SPECIFICATION OF THE BROADCAST WAVE FORMAT - A FORMAT FOR AUDIO DATA FILES IN BROADCASTING Supplement 7: <chna> Chunk Geneva May 2018

This and other pages in the document are deliberately left blank to facilitate two-sided printing.

Tech 3285 (BWF) Suppl. 7 The <chna> Chunk Contents 1. Introduction... 5 2. Terminology... 5 3. CHNA chunk... 5 3.1 Definition... 5 3.2 Elements of the chna chunk... 6 4. Examples... 7 4.1 Simple stereo file... 8 4.2 Coded 5.1 with stereo versions... 8 4.3 Simple object-based example... 8 5. Handling files without a <chna> Chunk... 9 6. Bibliography... 10 3

The <chna> Chunk Tech 3285 (BWF) Suppl. 7 4

Tech 3285 (BWF) Suppl. 7 The <chna> Chunk Specification of the Broadcast Wave Format - a format for audio data files Supplement 7: <chna> Chunk EBU Committee First Issued Revised Re-issued TC 2015 2018 1 Keywords: Audio file format, BWF, RF64, BF64, Multichannel Broadcast Wave File, <chna> chunk. 1. Introduction The primary purpose of the <chna> chunk described in this document is to provide the references from each track in a BWF [1] or BW64 [2] file to the IDs in the Audio Definition Model (ADM) metadata defined in ITU-R BS.2076 [3]. Apart from the primary purpose of linking each track in the file with its associated ADM metadata, the <chna> chunk also allows faster access to ADM IDs without having to gain access the XML metadata (if the IDs are within a range of values defined by the Common Definitions for the ADM in ITU-R BS.2094 [5]). As the <chna> chunk can be fixed in size, and is placed before the <data> and <axml> chunks, it is easier to access, generate or modify its contents on the fly. 2. Terminology ADM Audio Definition Model a metadata model for describing the format and content of audio files (ITU-R BS.2076 [3]). <chna> chunk Track A chunk containing a set of IDs for each track in the file. These IDs will either refer to ADM elements, or be referred to from an ADM element. A track is a where a sequence of samples (or coded data) is stored in the <data> chunk of the BWF file. In multi-track files the samples are interleaved. 3. CHNA chunk 3.1 Definition The <chna> chunk consists of a header followed by the number of tracks and number of track UIDs used. This is followed by an array of ID structures that each contains IDs corresponding to ADM element IDs. The ADM IDs within the chunk can either refer to ADM metadata carried in the <axml> chunk, or in an external common definition file. If the last four hexadecimal digits of the IDs have a 1 References updated. [3] contains a definition of the <chna> chunk that this supplement is completely aligned with. 5

The <chna> Chunk Tech 3285 (BWF) Suppl. 7 value of 0x0FFF and below then they are defined as common definitions in Recommendation ITU-R BS.2094-0 Common Definitions for the Audio Definition Model (for example channel definitions for FrontLeft and FrontRight ). Any IDs with values of 0x1 000 and above are defined as custom definitions and so will be contained in the <axml> chunk within the file. The size of the chunk depends upon the number of track UIDs to be defined. The number of ID structures must be equal to or greater than the number of track UIDs used. By allowing the number of ID structures to exceed the number of UIDs, it can facilitate updating and adding new IDs to the chunk without having to change the size of the chunk. For example, it may not be clear how many UIDs will be generated at the beginning, so if the number of ID structures in the chunk is set to 64 (as this is considered by the implementer to be more than enough for their task); the software then generates 55 UIDs (an example number of initial UIDs) which fill up the first 55 ID structures, so the remaining 9 ID structures are set to zero values. The audioid structure contains an index to the track used in the <data> chunk (which contains the audio samples), starting with the value of 1 for the first track. It contains a UID for the track, which the ADM metadata will contain. The audio elements of a track may be differently in the course of a file; in this case, there will be a different UID for each definition. Therefore it is possible to have multiple UIDs for each track. The other two values in the structure are references to the IDs of the ADM s audiotrackformat and audiopackformat elements. typedef struct chna { CHAR ckid[4]; // {'c','h','n','a'} DWORD cksize; // size of chunk WORD numtracks; // number of tracks used WORD numuids; // number of track UIDs used audioid ID[N]; // IDs for each track (where N >= numuids) } chna_chunk; typedef struct audioid { WORD trackindex; // index of track in file CHAR UID[12]; // audiotrackuid value CHAR trackref[14]; // audiotrackformatid reference CHAR packref[11]; // audiopackformatid reference CHAR pad; // padding byte to ensure even number of bytes } 6

Tech 3285 (BWF) Suppl. 7 The <chna> Chunk 3.2 Elements of the chna chunk ckid This is the 4 character array { c, h, n, a } 2 for chunk identification. cksize This is the size of the data section of the chunk. (It does not include the 8 bytes used by ckid and cksize.) numtracks numuids ID trackindex UID trackref packref pad The number of tracks used in the file. Even if a track contains more than one set of IDs, it is still just one track. The number of UIDs used in the file. As it is possible to give a single track multiple UIDs (covering different time periods), this could be a greater value than numtracks. This value should match the number of defined IDs in ID. The structure containing the set of audio reference IDs for the track. This array contains N IDs, where N numuids. When numuids is less than N the contents of the unused track IDs are set to zero. When reading the chunk the value of N can be derived from cksize, as cksize = 4 + (N * 40), so N = (cksize - 4) / 40. The index of the track in the file, starting at 1. This corresponds directly to the order of the tracks interlaced in the <data> chunk. The audiotrackuid value of the track. The character array has the format ATU_xxxxxxxx where x is a hexadecimal digit. The audiotrackformatid reference of the track. The character array has the format AT_xxxxxxxx_xx where x is a hexadecimal digit. The audiopackformatid reference of the track. The character array has the format AP_xxxxxxxx where x is a hexadecimal digit. When audiopackformatid is not required (when audiostreamformat is referring to an audiopackformat rather than an audiochannelformat) this field should be filled with null values. A single byte to ensure the audioid structure has an even number of bytes. When an ID is not being used the trackindex should be given the value of zero and the other fields should be given null strings that are the same length as the usual ID string used. So the null string for packref would consist of 11 null characters (ASCII value zero) and trackref would consist of 14 null characters. 4. Examples To help illustrate the operation of the <chna> chunk some simple examples are given here. The pseudo-code in each example uses string-like notation for the IDs (e.g. AT_00010001_01 ), whereas in practice an array of characters should be used to ensure correct ordering of the characters (so it would actually be done this way: { A, T, _, 0, 0, 0, 1, 0, 0, 0, 1, _, 0, 1 }). 2 Remark: The definition DWORD ckid = chna would not be unique. Different architectures produce different orders of the characters. Therefore we define char ckid[4] = { c, h, n, a } instead. 7

The <chna> Chunk Tech 3285 (BWF) Suppl. 7 4.1 Simple stereo file The majority of audio files in existence are still 2-channel stereo files, with the first track containing the left channel, and the second track containing the right channel. The ADM has a definition of a left channel with an ID of AT_00010001_01, and the right channel with an ID of AT_00010002_01. The stereo pack definition has the ID of AP_00010002. ckid = { c, h, n, a }; cksize = 84; numtracks = 2; numuids = 2; ID[0] = { trackindex = 1; UID = ATU_00000001 ; trackref = AT_00010001_01 ; packref = AP_00010001 ; pad = \0`; }; ID[1] = { trackindex = 2; UID = ATU_00000002 ; trackref = AT_00010002_01 ; packref = AP_00010001 ; pad = \0`; }; The number of ID structures is 2, so there are no unused ID structures in this example. 4.2 Coded 5.1 with stereo versions Non-PCM audio could be stored in the file, an example would be Dolby E carrying a coded version of 5.1 audio in two tracks. This example shows how 6 tracks contain Dolby E 5.1 with two stereo pairs (maybe a stereo mix of the 5.1 and an alternative language version). ckid = { c, h, n, a }; cksize = 244; numtracks = 6; numuids = 6; ID[0] = { trackindex = 1; UID = ATU_00000001 ; trackref = AT_00020001_01 ; packref = [ \0 ]*11; pad = \0`; }; ID[1] = { trackindex = 2; UID = ATU_00000002 ; trackref = AT_00020001_02 ; packref = [ \0 ]*11; pad = \0`; }; ID[2] = { trackindex = 3; UID = ATU_00000003 ; trackref = AT_00010001_01 ; packref = AP_00010001 ; pad = \0`; }; ID[3] = { trackindex = 4; UID = ATU_00000004 ; trackref = AT_00010002_01 ; packref = AP_00010001 ; pad = \0`; }; ID[4] = { trackindex = 5; UID = ATU_00000005 ; trackref = AT_00010001_01 ; packref = AP_00010001 ; pad = \0`; }; ID[5] = { trackindex = 6; UID = ATU_00000006 ; trackref = AT_00010002_01 ; packref = AP_00010001 ; pad = \0`; }; The first two tracks (1 & 2) contain the Dolby E data, so the trackrefs contains the IDs AT_00020001_01 and AT_00020001_02. The way these audiotrackformat IDs are designed means that these two IDs both reference an audiostreamformat ID of AS_00040001. This stream (with the 0004 set of digits) is known to be Dolby E data and contain 5.1 coded channels. No packref ID is required as the pack is known to be 5.1 from the stream reference. The next pair of tracks (3 & 4) is the first stereo pair, and the 5 & 6 pair of tracks is the second stereo pair. Both pairs have the same trackref and packref IDs as they have the same format. 4.3 Simple object-based example Audio objects may only cover a sub-section of time in the audio file. To save space, nonoverlapping objects may share the same track. This is where multiple UIDs in the same track would occur. This example also uses more ID structures (32 in this case) than numuids to show how unused ID structures are set to zero. ckid = { c, h, n, a }; cksize = 1284; numtracks = 2; numuids = 4; ID[0]={ trackindex=1; UID= ATU_00000001 ; trackref= AT_00031001_01 ; packref= AP_00031001 ; pad= \0`; }; ID[1]={ trackindex=1; UID= ATU_00000002 ; trackref= AT_00031003_01 ; packref= AP_00031002 ; pad= \0`; }; 8

Tech 3285 (BWF) Suppl. 7 The <chna> Chunk ID[2]={ trackindex=1; UID= ATU_00000003 ; trackref= AT_00031004_01 ; packref= AP_00031003 ; pad= \0`; }; ID[3]={ trackindex=2; UID= ATU_00000004 ; trackref= AT_00031002_01 ; packref= AP_00031001 ; pad= \0`; }; ID[4]={ trackindex=0; UID=[ \0 ]*12; trackref=[ \0 ]*14; packref=[ \0 ]*11; pad= \0`; }; : ID[31]={ trackindex=0; UID=[ \0 ]*12; trackref=[ \0 ]*14; packref=[ \0 ]*11; pad= \0`; }; The first track contains 3 UIDs, so will contain 3 different objects (with the track IDs of AT_00031001_01, AT_00031003_01 and AT_00031004_01) at different time locations within the file. The second track contains one UID, so contains one object. This object has the same pack ID (AP_00031001) as the first object in track 1. This suggests the first object contains two channels carried in both track 1 and track 2. The ADM metadata carried in the <axml> would be used to clarify the allocation of channels and tracks. 5. Handling files without a <chna> Chunk Any files that are generated without the <chna> chunk (including all files that pre-date this document) should be handled pragmatically, particularly if a <chna> chunk is to be automatically generated for the file. Assuming that no other knowledge of the track allocation in a WAV/BWF file exists, then a default set of IDs for the <chna> can be assigned when generating the chunk. The number of tracks in a file will be known. The assumption made will be that the file contains PCM audio in a channel-based format. The order of the tracks will simply be the track IDs taken in numerical order from 00010001_01 (the first four digits represent the type of track, and so they don t change; nor does the two digit suffix). As we don t know the pack to which the channels are assigned to, this is left null. These ID digits are hexadecimal numbers. So for a 6 track file the automatically generated chunk will be: ckid = { c, h, n, a }; cksize = 244; numtracks = 6; numuids = 6; ID[0] = { trackindex = 1; UID = ATU_00000001 ; trackref = AT_00010001_01 ; packref = [ \0 ]*11; pad = \0`; }; ID[1] = { trackindex = 2; UID = ATU_00000002 ; trackref = AT_00010002_01 ; packref = [ \0 ]*11; pad = \0`; }; ID[2] = { trackindex = 3; UID = ATU_00000003 ; trackref = AT_00010003_01 ; packref = [ \0 ]*11; pad = \0`; }; ID[3] = { trackindex = 4; UID = ATU_00000004 ; trackref = AT_00010004_01 ; packref = [ \0 ]*11; pad = \0`; }; ID[4] = { trackindex = 5; UID = ATU_00000005 ; trackref = AT_00010005_01 ; packref = [ \0 ]*11; pad = \0`; }; ID[5] = { trackindex = 6; UID = ATU_00000006 ; trackref = AT_00010006_01 ; packref = [ \0 ]*11; pad = \0`; }; If a WAV/BWF file that is being read doesn t contain a <chna> chunk, then we use the sequential IDs for the tracks as shown above. Therefore track 1 will have the definition for AT_00010001_01 (FrontLeft, PCM). This default order of IDs allows backwards compatibility with the WAVEFORMATEXTENSIBLE 3 channel definitions. If the standard definitions for AT_00010001_01 to AT_0001012_01 (there are 18 channels defined in WAVEFORMATEXTENSIBLE) match those of the WAVEFORMATEXTENSIBLE specification, then this compatibility can be ensured. While no pack information is used, it could be possible for the user/tools to make assumptions on the pack used from the number of the tracks in the file. For example, if it is a 6 track file, the audio pack ID for the 5.1 format could be used (e.g. AP_00010003). 3 https://msdn.microsoft.com/en-us/library/windows/desktop/dd757714%28v=vs.85%29.aspx 9

The <chna> Chunk Tech 3285 (BWF) Suppl. 7 6. Bibliography [1] EBU Tech 3285: Specification of the Broadcast Wave Format A format for audio files in broadcasting. [2] ITU-R BS.2088-0 (2015): Long Form File Format for the International Exchange of Audio Programme Materials With Metadata [3] ITU-R BS.2076-1 (2017): Audio Definition Model [4] EBU Tech 3293: EBU Core Metadata Set 10