Hi folks, I've been trying to improve GIF support even more recently. This is the result: http://lucy.pkh.me/gone-nutty-current.gif → http://lucy.pkh.me/gone-nutty.gif
How it works in 2 lines: ffmpeg -i in -vf palettegen -y palette.png ffmpeg -i in -i palette.png -lavfi paletteuse out.gif The +: • 1 single optimal palette for the whole stream • no high memory requirement (works in 2 pass) • obviously better quality The -: • indecent size because the dithering is way too noisy, and as a result the transparency mechanism of GIF is inefficient (or worse: -gifflags -transdiff to disable it often makes the output smaller) If someone has a suggestion for the dithering, please stand up. Small summary: Changelog | 1 + doc/filters.texi | 55 +++++++ libavcodec/gif.c | 53 +++++- libavfilter/Makefile | 2 + libavfilter/allfilters.c | 2 + libavfilter/version.h | 4 +- libavfilter/vf_palettegen.c | 382 ++++++++++++++++++++++++++++++++++++++++++++ libavfilter/vf_paletteuse.c | 282 ++++++++++++++++++++++++++++++++ libavformat/gif.c | 84 ++++++---- tests/ref/fate/gifenc-pal8 | 346 +++++++++++++++++++-------------------- 10 files changed, 1001 insertions(+), 210 deletions(-) > [PATCH 1/6] avformat/gif: simplify gif_image_write_header() prototype > [PATCH 2/6] avformat/gif: use first packet palette as global for PAL8 > [PATCH 3/6] avcodec/gif: support crop and transparency with PAL8 So these 3 commits are basically to make the GIF support properly PAL8 (one single global palette for the format, and the transparency/crop optimizations .encoder side). > [PATCH 4/6] avfilter: add palettegen filter > [PATCH 5/6] avfilter: add paletteuse filter The 2 main filters, derived from Paul Heckbert paper (1982). It's using a 5-bit component resolution for simplicity, and there are many room for improvement (look for TODO/XXX/FIXME). No FATE test yet, but should be easy to add (no floating point). > [PATCH 6/6] avfilter: bump minor and Changelog document the new (bumping only once at the end, I hope no one mind) _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel