Mercurial > libavcodec.hg
changeset 9895:06e12f9b93d7 libavcodec
Support RGB48 PNG decoding
author | kostya |
---|---|
date | Tue, 30 Jun 2009 03:37:20 +0000 |
parents | 78b2fc137c27 |
children | bbefbca72722 |
files | pngdec.c |
diffstat | 1 files changed, 10 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/pngdec.c Tue Jun 30 03:12:50 2009 +0000 +++ b/pngdec.c Tue Jun 30 03:37:20 2009 +0000 @@ -181,6 +181,13 @@ else if(bpp == 2) UNROLL1(2, op)\ else if(bpp == 3) UNROLL1(3, op)\ else if(bpp == 4) UNROLL1(4, op)\ + else {\ + for (; i < size; i += bpp) {\ + int j;\ + for (j = 0; j < bpp; j++)\ + dst[i+j] = op(dst[i+j-bpp], src[i+j], last[i+j]);\ + }\ + } /* NOTE: 'dst' can be equal to 'last' */ static void png_filter_row(DSPContext *dsp, uint8_t *dst, int filter_type, @@ -478,6 +485,9 @@ } else if (s->bit_depth == 16 && s->color_type == PNG_COLOR_TYPE_GRAY) { avctx->pix_fmt = PIX_FMT_GRAY16BE; + } else if (s->bit_depth == 16 && + s->color_type == PNG_COLOR_TYPE_RGB) { + avctx->pix_fmt = PIX_FMT_RGB48BE; } else if (s->bit_depth == 1 && s->color_type == PNG_COLOR_TYPE_GRAY) { avctx->pix_fmt = PIX_FMT_MONOBLACK;