Data Object
Mandatory, one per file; after the 24-byte object header:
| Offset | Size | Name | Meaning |
|---|---|---|---|
| 24 | 16 | File ID | GUID, matching the File Properties object. |
| 40 | 8 | Total Data Packets | |
| 48 | 2 | Reserved | 0101. |
| 50 | varies | Data packets | Fixed-size packets, as set by the File Properties minimum and maximum packet size. |
Data packets
Each packet starts with optional error correction data, then payload parsing information and the payloads. The first byte, if error correction is present:
| Bits | Name | Meaning |
|---|---|---|
| 4 | Error Correction Data Length | Bytes of error correction data. |
| 1 | Opaque Data Present | |
| 2 | Error Correction Length Type | 00. |
| 1 | Error Correction Present | Set when this byte is an error correction byte. |
Unconfirmed, from memory of the ASF specification, because the final PDF was not opened: the payload parsing information is a length type flags byte (multiple payloads present, sequence type, padding length type, packet length type, error correction present) and a property flags byte (replicated data, offset into media object and media object number length types, and stream number length type), then packet length, sequence, padding length, send time and duration. Each payload names its stream (bit 7 of the stream number is the key frame flag), media object number, offset into the object and any replicated data.
Simple Index Object
Optional, one per video stream.
| Offset | Size | Name | Meaning |
|---|---|---|---|
| 24 | 16 | File ID | GUID. |
| 40 | 8 | Index Entry Time Interval | 100 ns units. |
| 48 | 4 | Maximum Packet Count | |
| 52 | 4 | Index Entries Count | |
| Each entry: Packet Number (4 bytes), Packet Count (2). | |||
Index Object
| Offset | Size | Name | Meaning |
|---|---|---|---|
| 24 | 4 | Index Entry Time Interval | Milliseconds; cannot be zero. |
| 28 | 2 | Index Specifiers Count | |
| 30 | 4 | Index Blocks Count | |
Each specifier: Stream Number (2, 1 to 127), Index Type (2: 1 nearest past data packet, 2 nearest past media object, 3 nearest past cleanpoint). Each block: Index Entry Count (4), Block Positions (8 each), then Offsets (4 each, FFFFFFFF is invalid). | |||