The general indeo5 frames layout is composed of one global header, followed by the content of the three YUV plans.
In this document, the global header is split into 3 parts:
- Frame header: describe the kind of frame (I/P/B)
- GOP header: some data which is true for all the frame in this GOP (present only in the first (I) frame of the GOP)
- More header: some more data which is true only for this single frame
Each YUV plan begin with a Plan header, containing values which are valid only for this single plan.
This codec is based on the slant transform. Other used standard techniques are huffman coding and motion compensation.
Headers are described in some tables. Each row of those tables describes a value which may be read from the frame. Those tables and rows are presented in the order of appearance in the frame.
Here are the meaning of each columns:
- size: The size of this value in bits. Bits are counted in MSB to LSB order. As an example, with the byte 01110000b, reading 3 bits then 5 bits will return 011b then 10000b.
- name: Kind of variable name, used to reference the value. When a value is named valueX, it generally means we don't know it's purpose. Lines named alignmentX means that bits reader need to skip bits until next byte boundary.
- condition: The value is present in the frame only if this condition is matched. No condition means that the value is always present.
- nb times: How many times the value is repeated.
- comments: Some details about the content of the value. It may also explain that a value is repeated until a certain condition is reached.