aspose.info
EN

VP6 - TrueMotion Video File

Updated

What is a VP6 file?

VP6 is a lossy compression video format that was introduced by On2 technologies in May 2003. It is a part of series of video codecs developed by TrueMotion including V3, V4 and V5. The format was used shortly in broadcasting field such as with BBC reports and QuickLink software. VP6 was succeeded by VP7 Codec in January 2005 with better compression compatibility.

VP6 File Format

Complete specifications for V6 files are not available publicly. On2 made the specifications public initially but soon these were made non-available for general users. An unofficial documentation of the VP6 file format is available at multimedia wiki that can be referred for developer’s reference.

Macroblocks (MB)

Similar to MPEG-2, MPEG-4 parts 2 and 10, each video frame of a VP6 file is composed of an array of 16x16 macroblocks (MB). Each MB can be in one of the following modes:

  • Intra MB
  • Inter MB, null MV, previous frame reference
  • Inter MB, differential MV, previous frame reference
  • Inter MB, four MVs, previous frame reference
  • Inter MB, MV 1, previous frame reference
  • Inter MB, MV 2, previous frame reference
  • Inter MB, null MV, bookmarked frame reference
  • Inter MB, differential MV, bookmarked frame reference
  • Inter MB, MV 1, bookmarked frame reference
  • Inter MB, MV 2, bookmarked frame reference

Frame Header

The frame header of a VP6 is as shown below that follows the big-endian bit packing.

SyntaxNumber of bitsTypeSymantecs
frame_mode1Enum0x0 signifies an intra frame
qp6UnsignedQuantization parameter valid range 0..63
marker1Constant0=VP61/62, 1=VP60
if (frame_mode == 0) {0equals to INTRA_FRAME
version5Constant6=VP60/61, 7=VP60(Electronic Arts), 8=VP62
version22Constant0=VP60, 3=VP61/62
interlace1Booleantrue (1) means interlace will be used
if (marker==1 or version2==0) {
offset16Unsignedsecondary buffer offset (bytes releative to start of buffer)
}
dim_y8UnsignedMacroblock height of video
dim_x8UnsignedMacroblock width of video
render_y8UnsignedDisplay height of video
render_x8UnsignedDisplay width of video
}else{
if (marker==1 or version2==0) {
offset16UnsignedSecondary buffer offset (bytes releative to start of buffer)
}
}

References

See also