The broadcast extension chunk comes from the Broadcast Wave Format, the European Broadcasting Union’s standard for exchanging audio in radio and television (EBU Tech 3285). It records who made the audio, when, where it sits in time and how loud it is. An RF64 file can carry it just as an ordinary WAV file does. Wikipedia’s RF64 article calls such a file MBWF, multichannel BWF, after EBU R111-2007; that name is not confirmed beyond it.
Fields
Text fields are ASCII, padded with NULs. Offsets are from the start of the chunk’s data, and numbers are little-endian. The fixed part is 602 bytes, the minimum size libsndfile accepts; the explorer reports a shorter chunk.
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
| 0 | 256 | char[256] | Description | a free text description of the audio |
| 256 | 32 | char[32] | Originator | the organisation or person that made it, often the software |
| 288 | 32 | char[32] | OriginatorReference | a unique reference given by the originator |
| 320 | 10 | char[10] | OriginationDate | the date, as yyyy-mm-dd |
| 330 | 8 | char[8] | OriginationTime | the time, as hh-mm-ss |
| 338 | 4 | u32 | TimeReferenceLow | the low 32 bits of the time reference |
| 342 | 4 | u32 | TimeReferenceHigh | the high 32 bits |
| 346 | 2 | u16 | Version | 0, 1 or 2 |
| 348 | 64 | bytes | UMID | a SMPTE unique material identifier, from version 1; zeros in version 0 |
| 412 | 2 | i16 | LoudnessValue | integrated loudness in LUFS × 100, version 2 |
| 414 | 2 | i16 | LoudnessRange | loudness range in LU × 100, version 2 |
| 416 | 2 | i16 | MaxTruePeakLevel | maximum true peak in dBTP × 100, version 2 |
| 418 | 2 | i16 | MaxMomentaryLoudness | highest momentary loudness in LUFS × 100, version 2 |
| 420 | 2 | i16 | MaxShortTermLoudness | highest short-term loudness in LUFS × 100, version 2 |
| 422 | 180 | bytes | Reserved | zeros |
| 602 | varies | char[] | CodingHistory | lines of text recording each step the audio went through |
A loudness value of 0x7FFF means it was not measured; the explorer leaves
it out.
Versions
| Version | Year | Change |
|---|---|---|
| 0 | 1997 | the first Broadcast Wave Format, with 254 reserved bytes after Version |
| 1 | 2001 | the first 64 of the reserved bytes become the UMID |
| 2 | 2011 | the next 10 become the loudness values, measured as EBU R 128 sets out |
Each version only takes over reserved bytes, so a reader of one version reads the others; version 2 is meant to stay compatible with 0 and 1.
Date and time
OriginationDate is ten characters, yyyy-mm-dd, and
OriginationTime eight, hh-mm-ss. Tech 3285 recommends the
separators hyphen, underscore, colon, space and full stop; the explorer accepts any
character that is not a digit, and reports a field that is not in that form.
Time reference
The time reference places the recording on a clock: it is the position of the first sample, counted in samples since midnight. Divide it by the sample rate to get seconds. Editors use it to line up files recorded at the same time on different machines. The two 32-bit halves, low then high, read together as one little-endian 64-bit number.
For example, 172,992,000 samples at 48,000 Hz is 3,604 seconds: the file starts at 01:00:04. The explorer shows the time this way.
Coding history
Each line of CodingHistory describes one stage, as comma-separated
values such as the coding algorithm (A=PCM), the sample rate
(F=48000), the word length (W=24) and the mode
(M=stereo), ending in a carriage return and line feed. It runs to the end
of the chunk.