FFV1, which stands for "FF video codec 1", is a lossless intra-frame video codec. It can use either variable length coding or arithmetic coding for entropy coding. The encoder and decoder are part of the free, open-source library libavcodec in the project FFmpeg since June 2003[1]. FFV1 is also included in ffdshow, which makes the video codec available to any Microsoft Windows application that uses system-wide codecs.

Contents

Video archiving [link]

For long-term preservation of digital video sustainable container formats as well as audio/video codecs are necessary. The current proclaimed codecs are Motion JPEG 2000[2] and uncompressed video. FFv1 has turned out to be a viable addition to that choice. With compression ratios comparable to JPEG 2000 lossless and its lower computing requirements, it is already being used by professional archives as their long-term storage codec. The "Österreichische Mediathek", Austria's national audio/video archive has developed a DVA-Profession, a Free Software solution for archive-suitable mass video digitization, using FFv1 for storing their videos. The City of Vancouver Archives is also using FFv1 (in a Matroska container) for long-term storage[3][4].

Prediction process [link]

FFV1 is not strictly an intra-frame format; despite not using inter-frame prediction, it allows the context model to adapt over multiple frames. This can be useful for compression due to the very large size of the context table, but can be disabled to force the encoder to generate a strictly intra-frame bitstream. As the gained compression seems to decrease [5] with later versions of FFv1 (version 2,3), the use of GOP size greater than "1" might disappear in the future.

During progressive scanning of a frame, the difference between a current pixel and its predicted value, judging by neighboring pixels, is sent to the entropy-coding process. The prediction is done as follows:

Prediction = Median( Top, Left, Top + Left - TopLeft )

The third value, "Top + Left - TopLeft", is also known as the gradient, so in simple terms the prediction is the median of the top, left, and gradient prediction methods. For improved performance and simplicity, the edges of the frame are assumed to be zero to avoid special cases. The prediction in encoding and decoding is managed using a ring buffer.

Entropy coding process [link]

The residuals are coded using either variable-length coding or arithmetic coding. Both options use a very large context model. The "small" context model uses (11*11*11+1)/2=666 contexts based on the neighboring values of (Left-TopLeft), (TopLeft-Top), and (Top-TopRight). The "large" context model uses (11*11*5*5*5+1)/2=7563 contexts based on the same values as before, but also (TopTop - Top) and (LeftLeft-Left), where "TopTop" is the pixel two above the current one vertically, and "LeftLeft" is the pixel two to the left of the current one. In arithmetic coding, each "context" actually has 32 sub-contexts used for various portions of coding each residual, resulting in a grand total of 242,016 contexts for the "large" model. The arithmetic coder of FFV1 is very similar to (and based on) that of h.264.

Status [link]

On April 16th, 2006, a commit-message by Michael Niedermayer confirmed that the bitstream of FFv1 (version 1) is fixed[6]:

"ffv1 and ffvhuff havnt changed since a long time and noone proposed any 
changes within 1 month after my warning so they are officially no longer
experimental and we will gurantee decodeability of files encoded with
the currenzt ffv1/ffvhuff in the future"

Current status is that the bitstream (version 1) is fixed since April 2006[6], and the codec is no longer marked as experimental since March 2010[7]. Although its documentation remains incomplete, starting April 2012, efforts are being undertaken in order to improve its documentation. The current version of FFv1's technical specification document can be found on GitHub.

See also [link]

References [link]

External links [link]



https://wn.com/FFV1

Podcasts:

PLAYLIST TIME:

4 Of 2

by: They Might Be Giants

Underneath a big clock
At the corner of 5th Avenue and 22nd Street
I stood and waited for a girl I knew
At the spot where we agreed to meet
It was four minutes of two
At four of two, I stood waiting for the girl
I was four minutes early for the date we had planned
I was planning to say I was in love with her
Just as soon as she showed for a two o'clock date
And the clock said four of two
At four of two, I was staring into space
She was not yet late, according to the clock
I was feeling nervous so I kept looking up
At the clock sticking out of the side of the building
And it still said four of two
At four of two, I began to feel tired
And I rubbed my eyes, and again I checked the time
It seemed as if the sky was growing dark
But I felt reassured when I looked at the clock
And it still said four of two
I lay my head down on the sidewalk
So in case she were coming I would have a better view
But no one was there so I stretched out
And closed my eyes for a second or two
It was four minutes of two
At once I awoke to a futuristic world
There were flying cars and gigantic metal bugs
I'd grown a beard, it was long and white
But I knew that the girl would be coming very soon
For though everything had changed, there was still that clock




×