[FFmpeg-cvslog] avfilter/vf_drawbox: reduce code duplication

Paul B Mahol git at videolan.org
Tue Oct 1 21:28:32 EEST 2019


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Tue Oct  1 19:22:17 2019 +0200| [027a53dc4905ecc8440f32665487c5e46d1dc500] | committer: Paul B Mahol

avfilter/vf_drawbox: reduce code duplication

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=027a53dc4905ecc8440f32665487c5e46d1dc500
---

 libavfilter/vf_drawbox.c | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/libavfilter/vf_drawbox.c b/libavfilter/vf_drawbox.c
index c9cb63dbd1..91bfeb2414 100644
--- a/libavfilter/vf_drawbox.c
+++ b/libavfilter/vf_drawbox.c
@@ -208,6 +208,12 @@ fail:
     return ret;
 }
 
+static av_pure av_always_inline int pixel_belongs_to_box(DrawBoxContext *s, int x, int y)
+{
+    return (y - s->y < s->thickness) || (s->y + s->h - 1 - y < s->thickness) ||
+           (x - s->x < s->thickness) || (s->x + s->w - 1 - x < s->thickness);
+}
+
 static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
 {
     DrawBoxContext *s = inlink->dst->priv;
@@ -225,13 +231,11 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
 
             if (s->invert_color) {
                 for (x = FFMAX(xb, 0); x < xb + s->w && x < frame->width; x++)
-                    if ((y - yb < s->thickness) || (yb + s->h - 1 - y < s->thickness) ||
-                        (x - xb < s->thickness) || (xb + s->w - 1 - x < s->thickness))
+                    if (pixel_belongs_to_box(s, x, y))
                         row[0][x] = 0xff - row[0][x];
             } else {
                 for (x = FFMAX(xb, 0); x < xb + s->w && x < frame->width; x++) {
-                    if ((y - yb < s->thickness) || (yb + s->h - 1 - y < s->thickness) ||
-                        (x - xb < s->thickness) || (xb + s->w - 1 - x < s->thickness)) {
+                    if (pixel_belongs_to_box(s, x, y)) {
                         row[0][x           ] = s->yuv_color[Y];
                         row[1][x >> s->hsub] = s->yuv_color[U];
                         row[2][x >> s->hsub] = s->yuv_color[V];
@@ -250,15 +254,13 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
 
             if (s->invert_color) {
                 for (x = FFMAX(xb, 0); x < xb + s->w && x < frame->width; x++)
-                    if ((y - yb < s->thickness) || (yb + s->h - 1 - y < s->thickness) ||
-                        (x - xb < s->thickness) || (xb + s->w - 1 - x < s->thickness))
+                    if (pixel_belongs_to_box(s, x, y))
                         row[0][x] = 0xff - row[0][x];
             } else {
                 for (x = FFMAX(xb, 0); x < xb + s->w && x < frame->width; x++) {
                     double alpha = (double)s->yuv_color[A] / 255;
 
-                    if ((y - yb < s->thickness) || (yb + s->h - 1 - y < s->thickness) ||
-                        (x - xb < s->thickness) || (xb + s->w - 1 - x < s->thickness)) {
+                    if (pixel_belongs_to_box(s, x, y)) {
                         row[0][x                 ] = (1 - alpha) * row[0][x                 ] + alpha * s->yuv_color[Y];
                         row[1][x >> s->hsub] = (1 - alpha) * row[1][x >> s->hsub] + alpha * s->yuv_color[U];
                         row[2][x >> s->hsub] = (1 - alpha) * row[2][x >> s->hsub] + alpha * s->yuv_color[V];



More information about the ffmpeg-cvslog mailing list