[FFmpeg-devel] lavfi state of affairs

Kostya kostya.shishkov
Fri Feb 6 13:14:05 CET 2009


On Fri, Feb 06, 2009 at 11:16:42AM +0100, Michael Niedermayer wrote:
> On Fri, Feb 06, 2009 at 09:43:44AM +0200, Kostya wrote:
> > On Thu, Feb 05, 2009 at 11:02:24PM +0100, Michael Niedermayer wrote:
> > > On Thu, Feb 05, 2009 at 12:36:55PM -0800, Baptiste Coudurier wrote:
> > > > Hi Michael,
> > > > 
> > > > On 2/5/2009 12:21 PM, Michael Niedermayer wrote:
> > > > 
> > > > Sorry but if _you_ want imgconvert dropped, _you_ have to make some 
> > > > efforts too.
> > >
> > > Dont you think its a little offensive to ask the one who probably spend more
> > > efforts on sws than anyone else to make some effort "too" ?
> > > Also i dont mind fixing technical issues and cleanliness ones, but i will
> > > not rewrite the GPL code. There are people who want the yuv table generator
> > > to be under LGPL, they can rewrite it but IMHO they should not block the
> > > removial of cruft if they decide not to.
> > > And i know you are an excelent developer, you could likely rewrite the darn
> > > table generator in less than 2 hours.
> > 
> > Well, I think I can do that (if I find the requirements to it). 
> 
> there are
>  void * yuvTable;            // pointer to the yuv->rgb table start so it can be freed()
>     uint8_t * table_rV[256];
>     uint8_t * table_gU[256];
>     int    table_gV[256];
>     uint8_t * table_bU[256];
> in the sws context
> 
> their use in swscale should make it obvious what they contain.
> 
> simply dumping the contents and the pointers (overlap) for the tables
> should also make it clear what they contain for the various pix_fmts
 
ok, I'll try to work on that at this weekend. 
 
> > 
> > [...]
> > > > 
> > > > Also libswscale does not support palette output, this makes GIF encoder 
> > > > _useless_.
> > > 
> > > swscale supports 4bit and 8bit palette output with a fixed palette
> > > imgconvert supportes 8bit with a fixed palette
> > > swscale supports ordered dither providing MUCH higher quality over imgconvert
> > > imgconvert uses only 216 of 256 colors, swscale uses all.
> > > imgconvert does 6 divisions and modulo operations per pixel for pal8
> > > output swscales does 0
> > > and gif.c has the imgconvert palette hardcoded. Which id say is not such
> > > a bright idea ...
> > > besides imgconvert calls functions from gif.c (much cleaner design than
> > > sws, which is selfcontained ;)
> >  
> > Now we have libavcodec/elbg.[ch] which cries "Wanna have good palette for each frame?
> > Ooh, pick me!"
> 
> i dont want to ruin your dream but elbg is not that good for palettes, it
> might very well be good enough (and surely is better than nothing) 
> but thats a different thing.
> 
> To see the problem, consider a grayscale image from 0..255 with each color
> occuring approximately equally often. and a 2 color palette
> elbg will give you something like one color at 64 and one at 192 which will
> effectively clip 50% of the image off as its not representable anymore.
> 
> The problem is elbg assumes that only the colors themselfs can be represented,
> that way it will try to place the colors where colors occur most often and
> thus loose the ability to represent the more extreem corners.
> But due to dither intermediate points like 50% color A 50% color B are very
> well representable while the same distance outside the A-B line is not.

I think one can always construct an image that will be bad for any given algorithm.
And with harsh quantizing a lot of information may be lost.

It should be good enough for spheric viewer in vacuum though ;)
 
> > That's another trivial patch (for imgconvert though, for swscale some
> > dependencies should be resolved) noone has produced yet :(
> 
> > And personally I'd like to have decent PAL8 encoding support.
> 
> me too but elbg as such might not be the best solution

It's far superior than current solution though.
 
> [...]
> -- 
> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB




More information about the ffmpeg-devel mailing list