[FFmpeg-cvslog] avfilter/vf_maskedminmax: refactor slice function

Paul B Mahol git at videolan.org
Mon Feb 21 01:34:48 EET 2022


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Mon Feb 21 00:17:35 2022 +0100| [b7dc07c07cc990080812234a36700a2031b77996] | committer: Paul B Mahol

avfilter/vf_maskedminmax: refactor slice function

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

 libavfilter/vf_maskedminmax.c | 47 +++++++++++++++----------------------------
 1 file changed, 16 insertions(+), 31 deletions(-)

diff --git a/libavfilter/vf_maskedminmax.c b/libavfilter/vf_maskedminmax.c
index 5b70c8437f..5b84a02c32 100644
--- a/libavfilter/vf_maskedminmax.c
+++ b/libavfilter/vf_maskedminmax.c
@@ -85,39 +85,24 @@ static const enum AVPixelFormat pix_fmts[] = {
     AV_PIX_FMT_NONE
 };
 
-static void maskedmin8(const uint8_t *src, uint8_t *dst, const uint8_t *f1, const uint8_t *f2, int w)
-{
-    for (int x = 0; x < w; x++)
-        dst[x] = FFABS(src[x] - f2[x]) < FFABS(src[x] - f1[x]) ? f2[x] : f1[x];
-}
-
-static void maskedmax8(const uint8_t *src, uint8_t *dst, const uint8_t *f1, const uint8_t *f2, int w)
-{
-    for (int x = 0; x < w; x++)
-        dst[x] = FFABS(src[x] - f2[x]) > FFABS(src[x] - f1[x]) ? f2[x] : f1[x];
+#define MASKED(n, type, op)                                \
+static void masked##n(const uint8_t *ssrc, uint8_t *ddst,  \
+                      const uint8_t *ff1,                  \
+                      const uint8_t *ff2, int w)           \
+{                                                          \
+    const type *src = (const type *)ssrc;                  \
+    const type *f1 = (const type *)ff1;                    \
+    const type *f2 = (const type *)ff2;                    \
+    type *dst = (type *)ddst;                              \
+                                                           \
+    for (int x = 0; x < w; x++)                            \
+        dst[x] = FFABS(src[x] - f2[x]) op FFABS(src[x] - f1[x]) ? f2[x] : f1[x]; \
 }
 
-static void maskedmin16(const uint8_t *ssrc, uint8_t *ddst, const uint8_t *ff1, const uint8_t *ff2, int w)
-{
-    const uint16_t *src = (const uint16_t *)ssrc;
-    const uint16_t *f1 = (const uint16_t *)ff1;
-    const uint16_t *f2 = (const uint16_t *)ff2;
-    uint16_t *dst = (uint16_t *)ddst;
-
-    for (int x = 0; x < w; x++)
-        dst[x] = FFABS(src[x] - f2[x]) < FFABS(src[x] - f1[x]) ? f2[x] : f1[x];
-}
-
-static void maskedmax16(const uint8_t *ssrc, uint8_t *ddst, const uint8_t *ff1, const uint8_t *ff2, int w)
-{
-    const uint16_t *src = (const uint16_t *)ssrc;
-    const uint16_t *f1 = (const uint16_t *)ff1;
-    const uint16_t *f2 = (const uint16_t *)ff2;
-    uint16_t *dst = (uint16_t *)ddst;
-
-    for (int x = 0; x < w; x++)
-        dst[x] = FFABS(src[x] - f2[x]) > FFABS(src[x] - f1[x]) ? f2[x] : f1[x];
-}
+MASKED(min8,  uint8_t,  <)
+MASKED(max8,  uint8_t,  >)
+MASKED(min16, uint16_t, <)
+MASKED(max16, uint16_t, >)
 
 static int config_input(AVFilterLink *inlink)
 {



More information about the ffmpeg-cvslog mailing list