Ut Video

From MultimediaWiki
Jump to navigation Jump to search

A GPL v2+ decoder/encoder is available: http://forum.doom9.org/showthread.php?t=143624

Extradata format

All data is stored in 32-bit little-endian words.

 32 bits - encoder version (every byte corresponds to subverion)
 32 bits - big-endian tag for source format
 32 bits - frame information size (should be always 4)
 32 bits - encoding flags:
           0x00000001 - Huffman compression is used
           0x00000800 - interlaced source
           0xFF000000 - mask for the number of slices minus one

Frame format

Frame consists of several planes and one dword of frame information.

Planes data consist of:

  • 256 bytes of Huffman code length
  • slice end offsets
  • slice data

Huffman code generation is trivial, in resulting codes the longest code has zero prefix, the shortest code is all ones.

Every slice in a frame is encoded with the same Huffman code set, start line for the slice is (height * slice_number) / number_of_slices.

Frame information contains prediction methods (by mask 0x00000300):

  • no prediction employed
  • left neighbour prediction (continuous for the whole slice)
  • gradient prediction
  • median prediction

Currently only left neighbour predictions seems to be used.

For RGB data planes are stored in G, R, B order with red and blue components being a different to correspondent green value.