The Header Extension Object sits inside the Header Object and holds newer objects. Older readers skip it whole. Offsets below start after the common 24-byte object header.
Header Extension Object
| Offset | Size | Field | Meaning |
|---|---|---|---|
| 0 | 16 | reserved 1 | Reserved 1 GUID |
| 16 | 2 | reserved 2 | 6 |
| 18 | 4 | header extension data size | in bytes |
| 22 | varies | extension objects | the objects below, one after another |
Extended Stream Properties Object
| Offset | Size | Field | Meaning |
|---|---|---|---|
| 0 | 8 | start time | milliseconds |
| 8 | 8 | end time | milliseconds |
| 16 | 4 | data bit rate | |
| 20 | 4 | buffer size | milliseconds |
| 24 | 4 | initial buffer fullness | milliseconds |
| 28 | 4 | alternate data bit rate | |
| 32 | 4 | alternate buffer size | |
| 36 | 4 | alternate initial buffer fullness | |
| 40 | 4 | maximum object size | |
| 44 | 4 | flags | bit 0 reliable, bit 1 seekable, bit 2 no cleanpoints, bit 3 resend live cleanpoints |
| 48 | 2 | stream number | |
| 50 | 2 | stream language ID index | index into the language list |
| 52 | 8 | average time per frame | 100-nanosecond units |
| 60 | 2 | stream name count | |
| 62 | 2 | payload extension system count | |
| 64 | varies | stream names | each a 2-byte language ID index, a 2-byte name length (bytes) and a UTF-16 name |
| … | varies | payload extension systems | each a 16-byte extension system ID, a 2-byte data size, a 4-byte info length and the info |
| … | varies | stream properties object | optional; a Stream Properties Object for a stream not in the main header |
Exclusion and priority objects
| Object | Fields, in order |
|---|---|
| Advanced Mutual Exclusion | exclusion type (GUID), stream numbers count (2), stream numbers (2 each) |
| Group Mutual Exclusion | exclusion type (GUID), records count (2), then each record: stream count (2) and stream numbers (2 each) |
| Stream Prioritization | priority records count (2), then each record: stream number (2), priority flags (2: bit 0 mandatory) |
| Bandwidth Sharing | sharing type (GUID), data bit rate (4), buffer size (4), stream numbers count (2), stream numbers (2 each) |
Bandwidth sharing has two types, exclusive and partial, each named by a GUID that was not confirmed from a public source.
Language List Object
| Offset | Size | Field | Meaning |
|---|---|---|---|
| 0 | 2 | language ID records count | |
| 2 | varies | records | each a 1-byte language ID length in bytes, and the language ID in UTF-16 (for example en-us) |
Metadata and Metadata Library Objects
These hold tags per stream. The Metadata Library also has a language. Both have a 2-byte records count and then records.
| Size | Field | Meaning |
|---|---|---|
| 2 | reserved (Metadata) or language list index (Metadata Library) | 0 in the Metadata Object |
| 2 | stream number | 0 means the whole file |
| 2 | name length | in bytes |
| 2 | data type | a type code |
| 4 | data length | in bytes |
| varies | name | UTF-16 |
| varies | data | as the type says |
Index parameter objects
| Object | Fields, in order |
|---|---|
| Index Parameters | index entry time interval (4, milliseconds), specifiers count (2), then each specifier: stream number (2), index type (2) |
| Media Object Index Parameters | index entry count interval (4), specifiers count (2), then each specifier: stream number (2), index type (2) |
| Timecode Index Parameters | index entry count interval (4), specifiers count (2), then each specifier: stream number (2), index type (2) |
| Index type | Meaning |
|---|---|
| 1 | nearest past data packet |
| 2 | nearest past media object |
| 3 | nearest past cleanpoint |
FF | frame number offset (Media Object Index only) |
Compatibility Object
| Offset | Size | Field | Meaning |
|---|---|---|---|
| 0 | 1 | profile | 2 |
| 1 | 1 | mode | 1 |
Advanced Content Encryption Object
A 2-byte records count, then records of: system ID (GUID), system version (4), encrypted object record count (2), the encrypted object records (each an object ID type (2), object ID length (2) and object ID), data size (4), data. The encrypted systems themselves are not publicly documented.