Creative YUV: Difference between revisions

From MultimediaWiki
Jump to navigation Jump to search
No edit summary
 
m (note the mirror)
 
(6 intermediate revisions by 3 users not shown)
Line 1: Line 1:
* FOURCCs: CYUV
''This page is based on the document 'Simple YUV Coding Formats' by Mike Melanson found at [http://multimedia.cx/simple-yuv.txt http://multimedia.cx/simple-yuv.txt]''.
 
* FourCC: CYUV
* Company: [[Creative]]
* Company: [[Creative]]
* Technical Description: [http://www.csse.monash.edu.au/~timf/videocodec/cyuv.txt http://www.csse.monash.edu.au/~timf/videocodec/cyuv.txt], [http://multimedia.cx/simple-yuv.txt http://multimedia.cx/simple-yuv.txt]
* Alternate Technical Description: http://www.csse.monash.edu.au/~timf/videocodec/cyuv.txt ([[Mirrored Files|mirrored]])
* Samples: [http://samples.mplayerhq.hu/V-codecs/CYUV/ http://samples.mplayerhq.hu/V-codecs/CYUV/]
 
Creative YUV is a constant-rate, differentially coded, packed YUV compression method. The codec essentially codes each Y, U, and V sample as 4 bits with some overhead at the start of each line. The codec operates on a [[YUV 4:1:1]] colorspace which means that each group of 4 pixels on a line has 1 Y sample per pixel, but only 1 of each C sample for the entire group.
 
== Data Format ==
 
A chunk of CYUV-encoded data is laid out as:
 
  bytes 0-15    signed Y predictor byte values
  bytes 16-31  signed U predictor byte values
  bytes 32-47  signed V predictor byte values
  bytes 48..    lines of CYUV-encoded data
 
The format of each line is as follows:
 
  byte 0
    bits 7-4  initial U sample and predictor for line
    bits 3-0  initial Y sample and predictor for line
  byte 1
    bits 7-4  initial V sample and predictor for line
    bits 3-0  next Y predictor index
  byte 2
    bits 7-4  next Y predictor index
    bits 3-0  next Y predictor index
  bytes 3..  remaining predictor indices for line
 
The first 3 bytes contain the setup information for the line. Each initial sample (Y, U, and V) actually represents the top 4 bits of the initial 8-bit sample. The initial sample also serves as the initial predictor. For each of the 3 Y predictor indices, use the 4-bit value to index into the table of 16 Y predictors, encoded at the start of the frame. Apply each predictor to the previous Y value.
 
At this point, the first group of 4 pixels will be decoded. For each group of 4 pixels remaining on the line:
 
  byte 0
    bits 7-4  next U predictor index
    bits 3-0  next Y predictor index
  byte 1
    bits 7-4  next V predictor index
    bits 3-0  next Y predictor index
  byte 2
    bits 7-4  next Y predictor index
    bits 3-0  next Y predictor index
 
For each predictor index, use the 4 bits to index into the appropriate predictor table and apply the predictor to the previous sample of the same type (Y, U, or V) and output the sample.


Creative YUV is a constant-rate, differentially coded, packed YUV compression method.
[[Category:Video Codecs]]

Latest revision as of 19:45, 24 October 2007

This page is based on the document 'Simple YUV Coding Formats' by Mike Melanson found at http://multimedia.cx/simple-yuv.txt.

Creative YUV is a constant-rate, differentially coded, packed YUV compression method. The codec essentially codes each Y, U, and V sample as 4 bits with some overhead at the start of each line. The codec operates on a YUV 4:1:1 colorspace which means that each group of 4 pixels on a line has 1 Y sample per pixel, but only 1 of each C sample for the entire group.

Data Format

A chunk of CYUV-encoded data is laid out as:

 bytes 0-15    signed Y predictor byte values
 bytes 16-31   signed U predictor byte values
 bytes 32-47   signed V predictor byte values
 bytes 48..    lines of CYUV-encoded data

The format of each line is as follows:

 byte 0
   bits 7-4  initial U sample and predictor for line
   bits 3-0  initial Y sample and predictor for line
 byte 1
   bits 7-4  initial V sample and predictor for line
   bits 3-0  next Y predictor index
 byte 2
   bits 7-4  next Y predictor index
   bits 3-0  next Y predictor index
 bytes 3..   remaining predictor indices for line

The first 3 bytes contain the setup information for the line. Each initial sample (Y, U, and V) actually represents the top 4 bits of the initial 8-bit sample. The initial sample also serves as the initial predictor. For each of the 3 Y predictor indices, use the 4-bit value to index into the table of 16 Y predictors, encoded at the start of the frame. Apply each predictor to the previous Y value.

At this point, the first group of 4 pixels will be decoded. For each group of 4 pixels remaining on the line:

 byte 0
   bits 7-4  next U predictor index
   bits 3-0  next Y predictor index
 byte 1
   bits 7-4  next V predictor index
   bits 3-0  next Y predictor index
 byte 2
   bits 7-4  next Y predictor index
   bits 3-0  next Y predictor index

For each predictor index, use the 4 bits to index into the appropriate predictor table and apply the predictor to the previous sample of the same type (Y, U, or V) and output the sample.