FVF

From MultimediaWiki
Jump to navigation Jump to search

FVF is a format used for cutscenes in Star Trek: The Next Generation - "A Final Unity" game.

File structure

All data is little-endian. Data is grouped into frames that are grouped into blocks aligned to at least 2048 bytes. Audio is stored as unpacked PCM, video is compressed with the licensed Iterated Systems Fractal Codec.

Header:

 4 bytes - "FVF "
 4 bytes - unknown
 4 bytes - unknown
 4 bytes - unknown
 4 bytes - first block offset
 4 bytes - last block offset
 4 bytes - image header (should be 0x60)
 4 bytes - audio header (usually 0xB5)
 64 bytes - unknown

Image header:

 2 bytes - header size? (usually 40)
 2 bytes - always 1?
 2 bytes - always 16?
 2 bytes - width
 2 bytes - height
 4 bytes - delay in milliseconds
 4 bytes - unknown
 4 bytes - number of frames
 4 bytes - unknown
 2 bytes - unknown
 1 byte  - palette something
 1 byte  - number of palette entries (usually 15)
 4 bytes - palette offset (usually 0x88)
 6 bytes - unknown

Audio header:

 2 bytes - compression? (usually it's 1 and raw PCM)
 2 bytes - number of channels?
 2 bytes - bits per sample (usually 8)
 2 bytes - sampling rate
 8 bytes - unknown

Block header:

 2 bytes - header size (should be 16)
 2 bytes - flags
 4 bytes - previous block size
 4 bytes - current block size
 4 bytes - next block size

Frame header:

 2 bytes - header size (should be 24)
 4 bytes - full size
 4 bytes - always 24?
 4 bytes - video part size
 4 bytes - audio part size
 6 bytes - unknown

Video frame data is in the same format as VfW variant of the codec, audio part starts with 32-bit size followed by PCM data.