ffmpeg | branch: master | Thomas Mundt <tmund...@gmail.com> | Mon Sep 18 23:57:17 2017 +0200| [58ca446672fec10e851b820ce7df64bd2d1f3a70] | committer: James Almer
avfilter/tinterlace: use drawutils for pad mode Reviewed-by: Michael Niedermayer <mich...@niedermayer.cc> Signed-off-by: Thomas Mundt <tmund...@gmail.com> Signed-off-by: James Almer <jamr...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=58ca446672fec10e851b820ce7df64bd2d1f3a70 --- 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 7f50d3c8ee..cc13a6cc50 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 9ae9daafc1..f934a06b69 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_FLAG_CVLPF) && !(tinterlace->mode == MODE_INTERLEAVE_TOP _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog