FFV1: Difference between revisions

From MultimediaWiki
Jump to navigation Jump to search
No edit summary
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