[FFmpeg-devel] [PATCH] palettegen: Fill with last color, not black

Michael Niedermayer michael at niedermayer.cc
Thu Jan 17 12:14:25 EET 2019


On Thu, Jan 17, 2019 at 09:44:47AM +0100, Clément Bœsch wrote:
> On Wed, Jan 16, 2019 at 01:40:20PM +0100, Tomas Härdin wrote:
> > Hi
> > 
> > I was helping the fine folks at peppercarrot.com with web video
> > nonsense, and I notice palettegen outputs more colors than it should
> > due to padding the generated palette with pure black.
> > 
> > Compare this (ffmpeg version 3.2.12-1~deb9u1):
> > http://www.härdin.se/files/peppercarrot_gif/output-blackspecks-64.gif
> > with this (282a471 with this patch applied):
> > http://www.härdin.se/files/peppercarrot_gif/output-fixed-64.gif
> > 
> > The attached patch fixes this by padding with the last color instead of
> > black.
> > 
> > /Tomas
> 
> > From 3a01f62fdcc95cc7afaf5aa6e439b8742cce43bc Mon Sep 17 00:00:00 2001
> > From: =?UTF-8?q?Tomas=20H=C3=A4rdin?= <tjoppen at acc.umu.se>
> > Date: Wed, 16 Jan 2019 13:07:48 +0100
> > Subject: [PATCH] palettegen: Fill with last color, not black
> > 
> > If we fill with black then the generated palette will have one color more
> > than what the user requested. This also resulted in unwanted black specks in
> > the output of paletteuse, especially when generating small palettes.
> > ---
> >  libavfilter/vf_palettegen.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/libavfilter/vf_palettegen.c b/libavfilter/vf_palettegen.c
> > index 5ff73e6b2b..44323782d2 100644
> > --- a/libavfilter/vf_palettegen.c
> > +++ b/libavfilter/vf_palettegen.c
> > @@ -245,7 +245,7 @@ static void write_palette(AVFilterContext *ctx, AVFrame *out)
> >                      av_log(ctx, AV_LOG_WARNING, "Dupped color: %08"PRIX32"\n", pal[x]);
> >                  last_color = pal[x];
> >              } else {
> > -                pal[x] = 0xff000000; // pad with black
> > +                pal[x] = last_color; // pad with last color
> >              }
> >          }
> >          pal += pal_linesize;
> 
> Code LGTM, thanks
> 

> No FATE change?

--- ./tests/ref/fate/filter-palettegen-2	2019-01-15 01:24:17.530911114 +0100
+++ tests/data/fate/filter-palettegen-2	2019-01-17 11:13:21.077198948 +0100
@@ -3,4 +3,4 @@
 #codec_id 0: rawvideo
 #dimensions 0: 16x16
 #sar 0: 1/1
-0,          0,          0,        1,     1024, 0x906ff5aa
+0,          0,          0,        1,     1024, 0x23e072c8
Test filter-palettegen-2 failed. Look at tests/data/fate/filter-palettegen-2.err for details.
make: *** [fate-filter-palettegen-2] Error 1

[...]


-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

In fact, the RIAA has been known to suggest that students drop out
of college or go to community college in order to be able to afford
settlements. -- The RIAA
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20190117/d78d6799/attachment.sig>


More information about the ffmpeg-devel mailing list