Edge detection filter.
More...
#include "libavutil/opt.h"
#include "avfilter.h"
#include "formats.h"
#include "internal.h"
#include "video.h"
Go to the source code of this file.
|
| AVFILTER_DEFINE_CLASS (edgedetect) |
|
static av_cold int | init (AVFilterContext *ctx) |
|
static int | query_formats (AVFilterContext *ctx) |
|
static int | config_props (AVFilterLink *inlink) |
|
static void | gaussian_blur (AVFilterContext *ctx, int w, int h, uint8_t *dst, int dst_linesize, const uint8_t *src, int src_linesize) |
|
static int | get_rounded_direction (int gx, int gy) |
|
static void | sobel (AVFilterContext *ctx, int w, int h, uint16_t *dst, int dst_linesize, const uint8_t *src, int src_linesize) |
|
static void | non_maximum_suppression (AVFilterContext *ctx, int w, int h, uint8_t *dst, int dst_linesize, const uint16_t *src, int src_linesize) |
|
static void | double_threshold (AVFilterContext *ctx, int w, int h, uint8_t *dst, int dst_linesize, const uint8_t *src, int src_linesize) |
|
static int | filter_frame (AVFilterLink *inlink, AVFrame *in) |
|
static av_cold void | uninit (AVFilterContext *ctx) |
|
#define COPY_MAXIMA |
( |
|
ay, |
|
|
|
ax, |
|
|
|
by, |
|
|
|
bx |
|
) |
| |
Enumerator |
---|
DIRECTION_45UP |
|
DIRECTION_45DOWN |
|
DIRECTION_HORIZONTAL |
|
DIRECTION_VERTICAL |
|
Definition at line 123 of file vf_edgedetect.c.
AVFILTER_DEFINE_CLASS |
( |
edgedetect |
| ) |
|
static int get_rounded_direction |
( |
int |
gx, |
|
|
int |
gy |
|
) |
| |
|
static |
static void non_maximum_suppression |
( |
AVFilterContext * |
ctx, |
|
|
int |
w, |
|
|
int |
h, |
|
|
uint8_t * |
dst, |
|
|
int |
dst_linesize, |
|
|
const uint16_t * |
src, |
|
|
int |
src_linesize |
|
) |
| |
|
static |
static void sobel |
( |
AVFilterContext * |
ctx, |
|
|
int |
w, |
|
|
int |
h, |
|
|
uint16_t * |
dst, |
|
|
int |
dst_linesize, |
|
|
const uint8_t * |
src, |
|
|
int |
src_linesize |
|
) |
| |
|
static |
Initial value:= {
.name = "edgedetect",
.priv_class = &edgedetect_class,
}
static const AVFilterPad edgedetect_outputs[]
static av_cold void uninit(AVFilterContext *ctx)
static const AVFilterPad outputs[]
static int query_formats(AVFilterContext *ctx)
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
static const AVFilterPad edgedetect_inputs[]
static av_cold int init(AVFilterContext *ctx)
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several inputs
Definition at line 320 of file vf_edgedetect.c.
Initial value:= {
{
.name = "default",
},
}
static int filter_frame(AVFilterLink *inlink, AVFrame *in)
static int config_props(AVFilterLink *inlink)
Definition at line 302 of file vf_edgedetect.c.
Initial value:= {
{
.name = "default",
},
}
Definition at line 312 of file vf_edgedetect.c.