ffmpeg | branch: master | Paul B Mahol <one...@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) { _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".