The FFV1 ecosystem

It is not only about code

Jérôme Martinez

FFV1: an open & lossless video coding format

  • Old technology
    (no patent for sure)
  • Reference encoder/decoder is FFmpeg
    (open source and widespread)
  • Can be in AVI, MP4, MKV, MXF
    (and more if needed)
  • Good balance between compression and speed
    (for a lossless format)

FFV1: supported pix_fmts,
and more

  • Y, YUV, RGB
  • Also possible with an additional alpha channel
  • 8/10/12/14/16 bits per component
  • Easy multithread ("slices")
  • Integrated checksums
  • Kudos to Michael Niedermayer for the main work

A niche market

  • Not so many people need losslessness
  • And theses people are not rich
  • But it is important for them...

A niche market

  • Not so many people need losslessness
  • And theses people are not rich
  • But it is important for them...
  • ... And us, it is our heritage
  • No compression artefacts!

A niche market

  • Some entities discovered that sponsoring FFV1 development is less costly than buying products on the shelves
  • And other entities discovered how useful is open source for lowering costs
  • But they needed to trust that this choice is sustainable

Code is not enough

  • Need trust in format future and file correctness
  • And not only in A/V
  • Work sponsored by the EU through
    the PREFORMA project:
    helping archives to have checks on their files
    PDF for documents
    TIFF for images
    Matroska/FFV1/PCM for A/V

The IETF standardization

  • IETF CELLAR working group
    (Codec Encoding for LossLess Archiving and Realtime transmission)
  • Focused on lossless compression, and also more
  • Matroska for the container part
  • FFV1 for the video part
  • FLAC for the audio part

The IETF standardization

  • Matroska: EBML, base of Matroska published (RFC 8794)
    Kudos to Steve Lhomme for the main work
  • Matroska core: on the way
  • Matroska codecs, tags: work in progress
  • FFV1: versions 0, 1, 3 published (RFC 9043)
  • FFV1 version 4: need more dev
  • FLAC: on the way (IETF last call)
    Kudos to Martijn van Beurden for the main work
  • Made by volonteers

But not only IETF

  • Not everyone is ready to switch from another container format
  • SMPTE handles the MXF register
  • No SMPTE standard, but... A RDD: RDD 48 Amd 1
    (Registered Disclosure Document)
    Handled by the Library of Congress (USA)
  • FFV1 is officially supported in MXF
  • Metaglue MXF tools has support of mux and demux
  • FFmpeg has support of demux
    (patch for mux on ffmpeg-devel)

Conformance checking

  • Easy manner to be sure that a file is fine
  • Full check of Matroska and FFV1
  • Command line for automation
  • Graphical interface for an easy usage
  • MediaConch dedicated project


A pratical usage

Film archives

  • Lot of DPX files
  • 1 file per image!
  • No compression, huge size

A pratical usage

Film archives

  • Let's use Matroska/FFV1/FLAC!
  • Still huge, but half as huge
    It stills helps especially with Petabytes of content
  • But not all workflows accept them
  • Potential users are not experts
  • And legal commitments to provide exact same files
    (md5sum result need to be same)

A pratical usage

Film archives

  • Several archives have joined forces
  • A tool for filling the gaps between
    what exists and what is needed
  • Focused in bit-by-bit reversibility of the files
    (not only the A/V content)
  • Called RAWcooked
    (more detailled presentation)
  • Using FFmpeg as backend

The future

  • Improvements of encoder or decoder based on FFV1 version 3
  • Is it possible to have a better compression?
  • Main critisism is currently about speed
  • SIMD and/or GPU accelaration may help
  • Then we may see FFV1 version 4 for more features
  • Help welcome!


  • Code is important...
  • ... But not enough
  • Need to make users communicate
  • Need to have formats reviewed by standardization entities
  • And some use cases go beyond just a format
  • Open source helps also niche needs

Stay in touch

Follow us on Mastodon

Follow us on Twitter @MediaArea_net

Jérôme Martinez:


License: CC BY