summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2022-02-21 00:17:35 +0100
committerPaul B Mahol <onemda@gmail.com>2022-02-21 00:35:10 +0100
commitb7dc07c07cc990080812234a36700a2031b77996 (patch)
tree7d3d35b4cd3bcf680ed0175e549dd5519dd1b9b8
parent105234ce80249d217cff5978ad7683d53698955a (diff)
avfilter/vf_maskedminmax: refactor slice function
-rw-r--r--libavfilter/vf_maskedminmax.c47
1 files 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)
{