diff options
author | Paul B Mahol <onemda@gmail.com> | 2022-02-21 00:17:35 +0100 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2022-02-21 00:35:10 +0100 |
commit | b7dc07c07cc990080812234a36700a2031b77996 (patch) | |
tree | 7d3d35b4cd3bcf680ed0175e549dd5519dd1b9b8 | |
parent | 105234ce80249d217cff5978ad7683d53698955a (diff) | |
download | ffmpeg-b7dc07c07cc990080812234a36700a2031b77996.tar.gz |
avfilter/vf_maskedminmax: refactor slice function
-rw-r--r-- | libavfilter/vf_maskedminmax.c | 47 |
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) { |