DosBox Capture Codec: Difference between revisions

From MultimediaWiki
Jump to navigation Jump to search
(started data format description)
(some more ZMBV doc)
Line 13: Line 13:


  bits 7-2  undefined
  bits 7-2  undefined
  bit 1    delta palette
  bit 1    palette change
  bit 0    1 = intraframe, 0 = interframe
  bit 0    1 = intraframe, 0 = interframe


Line 36: Line 36:
  7  24 bits/pixel
  7  24 bits/pixel
  8  32 bits/pixel
  8  32 bits/pixel
Presently, it seems that only modes 4 (8 bpp) and 7 (24 bpp) are supported.
If the compression type is 1, the remainder of the data chunk is compressed using the standard zlib package. Decompress the data before proceeding with the next step. Otherwise, proceed to the next step.
If bit 1 of the frame header (palette change) is set then the first 768 bytes of the uncompressed data represent 256 red-green-blue palette triplets. Each component is one byte and ranges from 0..255.
Next, if the frame is intracoded, the remaining uncompressed data at this point represents the entire frame. If the frame is intercoded then the remainder of the data is coded using blocks and XOR'ing.


'''NOT FINISHED'''
'''NOT FINISHED'''


[[Category:Video Codecs]]
[[Category:Video Codecs]]

Revision as of 22:29, 14 February 2006

This is a codec added to the DosBox project to capture screen data (like Vmware VMNC).

This codec employs ZLIB compression and has intraframes and delta frames. Delta frames seem to have blocks either copied from the previous frame or XOR'ed with some block from the previous frame.

The FourCC for this codec is ZMBV which ostensibly stands for Zip Motion Blocks Video. The data is most commonly stored in AVI files.

Data Format

The first byte of a ZMBV data chunk contains the following flags:

bits 7-2  undefined
bit 1     palette change
bit 0     1 = intraframe, 0 = interframe

If the frame is an intra frame as indicated by bit 0 of byte 0, the next 6 bytes in the data chunk are formatted as follows:

byte 1    major version
byte 2    minor version
byte 3    compression type (0 = uncompressed, 1 = zlib-compressed)
byte 4    video format
byte 5    block width
byte 6    block height

Presently, the only valid major/minor version pair is 0/1. A block width or height of 0 is invalid. These are the video modes presently defined:

0  none
1  1 bit/pixel, palettized
2  2 bits/pixel, palettized
3  4 bits/pixel, palettized
4  8 bits/pixel, palettized
5  15 bits/pixel
6  16 bits/pixel
7  24 bits/pixel
8  32 bits/pixel

Presently, it seems that only modes 4 (8 bpp) and 7 (24 bpp) are supported.

If the compression type is 1, the remainder of the data chunk is compressed using the standard zlib package. Decompress the data before proceeding with the next step. Otherwise, proceed to the next step.

If bit 1 of the frame header (palette change) is set then the first 768 bytes of the uncompressed data represent 256 red-green-blue palette triplets. Each component is one byte and ranges from 0..255.

Next, if the frame is intracoded, the remaining uncompressed data at this point represents the entire frame. If the frame is intercoded then the remainder of the data is coded using blocks and XOR'ing.

NOT FINISHED