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 |
|
) |
| |
Value:
if (
src[i] >
src[(ay)*src_linesize + i+(ax)] && \
src[i] >
src[(by)*src_linesize + i+(bx)]) \
dst[i] = av_clip_uint8(
src[i]); \
} while (0)
if((e=av_dict_get(options,"", NULL, AV_DICT_IGNORE_SUFFIX)))
Referenced by non_maximum_suppression().
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 sobel |
( |
AVFilterContext * |
ctx, |
|
|
int |
w, |
|
|
int |
h, |
|
|
uint16_t * |
dst, |
|
|
int |
dst_linesize, |
|
|
const uint8_t * |
src, |
|
|
int |
src_linesize |
|
) |
| |
|
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 |
Initial value:= {
{
.name = "default",
},
{ NULL }
}
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",
},
{ NULL }
}
Definition at line 312 of file vf_edgedetect.c.
Initial value:= {
.name = "edgedetect",
.priv_class = &edgedetect_class,
}
static const AVFilterPad edgedetect_outputs[]
static av_cold void uninit(AVFilterContext *ctx)
static const AVFilterPad outputs[]
#define AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC
Some filters support a generic "enable" expression option that can be used to enable or disable a fil...
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)
static const AVFilterPad inputs[]
Definition at line 320 of file vf_edgedetect.c.