Go to the source code of this file.
|
| AVFILTER_DEFINE_CLASS (nlmeans) |
|
static void | compute_safe_ssd_integral_image_c (uint32_t *dst, ptrdiff_t dst_linesize_32, const uint8_t *s1, ptrdiff_t linesize1, const uint8_t *s2, ptrdiff_t 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, ptrdiff_t dst_linesize_32, int startx, int starty, const uint8_t *src, ptrdiff_t 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 (const NLMeansDSPContext *dsp, uint32_t *ii, ptrdiff_t ii_linesize_32, const uint8_t *src, ptrdiff_t linesize, int offx, int offy, int e, int w, int h) |
|
static int | config_input (AVFilterLink *inlink) |
|
static void | compute_weights_line_c (const uint32_t *const iia, const uint32_t *const iib, const uint32_t *const iid, const uint32_t *const iie, const uint8_t *const src, float *total_weight, float *sum, const float *const weight_lut, int max_meaningful_diff, int startx, int endx) |
|
static int | nlmeans_slice (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs) |
|
static void | weight_averages (uint8_t *dst, ptrdiff_t dst_linesize, const uint8_t *src, ptrdiff_t src_linesize, float *total_weight, float *sum, ptrdiff_t linesize, int w, int h) |
|
static int | nlmeans_plane (AVFilterContext *ctx, int w, int h, int p, int r, uint8_t *dst, ptrdiff_t dst_linesize, const uint8_t *src, ptrdiff_t src_linesize) |
|
static int | filter_frame (AVFilterLink *inlink, AVFrame *in) |
|
void | ff_nlmeans_init (NLMeansDSPContext *dsp) |
|
static av_cold int | init (AVFilterContext *ctx) |
|
static av_cold void | uninit (AVFilterContext *ctx) |
|
◆ OFFSET
◆ FLAGS
◆ CHECK_ODD_FIELD
Value: do { \
s->field |= 1; \
"setting it to %d\n",
s->field); \
} \
} while (0)
Definition at line 507 of file vf_nlmeans.c.
◆ AVFILTER_DEFINE_CLASS()
AVFILTER_DEFINE_CLASS |
( |
nlmeans |
| ) |
|
◆ compute_safe_ssd_integral_image_c()
static void compute_safe_ssd_integral_image_c |
( |
uint32_t * |
dst, |
|
|
ptrdiff_t |
dst_linesize_32, |
|
|
const uint8_t * |
s1, |
|
|
ptrdiff_t |
linesize1, |
|
|
const uint8_t * |
s2, |
|
|
ptrdiff_t |
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.
Definition at line 95 of file vf_nlmeans.c.
Referenced by ff_nlmeans_init().
◆ compute_unsafe_ssd_integral_image()
static void compute_unsafe_ssd_integral_image |
( |
uint32_t * |
dst, |
|
|
ptrdiff_t |
dst_linesize_32, |
|
|
int |
startx, |
|
|
int |
starty, |
|
|
const uint8_t * |
src, |
|
|
ptrdiff_t |
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 @paran r absolute maximum source offsetting |
sw | source width |
sh | source height |
w | width to compute |
h | height to compute |
Definition at line 153 of file vf_nlmeans.c.
Referenced by compute_ssd_integral_image(), and main().
◆ compute_ssd_integral_image()
static void compute_ssd_integral_image |
( |
const NLMeansDSPContext * |
dsp, |
|
|
uint32_t * |
ii, |
|
|
ptrdiff_t |
ii_linesize_32, |
|
|
const uint8_t * |
src, |
|
|
ptrdiff_t |
linesize, |
|
|
int |
offx, |
|
|
int |
offy, |
|
|
int |
e, |
|
|
int |
w, |
|
|
int |
h |
|
) |
| |
|
static |
◆ config_input()
◆ compute_weights_line_c()
static void compute_weights_line_c |
( |
const uint32_t *const |
iia, |
|
|
const uint32_t *const |
iib, |
|
|
const uint32_t *const |
iid, |
|
|
const uint32_t *const |
iie, |
|
|
const uint8_t *const |
src, |
|
|
float * |
total_weight, |
|
|
float * |
sum, |
|
|
const float *const |
weight_lut, |
|
|
int |
max_meaningful_diff, |
|
|
int |
startx, |
|
|
int |
endx |
|
) |
| |
|
static |
◆ nlmeans_slice()
◆ weight_averages()
static void weight_averages |
( |
uint8_t * |
dst, |
|
|
ptrdiff_t |
dst_linesize, |
|
|
const uint8_t * |
src, |
|
|
ptrdiff_t |
src_linesize, |
|
|
float * |
total_weight, |
|
|
float * |
sum, |
|
|
ptrdiff_t |
linesize, |
|
|
int |
w, |
|
|
int |
h |
|
) |
| |
|
static |
◆ nlmeans_plane()
static int nlmeans_plane |
( |
AVFilterContext * |
ctx, |
|
|
int |
w, |
|
|
int |
h, |
|
|
int |
p, |
|
|
int |
r, |
|
|
uint8_t * |
dst, |
|
|
ptrdiff_t |
dst_linesize, |
|
|
const uint8_t * |
src, |
|
|
ptrdiff_t |
src_linesize |
|
) |
| |
|
static |
◆ filter_frame()
◆ ff_nlmeans_init()
◆ init()
◆ uninit()
◆ nlmeans_options
◆ pix_fmts
◆ nlmeans_inputs
Initial value:= {
{
.name = "default",
},
}
Definition at line 572 of file vf_nlmeans.c.
◆ nlmeans_outputs
Initial value:= {
{
.name = "default",
},
}
Definition at line 581 of file vf_nlmeans.c.
◆ ff_vf_nlmeans
Initial value:= {
.name = "nlmeans",
.priv_class = &nlmeans_class,
}
Definition at line 588 of file vf_nlmeans.c.
#define AV_LOG_WARNING
Something somehow does not look correct.
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf default minimum maximum flags name is the option name
static enum AVPixelFormat pix_fmts[]
#define FILTER_PIXFMTS_ARRAY(array)
@ AV_PIX_FMT_YUV440P
planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples)
static const AVFilterPad nlmeans_outputs[]
static const AVFilterPad nlmeans_inputs[]
@ AV_PIX_FMT_YUVJ411P
planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) full scale (JPEG), deprecated in favor ...
@ AV_PIX_FMT_YUVJ422P
planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV422P and setting col...
@ AV_PIX_FMT_YUV420P
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
#define FILTER_INPUTS(array)
@ AV_PIX_FMT_YUVJ444P
planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV444P and setting col...
@ AV_PIX_FMT_YUVJ420P
planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV420P and setting col...
@ AV_PIX_FMT_GRAY8
Y , 8bpp.
static av_cold void uninit(AVFilterContext *ctx)
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
static int config_input(AVFilterLink *inlink)
#define AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC
Some filters support a generic "enable" expression option that can be used to enable or disable a fil...
@ AV_PIX_FMT_YUVJ440P
planar YUV 4:4:0 full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV440P and setting color_range
static av_cold int init(AVFilterContext *ctx)
@ AV_PIX_FMT_YUV444P
planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)
@ AV_PIX_FMT_GBRP
planar GBR 4:4:4 24bpp
#define AVFILTER_FLAG_SLICE_THREADS
The filter supports multithreading by splitting frames into multiple parts and processing them concur...
@ AV_PIX_FMT_YUV422P
planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
static int filter_frame(AVFilterLink *inlink, AVFrame *in)
#define FILTER_OUTPUTS(array)
@ AV_PIX_FMT_YUV411P
planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples)
@ AV_PIX_FMT_YUV410P
planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples)