From c76cf303ce1131ca3ac249bb9328567797761e41 Mon Sep 17 00:00:00 2001 From: Martin Vignali Date: Sat, 9 Dec 2017 19:26:47 +0100 Subject: avcodec/magicyuv : use gradient_pred dsp func for 8 bits gradient mode --- libavcodec/magicyuv.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'libavcodec') diff --git a/libavcodec/magicyuv.c b/libavcodec/magicyuv.c index 195df121cd..9c6e1ba1b1 100644 --- a/libavcodec/magicyuv.c +++ b/libavcodec/magicyuv.c @@ -345,7 +345,7 @@ static int magy_decode_slice(AVCodecContext *avctx, void *tdata, MagicYUVContext *s = avctx->priv_data; int interlaced = s->interlaced; AVFrame *p = s->p; - int i, k, x; + int i, k, x, min_width; GetBitContext gb; uint8_t *dst; @@ -413,16 +413,19 @@ static int magy_decode_slice(AVCodecContext *avctx, void *tdata, s->llviddsp.add_left_pred(dst, dst, width, 0); dst += stride; } + min_width = FFMIN(width, 32); for (k = 1 + interlaced; k < height; k++) { top = dst[-fake_stride]; left = top + dst[0]; dst[0] = left; - for (x = 1; x < width; x++) { + for (x = 1; x < min_width; x++) { /* dsp need aligned 32 */ top = dst[x - fake_stride]; lefttop = dst[x - (fake_stride + 1)]; left += top - lefttop + dst[x]; dst[x] = left; } + if (width > 32) + s->llviddsp.add_gradient_pred(dst + 32, fake_stride, width - 32); dst += stride; } break; -- cgit v1.2.3