[FFmpeg-devel] FFV1.3

Peter B. pb at das-werkstatt.com
Wed Aug 8 02:08:55 CEST 2012

On 04/20/2012 03:50 PM, Michael Niedermayer wrote:
> Ive just commited some changes to the ffv1 codec v1.3
Sorry it took so incredibly long.
Funny video-archivist's "everyday adventures" to master and
video-mysteries to solve! - that's what stole my time! :)

Here's a quick summary of my FFv1.3 tests:

1) YUV Colorspaces:
Script tries to create files in any colorspace supported by ffmpeg. The
logs then show which pix_fmts actually got encoded.

2) Losslessness:
A set of reference framemd5 files for each colorspace is generated once.
Afterwards, all video files created with different options for
ffv1-encoding are then framemd5-compared to those references: So far,
all match as they should!

3) Performance:
I haven't summarized the transcoding performance in numbers yet, because
I did my tests on an external USB drive, so the numbers aren't
representative, as I expect disk I/O to be a factor for the fps count.
The test-setup was to have different options for threads, slices and

Here are some rough results from my machine:
(NOTE: All values apply to a VHS PAL yuv422p source and transcoding
running on an Intel Quadcore i7-2600K @ 3.40 GHz)

 == yuv420p
ffv1.1 -> ffv1.1 : 21 fps
ffv1.1 -> ffv1.3 : 28 fps
ffv1.3 -> ffv1.3 : 50 fps

== yuv422p
ffv1.1 -> ffv1.1 : 20 fps
ffv1.1 -> ffv1.3 : 28 fps
ffv1.3 -> ffv1.3 : 45 fps

== yuv444p
ffv1.1 -> ffv1.1 : 17 fps
ffv1.1 -> ffv1.3 : 20 fps
ffv1.3 -> ffv1.3 : 20 fps

4) Bit error resilience:
I'm using the tool "zzuf" to fuzz the differently encoded files.
Several levels of damage are simulated, then the impact is checked:
effect on playability, stability, artefacts, a/v sync.
This part of the test-suite is still work in progress, as I'd like to
have some meaningful fuzzing-parameters for zzuf.

So far I can say that using slices makes the image contentually more
robust, as only the slice is broken.
With a FFv1.1 encoded video, the whole frame falls apart into
LSD-rainbows ;)

5) Aspect ratio:
I was surprised to see that the aspect ratio is already stored somehow
in a FFv1.1 stream:
I've produced AVIs which played back anamorphic videos correctly using
ffmpeg/ffprobe also read the DAR correctly from the file, although AVIs
can't store the aspect ratio (right?).
Any other player tried so far did not handle ffv1's aspect ratio, but
that was to be expected, as this feature is now new in ffv1.

Does anyone of you know how the support for ffv1.3 within VLC will
assumably proceed, after Michael marks it as non-experimental?
I've heard that VideoLAN is using their own library fork, but based on
libav instead of ffmpeg. Is that true?

6) Filesize:
The filesizes are the size of the transcoded "per-Minute-AVI".

Original (yuv422p, ffv1.1): 431.5 MB

== yuv420p
ffv1.1 -> ffv1.1 : 339.7 MB
ffv1.1 -> ffv1.3 : 352.6 MB
ffv1.3 -> ffv1.3 : 352.6 MB

== yuv422p
ffv1.1 -> ffv1.1 : 429.0 MB
ffv1.1 -> ffv1.3 : 444.4 MB
ffv1.3 -> ffv1.3 : 444.4 MB

== yuv444p
ffv1.1 -> ffv1.1 : 461.3 MB
ffv1.1 -> ffv1.3 : 475.3 MB
ffv1.3 -> ffv1.3 : 475.3 MB

I will try to get my hands on real xxx444p16 material in order to get
more realistic filesizes for a >422p8 source.
Then I'll get all those numbers together and in a proper shape for a
proper ffv1 reference paper.

More information about the ffmpeg-devel mailing list