WRID>RIFF-WAVE>bext

Extra parameters needed for exchange of material between broadcasters shall be added in a specific "Broadcast Audio Extension" chunk.

[BEXT1996]

TODO: overview

The bext chunk is widely supported in audio processing software and hardware recorders, especially those designed for field recording or video production.

Chunk Name Bytes Type conditionDescriptionWRID
bext id 4 u8[4] id = "bext" ...>id
bext size 4 u32 ...>size
bext description 256 u8[256] ASCII string (maximum 256 characters) containing a free description of the sequence. To help applications which display only a short description, it is recommended that a resume of the description is contained in the first 64 characters and the last 192 characters are used for details.

If the length of the string is less than 256 characters the last one shall be followed by a null character (00).

...>description
bext originator 32 u8[32] ASCII string (maximum 32 characters) containing the name of the originator/ producer of the audio file. If the length of the string is less than 32 characters the field shall be ended by a null character. ...>originator
bext originator_reference 32 u8[32] ASCII string (maximum 32 characters) containing an unambiguous reference allocated by the originating organisation. If the length of the string is less than 32 characters the field shall be terminated by a null character.

Note: The EBU has defined a format for the OriginatorReference field. See EBU Recommendation R 99 [6].

...>originator_reference
bext origination_date 10 u8[10] 10 ASCII characters containing the date of creation of the audio sequence. The format shall be « ‘,year’,-,’month,’-‘,day,’» with 4 characters for the year and 2 characters per other item.

  • Year is defined from 0000 to 9999
  • Month is defined from 1 to 12
  • Day is defined from 1 to 28, 29, 30 or 31

The separator between the items can be anything but it is recommended that one of the following characters be used: ‘-’ hyphen ‘_’ underscore ‘:’ colon ‘ ’ space ‘.’ stop

...>origination_date
bext origination_time 8 u8[8] 8 ASCII characters containing the time of creation of the audio sequence. The format shall be « ‘hour’-‘minute’-‘second’» with 2 characters per item.

  • Hour is defined from 0 to 23.
  • Minute and second are defined from 0 to 59.

The separator between the items can be anything but it is recommended that one of the following characters be used: ‘-’ hyphen ‘_’ underscore ‘:’ colon ‘ ’ space ‘.’ stop

...>origination_time
bext time_reference 64 u64 These fields shall contain the time-code of the sequence. It is a 64-bit value which contains the first sample count since midnight. The number of samples per second depends on the sample frequency which is defined in the field nSamplesPerSec from the fmt chunk.

(WAVRef note: This is actually specified as two separate u32 integers, low, then high. On modern 64bit machines, it seems less error prone to just parse it as a single value.)

...>time_reference
bext version 2 u16 An unsigned binary number giving the version of the BWF. This number is particularly relevant for the carriage of the UMID and loudness information. For Version 1 it shall be set to 0x0001 and for Version 2 it shall be set to 0x0002. ...>version
bext umid 64 u8[64] 64 bytes containing a UMID (Unique Material Identifier) to standard SMPTE 330M [1]. If only a 32 byte "basic UMID" is used, the last 32 bytes should be set to zero. (The length of the UMID is given internally.) ...>umid
bext loudness_value 2 u16 A 16-bit signed integer, equal to round(100x the Integrated Loudness Value of the file in LUFS). ...>loudness_value
bext loudness_range 2 u16 A 16-bit signed integer, equal to round(100x the Loudness Range of the file in LU). ...>loudness_range
bext max_true_peak_level 2 u16 A 16-bit signed integer, equal to round(100x the Maximum True Peak Value of the file in dBTP). ...>max_true_peak_level
bext max_momentary_loudness 2 u16 A 16-bit signed integer, equal to round(100x the highest value of the Momentary Loudness Level of the file in LUFS). ...>max_momentary_loudness
bext max_short_term_loudness 2 u16 A 16-bit signed integer, equal to round(100x the highest value of the Short-term Loudness Level of the file in LUFS).

Note: The loudness terms are explained in EBU Recommendation R 128 [2], EBU Tech 3341 [7] and EBU Tech 3342 [8], supported by EBU Tech 3343 and EBU Tech 3344

...>max_short_term_loudness
bext reserved 180 u8[180] 180 bytes reserved for extension. If the Version field is set to 0x0001 or 0x0002, these 180 bytes shall be set to a NULL (zero) value. ...>reserved
bext coding_history remaining u8[remaining] Unrestricted ASCII characters containing a collection of strings terminated by CR/LF. Each string shall contain a description of a coding process applied to the audio data. Each new coding application shall add a new string with the appropriate information.

This information shall contain the type of sound (PCM or MPEG) with its specific parameters :

PCM : mode (mono, stereo), size of the sample (8, 16 bits) and sample frequency,

MPEG : sample frequency, bit rate, layer (I or II) and the mode (mono, stereo, joint stereo or dual channel),

It is recommended that the manufacturers of the coders provide an ASCII string for use in the coding history.

Note: The EBU has defined a format for coding history which will simplify the interpretation of the information provided in this field. See EBU Recommendation R 98 [9].

...>coding_history

Learning References

Specification

  • [BEXT1996] Broadcast Wave Format: Broadcast Extension (1996).