[v2 PATCH 3/3] windowscodecs: Add support for palette image formats to PNG encoder.

Dmitry Timoshkov dmitry at baikal.ru
Sun Jan 29 08:29:05 CST 2017


Sebastian Lackner <sebastian at fds-team.de> wrote:

> On 27.01.2017 22:28, Vincent Povirk wrote:
> >> +                else
> >> +                {
> >> +                    png_palette[i].red = 0;
> >> +                    png_palette[i].green = 0;
> >> +                    png_palette[i].blue = 0;
> >> +                }
> > 
> > Why is it necessary to pad the palette in this way? Couldn't you just
> > pass the appropriate number of colors?
> > 
> > 
> 
> Clamping to 1 << This->format->bit_depth is necessary (see the comment
> about newer libpng versions), but padding the palette probably isn't,
> at least I'm not aware of any test for it.

It still would be a good idea to test this, a standalone application should
be fine. Although I'd guess this basically depends on libpng (old vs. new)
behaviour, as far as I can see from my own tests WIC in Windows doesn't impose
limitations to a PNG palette size.

> It should be fine to replace
> 
> colors = 1 << This->format->bit_depth;
> 
> with
> 
> colors = min(This->colors, 1 << This->format->bit_depth);
> 
> and to remove the else branch.

That should work, if newer libpng versions accept such palette sizes.

-- 
Dmitry.



More information about the wine-devel mailing list