avcodec/dpx: add support for 10bit gray
authorPaul B Mahol <onemda@gmail.com>
Tue, 4 Dec 2018 20:04:05 +0000 (21:04 +0100)
committerPaul B Mahol <onemda@gmail.com>
Tue, 4 Dec 2018 20:05:14 +0000 (21:05 +0100)
libavcodec/dpx.c

index cf23bb6..538a1b9 100644 (file)
@@ -310,6 +310,9 @@ static int decode_frame(AVCodecContext *avctx,
     case 51121:
         avctx->pix_fmt = AV_PIX_FMT_GBRAP12;
         break;
+    case 6101:
+        avctx->pix_fmt = AV_PIX_FMT_GRAY10;
+        break;
     case 6161:
         avctx->pix_fmt = AV_PIX_FMT_GRAY16BE;
         break;
@@ -362,12 +365,14 @@ static int decode_frame(AVCodecContext *avctx,
                                 (uint16_t*)ptr[3]};
             int shift = packing == 1 ? 22 : 20;
             for (y = 0; y < avctx->width; y++) {
-                *dst[2]++ = read10in32(&buf, &rgbBuffer,
-                                       &n_datum, endian, shift);
+                if (elements >= 3)
+                    *dst[2]++ = read10in32(&buf, &rgbBuffer,
+                                           &n_datum, endian, shift);
                 *dst[0]++ = read10in32(&buf, &rgbBuffer,
                                        &n_datum, endian, shift);
-                *dst[1]++ = read10in32(&buf, &rgbBuffer,
-                                       &n_datum, endian, shift);
+                if (elements >= 2)
+                    *dst[1]++ = read10in32(&buf, &rgbBuffer,
+                                           &n_datum, endian, shift);
                 if (elements == 4)
                     *dst[3]++ =
                     read10in32(&buf, &rgbBuffer,