The FFV1 ecosystem
It is not only about code
Jérôme Martinez
MediaArea.net
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!
Wrap-up
- 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