SEQ: Difference between revisions
Jump to navigation
Jump to search
m (Reverted edits by Ng2C6t (Talk); changed back to last version by Multimedia Mike) |
(link to samples) |
||
(One intermediate revision by one other user not shown) | |||
Line 1: | Line 1: | ||
* Extension: seq | * Extension: seq | ||
* Samples: http://samples.mplayerhq.hu/game-formats/tiertex_seq/ | |||
SEQ files are an [[FMV]] format used in the game [http://www.mobygames.com/game/dos/flashback-the-quest-for-identity Flashback: The Quest for Identity]. | SEQ files are an [[FMV]] format used in the game [http://www.mobygames.com/game/dos/flashback-the-quest-for-identity Flashback: The Quest for Identity]. | ||
Line 35: | Line 36: | ||
[[Category:Video Codecs]] | [[Category:Video Codecs]] | ||
[[Category:Game Formats]] | [[Category:Game Formats]] | ||
[[Category:Formats missing in FFmpeg]] |
Latest revision as of 23:11, 30 March 2008
- Extension: seq
- Samples: http://samples.mplayerhq.hu/game-formats/tiertex_seq/
SEQ files are an FMV format used in the game Flashback: The Quest for Identity.
These files always contain one video stream in own format with image size 256x128 and 22 kHz 16-bit mono PCM audio.
File Format
Data is stored in 6144-byte frames without any header. Each frame may contain sound data, palette data and up to 3 video frames data. Frame structure:
bytes 0- 1 - sound data offset (0 = no sound) bytes 2- 3 - palette data offset (0 = no palette) byte 4 - what buffer to use (255 = skip) byte 5 - frame num 1 byte 6 - frame num 2 byte 7 - frame num 3 bytes 8- 9 - video data offset 1 bytes 10-11 - video data offset 2 bytes 12-13 - video data offset 3 bytes 14-15 - video data end
Video Codec
Frame data is divided into 8x8 blocks, each block may be compressed with one of four methods. Those 2-bit method indices are packed in 16-bit little-endian words and stored in frame header. Methods:
- 0 - skip block
- 1 - most advanced coding mode. Data may be packed with RLE scheme described below or vector quantization (lookup table and 1-4 bits on index)
- 2 - raw block
- 3 - partial update of block, data is stored in pairs (skip, value) where skip = (x + y*8 + last*128), if last = 1 then end decoding, else put (value) at position (x,y)
RLE Packing
RLE data is also stored operations first, pixel data later. Operation byte consists of two signed nibbles, each meaning:
if (n < 0) then set (-n) pixels to the next value else read (n) pixels values