Difference between revisions of "FFV1"

From MultimediaWiki
Jump to navigation Jump to search
(Frame)
Line 3: Line 3:
  
 
The FFV1 video codec is a simple and efficient lossless intra-frame only codec.  
 
The FFV1 video codec is a simple and efficient lossless intra-frame only codec.  
 +
 +
Multiple version of the codec are available. ([[User:Lu zero|lu_zero]] Describe only version 2?)
  
 
== Bitstream structure ==
 
== Bitstream structure ==
Line 38: Line 40:
  
 
=== Frame ===
 
=== Frame ===
Each frame is composed by a small header and the frame data in slices
+
Each frame is composed by a small header and the frame data in slices.
 +
Version 0 and 1 use a larger per frame header, version 2 and later store
 +
only the initial 1bit Range Coded keyframe flag.
 +
Depending on the version the slice data provides additional information,
 +
a specific quantization table and a redundancy check.
  
 
==== Header ====
 
==== Header ====
  
===== Version 1 =====
+
Version 0 and 1 use a large per frame header, version 2 and later store
Version 0 and 1 use only the per frame header defined as following.
+
only the initial 1bit Range Coded keyframe flag.
  
===== Version 2 =====
+
==== Slice ====
Version 2 and later store only the initial 1bit Range Coded keyframe flag.
 
  
==== Slice ====
+
Version 2 slice has the following structure
  
 
== Frame Encoding ==
 
== Frame Encoding ==

Revision as of 05:38, 19 October 2012

The FFV1 video codec is a simple and efficient lossless intra-frame only codec.

Multiple version of the codec are available. (lu_zero Describe only version 2?)

Bitstream structure

Global Header

Version 1 does not have a global header, from version 2 the following field compose the global header.

  • version
  • minor version
  • coder type
  • state transition table
  • colorspace type
  • bits per sample
  • chroma_planes
  • horizontal subsampling
  • vertical subsampling
  • alpha plane presence
  • number of horizontal slices
  • number of vertical slices
  • quantization tables
  • error correction
  • cyclic redundancy check

Frame

Each frame is composed by a small header and the frame data in slices. Version 0 and 1 use a larger per frame header, version 2 and later store only the initial 1bit Range Coded keyframe flag. Depending on the version the slice data provides additional information, a specific quantization table and a redundancy check.

Header

Version 0 and 1 use a large per frame header, version 2 and later store only the initial 1bit Range Coded keyframe flag.

Slice

Version 2 slice has the following structure

Frame Encoding

Prediction

Quantization

Colorspace

Value encoding modes

Range coding

Huffman coding