[FFmpeg-devel] [PATCH] Adding Cinepak encoder (attached)

u-owvm at aetey.se u-owvm at aetey.se
Wed Jan 22 10:10:25 CET 2014

Hello Michael,

Thanks for the feedback.

On Wed, Jan 22, 2014 at 03:45:13AM +0100, Michael Niedermayer wrote:
> > I perceive the quality as corresponding to windows binary encoder,
> > being achieved at about/under half the bitrate.
> that sounds nice but what about speed ?
> in a quick test matrixbench is encoded with 0.3fps

Yes, the encoder is simple, straightforward (using brute force in some
places) and slow. For the moment I have no plans for making it faster
even though this certainly is possible, especially by sacrificing R/D.

Unfortunately, vintage compatibility (the strip number limit in the
first hand) makes the quality worse and the encoding slower. But given
the lack of an official bitstream definition it is the vintage decoders
who "define" what cinepak is.

Cinepak is interesting for its extremely wide compatibility and extremely
lightweight/fast decoder. To make a fast yet efficient _en_coder would
be nice of course, if someone takes the challenge.

> the first patch contains no license header, the 2nd adds a BSD style
> license, please clarify under which license the first patch is ?
> If it is BSD then it should already contain a matching license header
> otherwise some other license has to be included.

Tomas confirmed earlier by mail that BSD license is fine, I can move it
to the first patch, even though it was me who added it to the file.

> Also who is the author of the patches?
> if the author of the first patch is Tomas H?rdin then please set the
> author of the commit correctly (git commit --amend --author ...)

I am not completely sure about the meaning "author of the patch" versus
"person doing the commit". Well, no problem to do the opposite, indicating
him as the commit author and myself in the commit message.

> [...]
> > +
> > +#include <assert.h>
> see libavutil/avassert.h
> [...]
> > +    for(int v1enough = 0, v1_size = SMALLEST_CODEBOOK; v1_size <= CODEBOOK_MAX && !v1enough; v1_size <<= 2) {
> > +        for(int v4enough = 0, v4_size = 0; v4_size <= v1_size && !v4enough; v4_size = v4_size ? v4_size << 2 : v1_size >= SMALLEST_CODEBOOK << 2 ? v1_size >> 2 : SMALLEST_CODEBOOK) {
> some compilers dont like for(int ...

Sure, will change.


More information about the ffmpeg-devel mailing list