|
| AVFILTER_DEFINE_CLASS (nlmeans) |
|
static int | query_formats (AVFilterContext *ctx) |
|
static int | get_integral_patch_value (const uint32_t *ii, int ii_lz_32, int x, int y, int p) |
|
static void | compute_safe_ssd_integral_image_c (uint32_t *dst, int dst_linesize_32, const uint8_t *s1, int linesize1, const uint8_t *s2, int linesize2, int w, int h) |
| Compute squared difference of the safe area (the zone where s1 and s2 overlap). More...
|
|
static void | compute_unsafe_ssd_integral_image (uint32_t *dst, int dst_linesize_32, int startx, int starty, const uint8_t *src, int linesize, int offx, int offy, int r, int sw, int sh, int w, int h) |
| Compute squared difference of an unsafe area (the zone nor s1 nor s2 could be readable). More...
|
|
static void | compute_ssd_integral_image (uint32_t *ii, int ii_linesize_32, const uint8_t *src, int linesize, int offx, int offy, int e, int w, int h) |
|
static int | config_input (AVFilterLink *inlink) |
|
static int | nlmeans_slice (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs) |
|
static int | nlmeans_plane (AVFilterContext *ctx, int w, int h, int p, int r, uint8_t *dst, int dst_linesize, const uint8_t *src, int src_linesize) |
|
static int | filter_frame (AVFilterLink *inlink, AVFrame *in) |
|
static av_cold int | init (AVFilterContext *ctx) |
|
static av_cold void | uninit (AVFilterContext *ctx) |
|
static void compute_safe_ssd_integral_image_c |
( |
uint32_t * |
dst, |
|
|
int |
dst_linesize_32, |
|
|
const uint8_t * |
s1, |
|
|
int |
linesize1, |
|
|
const uint8_t * |
s2, |
|
|
int |
linesize2, |
|
|
int |
w, |
|
|
int |
h |
|
) |
| |
|
static |
Compute squared difference of the safe area (the zone where s1 and s2 overlap).
It is likely the largest integral zone, so it is interesting to do as little checks as possible; contrary to the unsafe version of this function, we do not need any clipping here.
The line above dst and the column to its left are always readable.
This C version computes the SSD integral image using a scalar accumulator, while for SIMD implementation it is likely more interesting to use the two-loops algorithm variant.
Definition at line 153 of file vf_nlmeans.c.
Referenced by compute_ssd_integral_image().
static void compute_unsafe_ssd_integral_image |
( |
uint32_t * |
dst, |
|
|
int |
dst_linesize_32, |
|
|
int |
startx, |
|
|
int |
starty, |
|
|
const uint8_t * |
src, |
|
|
int |
linesize, |
|
|
int |
offx, |
|
|
int |
offy, |
|
|
int |
r, |
|
|
int |
sw, |
|
|
int |
sh, |
|
|
int |
w, |
|
|
int |
h |
|
) |
| |
|
inlinestatic |
Compute squared difference of an unsafe area (the zone nor s1 nor s2 could be readable).
On the other hand, the line above dst and the column to its left are always readable.
There is little point in having this function SIMDified as it is likely too complex and only handle small portions of the image.
- Parameters
-
dst | integral image |
dst_linesize_32 | integral image linesize (in 32-bit integers unit) |
startx | integral starting x position |
starty | integral starting y position |
src | source plane buffer |
linesize | source plane linesize |
offx | source offsetting in x |
offy | source offsetting in y r absolute maximum source offsetting |
sw | source width |
sh | source height |
w | width to compute |
h | height to compute |
Definition at line 198 of file vf_nlmeans.c.
Referenced by compute_ssd_integral_image(), and main().