From 27c30e3165acadf267a123b8a094971a3857a469 Mon Sep 17 00:00:00 2001
From: Thomas Mundt <tmundt75@gmail.com>
Date: Thu, 14 Sep 2017 21:21:41 +0200
Subject: [PATCH 2/3] avfilter/tinterlace: use drawutils for pad mode

Signed-off-by: Thomas Mundt <tmundt75@gmail.com>
---
 libavfilter/tinterlace.h    |  3 +++
 libavfilter/vf_tinterlace.c | 16 +++++++---------
 2 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/libavfilter/tinterlace.h b/libavfilter/tinterlace.h
index 7f50d3c..cc13a6c 100644
--- a/libavfilter/tinterlace.h
+++ b/libavfilter/tinterlace.h
@@ -28,6 +28,7 @@
 #define AVFILTER_TINTERLACE_H
 
 #include "libavutil/opt.h"
+#include "drawutils.h"
 #include "avfilter.h"
 
 #define TINTERLACE_FLAG_VLPF 01
@@ -57,6 +58,8 @@ typedef struct TInterlaceContext {
     AVFrame *next;
     uint8_t *black_data[4];     ///< buffer used to fill padded lines
     int black_linesize[4];
+    FFDrawContext draw;
+    FFDrawColor color;
     void (*lowpass_line)(uint8_t *dstp, ptrdiff_t width, const uint8_t *srcp,
                          ptrdiff_t mref, ptrdiff_t pref);
 } TInterlaceContext;
diff --git a/libavfilter/vf_tinterlace.c b/libavfilter/vf_tinterlace.c
index 66c6d17..ee05da0d 100644
--- a/libavfilter/vf_tinterlace.c
+++ b/libavfilter/vf_tinterlace.c
@@ -156,21 +156,19 @@ static int config_out_props(AVFilterLink *outlink)
                                                 av_make_q(2, 1));
 
     if (tinterlace->mode == MODE_PAD) {
-        uint8_t black[4] = { 16, 128, 128, 16 };
-        int i, ret;
+        uint8_t black[4] = { 0, 0, 0, 16 };
+        int ret;
+        ff_draw_init(&tinterlace->draw, outlink->format, 0);
+        ff_draw_color(&tinterlace->draw, &tinterlace->color, black);
         if (ff_fmt_is_in(outlink->format, full_scale_yuvj_pix_fmts))
-            black[0] = black[3] = 0;
+            tinterlace->color.comp[0].u8[0] = 0;
         ret = av_image_alloc(tinterlace->black_data, tinterlace->black_linesize,
                              outlink->w, outlink->h, outlink->format, 16);
         if (ret < 0)
             return ret;
 
-        /* fill black picture with black */
-        for (i = 0; i < 4 && tinterlace->black_data[i]; i++) {
-            int h = i == 1 || i == 2 ? AV_CEIL_RSHIFT(outlink->h, desc->log2_chroma_h) : outlink->h;
-            memset(tinterlace->black_data[i], black[i],
-                   tinterlace->black_linesize[i] * h);
-        }
+        ff_fill_rectangle(&tinterlace->draw, &tinterlace->color, tinterlace->black_data,
+                          tinterlace->black_linesize, 0, 0, outlink->w, outlink->h);
     }
     if ((tinterlace->flags & TINTERLACE_FLAG_VLPF
           || tinterlace->flags & TINTERLACE_FLAG_CVLPF)
-- 
2.7.4.windows.1

