From c0f9c0e0d96af674c5b45fc2626e29ab8121a717 Mon Sep 17 00:00:00 2001
From: Michael Chaban <arsunt@gmail.com>
Date: Thu, 19 Jul 2018 00:32:21 +0300
Subject: [PATCH 1/3] libavcodec/escape130: fixed wrong Y copy block decoding

The Y pattern must be reset, in case of copying the previous block Y.
Otherwise, this leads to artifacts in the form of horizontal strips on some frames.
---
 libavcodec/escape130.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/libavcodec/escape130.c b/libavcodec/escape130.c
index 1dd7eedd74..c1a976b920 100644
--- a/libavcodec/escape130.c
+++ b/libavcodec/escape130.c
@@ -262,12 +262,14 @@ static int escape130_decode_frame(AVCodecContext *avctx, void *data,
                     y[i] = av_clip(y_avg + offset_table[difference_selector] *
                                    sign_table[sign_selector][i], 0, 63);
                 }
-            } else if (get_bits1(&gb)) {
+            } else {
                 if (get_bits1(&gb)) {
-                    y_avg = get_bits(&gb, 6);
-                } else {
-                    unsigned adjust_index = get_bits(&gb, 3);
-                    y_avg = (y_avg + luma_adjust[adjust_index]) & 63;
+                    if (get_bits1(&gb)) {
+                        y_avg = get_bits(&gb, 6);
+                    } else {
+                        unsigned adjust_index = get_bits(&gb, 3);
+                        y_avg = (y_avg + luma_adjust[adjust_index]) & 63;
+                    }
                 }
                 for (i = 0; i < 4; i++)
                     y[i] = y_avg;
-- 
2.16.1.windows.4

