Module: libav
Branch: master
Commit: b812db66af160bfac2f64aef2ade4aed7eb76b12

Author:    Paul B Mahol <one...@gmail.com>
Committer: Luca Barbato <lu_z...@gentoo.org>
Date:      Fri Apr 21 21:44:28 2017 +0200

utvideodec: Fix gradient prediction when stride does not match width

Signed-off-by: Paul B Mahol <one...@gmail.com>
Signed-off-by: Luca Barbato <lu_z...@gentoo.org>

---

 libavcodec/utvideodec.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/libavcodec/utvideodec.c b/libavcodec/utvideodec.c
index 0f58c83..ed6368e 100644
--- a/libavcodec/utvideodec.c
+++ b/libavcodec/utvideodec.c
@@ -686,7 +686,11 @@ static void restore_gradient_planar_il(UtvideoContext *c, 
uint8_t *src, ptrdiff_
                 C = bsrc[i - 1];
                 bsrc[i] = (A - B + C + bsrc[i]) & 0xFF;
             }
-            for (i = 0; i < width; i++) {
+            A = bsrc[-stride];
+            B = bsrc[-(1 + stride + stride - width)];
+            C = bsrc[width - 1];
+            bsrc[stride] = (A - B + C + bsrc[stride]) & 0xFF;
+            for (i = 1; i < width; i++) {
                 A = bsrc[i - stride];
                 B = bsrc[i - (1 + stride)];
                 C = bsrc[i - 1 + stride];
@@ -784,7 +788,11 @@ static void restore_gradient_packed_il(uint8_t *src, int 
step, ptrdiff_t stride,
                 C = bsrc[i - step];
                 bsrc[i] = (A - B + C + bsrc[i]) & 0xFF;
             }
-            for (i = 0; i < width * step; i += step) {
+            A = bsrc[-stride];
+            B = bsrc[-(step + stride + stride - width * step)];
+            C = bsrc[width * step - step];
+            bsrc[stride] = (A - B + C + bsrc[stride]) & 0xFF;
+            for (i = step; i < width * step; i += step) {
                 A = bsrc[i - stride];
                 B = bsrc[i - (step + stride)];
                 C = bsrc[i - step + stride];

_______________________________________________
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits

Reply via email to