FrameHeader01() and GlobalHeader() have a lot of common fields and having a common function + default value for fields unused in previous versions is less complex and more coherent than repeating the common part. They are merged and renamed to Parameters().
Version 2+ of the format has a configuration record which is in the underlying container track definition. GlobalHeader definition is split in 2 parts: - a configuration record part, including more details about how to find it in AVI and MP4, including the algorithm for how to skip remaining bits directly in the bitstream definition, including the crc_parity, - the header part itself, which is the prveious GlobalHeader definition minus crc_parity. crc_parity definition is also split and moved in the right subsections: - configuration_record_crc_parity for the configuration record part subsection, - slice_crc_parity for the slice subsection.
LumaPlane(), CbPlane(), CrPlane() and AlphaPlane() are actually same; the order of planes is already defined in the General section and has no impact on the bitstream. Reduced to one Plane( p ) call. LumaLine(), CbLine(), CrLine() and AlphaLine() are actually same; the order of lines is already defined in the General section and has no impact on the bitstream. Reduced to one Line( p, y ) call. plane_count name may be misleading (it is the count of quant_table_index, which is not always the count of planes) and does not exist in the bistream, replaced by the sum of existing bitstream elements. colorspace_type related "if" sorted in ascending order.
Explicit information about which micro_version is not part of the specifications and explicit information about what a decoder should do depending of the micro_version value, per version.
The HTML output from Lyx is difficult to read when there are complex "Labeling" blocks (e.g. with carriage return or arrays). Additionally, a "Description" may fit better the purpose of the content.
The goal is to have a better view of the definition of each FFV1 bitstream field, including the definition of all acceptable values per field and a list of the reserved values for future use. It is as much as possible a copy of the content already in the document.
- b may be confused with boolean not Range coded - v is not common for unsigned values - xxBE has not the same writing model as others and is too specific (e.g. 8BE exists in specs but is not defined) - added "r" in order to be clear it is not a fixed size, it is "Range" coded - Golomb Rice coded have a "g" suffix
Signed-off-by: Michael Niedermayer <email@example.com>