diff options
author | Håvard Espeland <espeland@mixedrealities.no> | 2016-05-27 11:06:13 +0200 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2016-05-27 17:25:40 +0200 |
commit | 9c43703620a8b2b002cc0681f2da5cf869f0fc80 (patch) | |
tree | cf40a373372be12e7b660068ecd9dfa3c31e8160 /libavcodec/proresdec2.c | |
parent | 281caece46c4a82c8c4c49b0847867e3be053a85 (diff) | |
download | ffmpeg-9c43703620a8b2b002cc0681f2da5cf869f0fc80.tar.gz |
avcodec/proresdec2: Add support for grayscale videos
Signed-off-by: Håvard Espeland <espeland@mixedrealities.no>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavcodec/proresdec2.c')
-rw-r--r-- | libavcodec/proresdec2.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/libavcodec/proresdec2.c b/libavcodec/proresdec2.c index 2d47a13030..a3a1ebdecb 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,15 @@ 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, |