diff mbox

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

Message ID 20190117101425.GM3501@michaelspb
State Not Applicable
Headers show

Commit Message

Michael Niedermayer Jan. 17, 2019, 10:14 a.m. UTC
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@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?

Test filter-palettegen-2 failed. Look at tests/data/fate/filter-palettegen-2.err for details.
make: *** [fate-filter-palettegen-2] Error 1

[...]
diff mbox

Patch

--- ./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