X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fpnm.c;h=212ec06c21b0756e9d600e84c71bcf2c8b319575;hb=00430075bd0f06e4c6d9612f3a522255155b035b;hp=06ab7018cad79770314bd4207a91fdeda41d3929;hpb=871e2f4fac18230abe4d7154d90cb5cba1479692;p=ffmpeg diff --git a/libavcodec/pnm.c b/libavcodec/pnm.c index 06ab7018cad..212ec06c21b 100644 --- a/libavcodec/pnm.c +++ b/libavcodec/pnm.c @@ -113,21 +113,26 @@ int ff_pnm_decode_header(AVCodecContext *avctx, PNMContext * const s) if (depth == 1) { if (maxval == 1) { avctx->pix_fmt = PIX_FMT_MONOWHITE; - } else if (maxval == 255) { + } else if (maxval == 255) { avctx->pix_fmt = PIX_FMT_GRAY8; - } else { + } else { avctx->pix_fmt = PIX_FMT_GRAY16BE; } + } else if (depth == 2) { + if (maxval == 255) + avctx->pix_fmt = PIX_FMT_GRAY8A; } else if (depth == 3) { if (maxval < 256) { avctx->pix_fmt = PIX_FMT_RGB24; } else { - av_log(avctx, AV_LOG_ERROR, "16-bit components are only supported for grayscale\n"); - avctx->pix_fmt = PIX_FMT_NONE; - return -1; + avctx->pix_fmt = PIX_FMT_RGB48BE; } } else if (depth == 4) { - avctx->pix_fmt = PIX_FMT_RGB32; + if (maxval < 256) { + avctx->pix_fmt = PIX_FMT_RGB32; + } else { + avctx->pix_fmt = PIX_FMT_RGBA64BE; + } } else { return -1; }