]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/pnm.c
Support 64bit pam decoding.
[ffmpeg] / libavcodec / pnm.c
index 06ab7018cad79770314bd4207a91fdeda41d3929..212ec06c21b0756e9d600e84c71bcf2c8b319575 100644 (file)
@@ -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;
         }