aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimo Rothenpieler <timo@rothenpieler.org>2022-09-03 20:02:03 +0200
committerTimo Rothenpieler <timo@rothenpieler.org>2022-09-03 20:27:34 +0200
commit6512dd6cb528a261369284f2634c0856fdaffaf9 (patch)
tree8c265495f5fd1287fb843a93884569e82f6b0ecb
parent416923346a6d31563801784963d2893a8d1da1c8 (diff)
downloadffmpeg-6512dd6cb528a261369284f2634c0856fdaffaf9.tar.gz
avfilter/vf_bilateral_cuda: refactor use of pow to simple multiplication
-rw-r--r--libavfilter/vf_bilateral_cuda.cu11
1 files changed, 5 insertions, 6 deletions
diff --git a/libavfilter/vf_bilateral_cuda.cu b/libavfilter/vf_bilateral_cuda.cu
index bbcfc81db5..7d6cc14c0a 100644
--- a/libavfilter/vf_bilateral_cuda.cu
+++ b/libavfilter/vf_bilateral_cuda.cu
@@ -33,11 +33,10 @@ extern "C"
*/
__device__ static inline float norm_squared(float4 first_yuv, float4 second_yuv)
{
- float ans = 0;
- ans += __powf(first_yuv.x - second_yuv.x, 2);
- ans += __powf(first_yuv.y - second_yuv.y, 2);
- ans += __powf(first_yuv.z - second_yuv.z, 2);
- return ans;
+ float x = first_yuv.x - second_yuv.x;
+ float y = first_yuv.y - second_yuv.y;
+ float z = first_yuv.z - second_yuv.z;
+ return (x*x) + (y*y) + (z*z);
}
/**
@@ -52,7 +51,7 @@ __device__ static inline float calculate_w(int x, int y, int r, int c,
float sigma_space, float sigma_color)
{
float first_term, second_term;
- first_term = (__powf(x - r, 2) + __powf(y - c, 2)) / (2 * sigma_space * sigma_space);
+ first_term = (((x - r) * (x - r)) + ((y - c) * (y - c))) / (2 * sigma_space * sigma_space);
second_term = norm_squared(pixel_value, neighbor_value) / (2 * sigma_color * sigma_color);
return __expf(-first_term - second_term);
}