[FFmpeg-cvslog] avcodec/proresdec2: Add support for grayscale videos
Håvard Espeland
git at videolan.org
Fri May 27 18:01:57 CEST 2016
ffmpeg | branch: master | Håvard Espeland <espeland at mixedrealities.no> | Fri May 27 11:06:13 2016 +0200| [9c43703620a8b2b002cc0681f2da5cf869f0fc80] | committer: Michael Niedermayer
avcodec/proresdec2: Add support for grayscale videos
Signed-off-by: Håvard Espeland <espeland at mixedrealities.no>
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9c43703620a8b2b002cc0681f2da5cf869f0fc80
---
libavcodec/proresdec2.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/libavcodec/proresdec2.c b/libavcodec/proresdec2.c
index 2d47a13..a3a1ebd 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,
More information about the ffmpeg-cvslog
mailing list