mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-13 21:28:01 +02:00
pngdec: relax condition for setting monoblack pixel format
Ignore color_type information for setting the monoblack pixel format, only rely on bit_depth. In particular: fix Test_1bpp_grayscale.png from issue #172. This may work fine for some broken encoder, and not for others.
This commit is contained in:
parent
85eedcf6ff
commit
68bed67d2e
@ -467,8 +467,7 @@ static int decode_frame(AVCodecContext *avctx,
|
|||||||
} else if (s->bit_depth == 16 &&
|
} else if (s->bit_depth == 16 &&
|
||||||
s->color_type == PNG_COLOR_TYPE_RGB) {
|
s->color_type == PNG_COLOR_TYPE_RGB) {
|
||||||
avctx->pix_fmt = PIX_FMT_RGB48BE;
|
avctx->pix_fmt = PIX_FMT_RGB48BE;
|
||||||
} else if (s->bit_depth == 1 &&
|
} else if (s->bit_depth == 1) {
|
||||||
s->color_type == PNG_COLOR_TYPE_GRAY) {
|
|
||||||
avctx->pix_fmt = PIX_FMT_MONOBLACK;
|
avctx->pix_fmt = PIX_FMT_MONOBLACK;
|
||||||
} else if (s->color_type == PNG_COLOR_TYPE_PALETTE) {
|
} else if (s->color_type == PNG_COLOR_TYPE_PALETTE) {
|
||||||
avctx->pix_fmt = PIX_FMT_PAL8;
|
avctx->pix_fmt = PIX_FMT_PAL8;
|
||||||
@ -504,7 +503,7 @@ static int decode_frame(AVCodecContext *avctx,
|
|||||||
s->image_buf = p->data[0];
|
s->image_buf = p->data[0];
|
||||||
s->image_linesize = p->linesize[0];
|
s->image_linesize = p->linesize[0];
|
||||||
/* copy the palette if needed */
|
/* copy the palette if needed */
|
||||||
if (s->color_type == PNG_COLOR_TYPE_PALETTE)
|
if (avctx->pix_fmt == PIX_FMT_PAL8)
|
||||||
memcpy(p->data[1], s->palette, 256 * sizeof(uint32_t));
|
memcpy(p->data[1], s->palette, 256 * sizeof(uint32_t));
|
||||||
/* empty row is used if differencing to the first row */
|
/* empty row is used if differencing to the first row */
|
||||||
s->last_row = av_mallocz(s->row_size);
|
s->last_row = av_mallocz(s->row_size);
|
||||||
|
Loading…
Reference in New Issue
Block a user