tiff: Improve grayscale support
Only use PAL8 if palette is present, else use GRAY8 for pixfmt. Instead of simulating a grayscale palette, use real grayscale pixels, if no palette is actually defined. Signed-off-by: Diego Elio Pettenò <flameeyes@flameeyes.eu> Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
This commit is contained in:
parent
fb1ddcdc8f
commit
2597a842a0
@ -246,15 +246,14 @@ static int tiff_unpack_strip(TiffContext *s, uint8_t *dst, int stride,
|
|||||||
|
|
||||||
static int init_image(TiffContext *s, AVFrame *frame)
|
static int init_image(TiffContext *s, AVFrame *frame)
|
||||||
{
|
{
|
||||||
int i, ret;
|
int ret;
|
||||||
uint32_t *pal;
|
|
||||||
|
|
||||||
switch (s->bpp * 10 + s->bppcount) {
|
switch (s->bpp * 10 + s->bppcount) {
|
||||||
case 11:
|
case 11:
|
||||||
s->avctx->pix_fmt = AV_PIX_FMT_MONOBLACK;
|
s->avctx->pix_fmt = AV_PIX_FMT_MONOBLACK;
|
||||||
break;
|
break;
|
||||||
case 81:
|
case 81:
|
||||||
s->avctx->pix_fmt = AV_PIX_FMT_PAL8;
|
s->avctx->pix_fmt = s->palette_is_set ? AV_PIX_FMT_PAL8 : AV_PIX_FMT_GRAY8;
|
||||||
break;
|
break;
|
||||||
case 243:
|
case 243:
|
||||||
s->avctx->pix_fmt = AV_PIX_FMT_RGB24;
|
s->avctx->pix_fmt = AV_PIX_FMT_RGB24;
|
||||||
@ -290,14 +289,7 @@ static int init_image(TiffContext *s, AVFrame *frame)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
if (s->avctx->pix_fmt == AV_PIX_FMT_PAL8) {
|
if (s->avctx->pix_fmt == AV_PIX_FMT_PAL8) {
|
||||||
if (s->palette_is_set) {
|
memcpy(frame->data[1], s->palette, sizeof(s->palette));
|
||||||
memcpy(frame->data[1], s->palette, sizeof(s->palette));
|
|
||||||
} else {
|
|
||||||
/* make default grayscale pal */
|
|
||||||
pal = (uint32_t *) frame->data[1];
|
|
||||||
for (i = 0; i < 256; i++)
|
|
||||||
pal[i] = i * 0x010101;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user