Difference between revisions of "Bink Container"

From MultimediaWiki
Jump to navigation Jump to search
m (Update samples link)
(fix offset of 'audio channels' field in header)
Line 27: Line 27:
 
   bytes 36-39  unknown
 
   bytes 36-39  unknown
 
   bytes 40-43  audio flag: if 0, header ends; if 1, header continues;
 
   bytes 40-43  audio flag: if 0, header ends; if 1, header continues;
     bytes 44-45  audio channels (1 or 2)
+
     bytes 44-45   unknown
    bytes 46-47  unknown
+
    bytes 46-47   audio channels (1 or 2)
 
     bytes 48-49  audio sample rate
 
     bytes 48-49  audio sample rate
 
     bytes 50-55  unknown
 
     bytes 50-55  unknown

Revision as of 11:39, 3 January 2007

This page is based on the document 'Description of the Bink File Format' by Mike Melanson at http://multimedia.cx/bink-format.txt.

Bink files are multimedia files used in a variety of video games, both on personal computers platforms and video game consoles. The files act as containers for data compressed with the proprietary Bink video and audio codecs. Bink multimedia files are known to bear the .bik extension.

File Format

This description is known to be incomplete.

All multi-byte numbers are stored in little endian format.

Bink files appear to start with a 56-byte header which is laid out as follows:

 bytes 0-2     file signature ('BIK')
 byte 3        possibly a file version number (e.g., 0x68, 0x69)
 bytes 4-7     file size not including the first 8 bytes
 bytes 8-11    number of frames
 bytes 12-15   largest frame size in bytes
 bytes 16-19   number of frames again?
 bytes 20-23   video width
 bytes 24-27   video height
 bytes 28-31   video frames per second
 bytes 32-35   image format
 bytes 36-39   unknown
 bytes 40-43   audio flag: if 0, header ends; if 1, header continues;
   bytes 44-45   unknown
   bytes 46-47   audio channels (1 or 2)
   bytes 48-49   audio sample rate
   bytes 50-55   unknown

Following the header is a sample offset table. The number of entries in the table is equal to the number of samples specified in the header. Each entry consists of a 32-bit absolute offset for that sample. There is no length information, so the length of a sample is implicitly the difference between sample offsets. One frame contains both audio and video data (if both are present it the file). Bytes 12-15 (largest frame size) probably exist to provide the playback application with the largest single buffer it will have to allocate.