QDraw: Difference between revisions

From MultimediaWiki
Jump to navigation Jump to search
No edit summary
m (revert spam)
Line 30: Line 30:
   while (remaining bytes in compressed line)
   while (remaining bytes in compressed line)
     code = next byte in encoded frame
     code = next byte in encoded frame
     if (top bit is set (code
     if (top bit is set (code & 0x80))
      output next byte in encoded frame to decoded frame (257-code)
        times
    else
      copy (code + 1) bytes from encoded frame to decoded frame
 
[[Category:Video Codecs]]

Revision as of 03:57, 8 March 2006

This page is based on the codec description written by Konstantin Shishkov found in the document Description of the Apple Quicktime Animation (RLE) Format located at http://multimedia.cx/qtrle.txt.

  • FOURCCs: qdrw
  • Company: Apple

QDraw is another RLE format supported by the Quicktime multimedia system. It is identified by the FOURCC 'qdrw'. QDraw frames contain palettized 8-bit pixel data and transport their own palette data within frames.

Data Format

All multi-byte numbers are encoded in big-endian format.

An encoded QDraw frame is laid out as follows:

 bytes 0-103    unknown
 bytes 104-107  number of colors - 1
 bytes 108..    color table (8 bytes per entry)

One color table entry is laid out as:

 byte 0-1   index of palette table entry to replace
 byte 2-3   16-bit red component
 byte 4-5   16-bit green component
 byte 6-7   16-bit blue component

Thus, the color table can update arbitrary entries in the palette.

Following the color table are 18 undetermined bytes. After these bytes, there is a series of RLE-encoded lines. For each line in the image:

 first 2 bytes indicate size in bytes of compressed line
 while (remaining bytes in compressed line)
   code = next byte in encoded frame
   if (top bit is set (code & 0x80))
     output next byte in encoded frame to decoded frame (257-code) 
        times
   else
     copy (code + 1) bytes from encoded frame to decoded frame