From 67a34686f522ce1efffff2da72459f0c5076581f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?H=C3=A5vard=20Espeland?= <espeland@mixedrealities.no>
Date: Fri, 27 May 2016 11:06:13 +0200
Subject: [PATCH] avcodec/proresdec2: Add support for grayscale videos
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Håvard Espeland <espeland@mixedrealities.no>
---
 libavcodec/proresdec2.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/libavcodec/proresdec2.c b/libavcodec/proresdec2.c
index 2d47a13..9f26bcf 100644
--- a/libavcodec/proresdec2.c
+++ b/libavcodec/proresdec2.c
@@ -578,7 +578,7 @@ static int decode_slice_thread(AVCodecContext *avctx, void *arg, int jobnr, int
     if (ret < 0)
         return ret;
 
-    if (!(avctx->flags & AV_CODEC_FLAG_GRAY)) {
+    if (!(avctx->flags & AV_CODEC_FLAG_GRAY) && (u_data_size + v_data_size) > 0) {
         ret = decode_slice_chroma(avctx, slice, (uint16_t*)dest_u, chroma_stride,
                                   buf + y_data_size, u_data_size,
                                   qmat_chroma_scaled, log2_chroma_blocks_per_mb);
@@ -591,6 +591,16 @@ static int decode_slice_thread(AVCodecContext *avctx, void *arg, int jobnr, int
         if (ret < 0)
             return ret;
     }
+    else {
+        size_t mb_max_x = slice->mb_count << (mb_x_shift - 1);
+        for (size_t i = 0; i < 16; ++i)
+          for (size_t j = 0; j < mb_max_x; ++j)
+          {
+              *(uint16_t*)(dest_u + (i * chroma_stride) + (j << 1)) = 511;
+              *(uint16_t*)(dest_v + (i * chroma_stride) + (j << 1)) = 511;
+          }
+    }
+
     /* decode alpha plane if available */
     if (ctx->alpha_info && pic->data[3] && a_data_size)
         decode_slice_alpha(ctx, (uint16_t*)dest_a, luma_stride,
-- 
2.1.4

