Here is what I currently know about Fraps v2 (v1 is supported by FFmpeg):
- all data is stored in 32-bit little-endian words
- first word indicates codec version and flag 0x8000000 – delta frame
- second word is zero
- next word is ‘FPSx’ magic
- next three words are offsets in frame (from position 8) to packed YUV planes
- each plane starts with 256 words – frequencies for each possible value
- the rest of data is bits packed in words
- each bit looks like an input to state machine which outputs pair (value, skip) and changes its internal state
- the rest is still needs to be figured out
What do you make of the fact that the binary Win32 Fraps codec claims that it seems a Pentium III or better CPU?
It uses SSE for such things as memset(), memcpy() yuv2rgb and a lot of prefetches.