Fraps
- FourCC: FPS1
- Company: Fraps
- Samples: http://samples.mplayerhq.hu/V-codecs/FPS1/
The Fraps video codec is used to store in real-time data that is captured from high frame-rate computer games played on Windows PCs.
There are at least 3 versions of the codec that are all used with the same FOURCC. v0 is a reordered YUV420, v1 is an upside-down BGR24 encoding, v2 - the most commonly found variant - is Huffman-coded YUV420 planes, v4 is virtually the same as v2 but codes only one plane (i.e. grayscale).
Version 2 format and encoding
All data is stored in 32-bit little-endian words. If frame size is 8 bytes long then repeat previous frame otherwise proceed to frame decoding.
Frame header
bytes 0- 7 - should be ignored bytes 8-11 - 'FPSx' bytes 12-15 - offset to the Y plane (minus 8), should be always 16 bytes 16-19 - offset to the U plane (minus 8) bytes 20-23 - offset to the V plane (minus 8)
Plane format
First 256 words (1 kB) of plane data are symbol frequencies used to construct Huffman tree. The rest of data represents bitstream packed into 32-bit words, MSB first.
Lines are coded as difference to the previous lines. For Y plane the line with index -1 should contain all zeroes, for chroma planes - all 128.