libavfilter/vf_edgedetect.c File Reference

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.

Data Structures

struct  EdgeDetectContext

Defines

#define OFFSET(x)   offsetof(EdgeDetectContext, x)
#define FLAGS   AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
#define COPY_MAXIMA(ay, ax, by, bx)

Enumerations

enum  { DIRECTION_45UP, DIRECTION_45DOWN, DIRECTION_HORIZONTAL, DIRECTION_VERTICAL }

Functions

 AVFILTER_DEFINE_CLASS (edgedetect)
static av_cold int init (AVFilterContext *ctx, const char *args)
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 end_frame (AVFilterLink *inlink)
static av_cold void uninit (AVFilterContext *ctx)
static int null_draw_slice (AVFilterLink *inlink, int y, int h, int slice_dir)

Variables

static const AVOption edgedetect_options []
AVFilter avfilter_vf_edgedetect


Detailed Description

Edge detection filter.

See also:
https://en.wikipedia.org/wiki/Canny_edge_detector

Definition in file vf_edgedetect.c.


Define Documentation

#define COPY_MAXIMA ( ay,
ax,
by,
bx   ) 

Value:

do {                \
    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)

Referenced by non_maximum_suppression().

#define FLAGS   AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM

Definition at line 44 of file vf_edgedetect.c.

#define OFFSET (  )     offsetof(EdgeDetectContext, x)

Definition at line 43 of file vf_edgedetect.c.


Enumeration Type Documentation

anonymous enum

Enumerator:
DIRECTION_45UP 
DIRECTION_45DOWN 
DIRECTION_HORIZONTAL 
DIRECTION_VERTICAL 

Definition at line 130 of file vf_edgedetect.c.


Function Documentation

AVFILTER_DEFINE_CLASS ( edgedetect   ) 

static int config_props ( AVFilterLink inlink  )  [static]

Definition at line 76 of file vf_edgedetect.c.

static void double_threshold ( AVFilterContext ctx,
int  w,
int  h,
uint8_t dst,
int  dst_linesize,
const uint8_t src,
int  src_linesize 
) [static]

Definition at line 217 of file vf_edgedetect.c.

Referenced by end_frame().

static int end_frame ( AVFilterLink inlink  )  [static]

Definition at line 252 of file vf_edgedetect.c.

static void gaussian_blur ( AVFilterContext ctx,
int  w,
int  h,
uint8_t dst,
int  dst_linesize,
const uint8_t src,
int  src_linesize 
) [static]

Definition at line 89 of file vf_edgedetect.c.

Referenced by end_frame().

static int get_rounded_direction ( int  gx,
int  gy 
) [static]

Definition at line 137 of file vf_edgedetect.c.

Referenced by sobel().

static av_cold int init ( AVFilterContext ctx,
const char *  args 
) [static]

Definition at line 53 of file vf_edgedetect.c.

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]

Definition at line 190 of file vf_edgedetect.c.

Referenced by end_frame().

static int null_draw_slice ( AVFilterLink inlink,
int  y,
int  h,
int  slice_dir 
) [static]

Definition at line 296 of file vf_edgedetect.c.

static int query_formats ( AVFilterContext ctx  )  [static]

Definition at line 69 of file vf_edgedetect.c.

static void sobel ( AVFilterContext ctx,
int  w,
int  h,
uint16_t *  dst,
int  dst_linesize,
const uint8_t src,
int  src_linesize 
) [static]

Definition at line 164 of file vf_edgedetect.c.

Referenced by end_frame().

static av_cold void uninit ( AVFilterContext ctx  )  [static]

Definition at line 288 of file vf_edgedetect.c.


Variable Documentation

Initial value:

 {
    .name          = "edgedetect",
    .description   = NULL_IF_CONFIG_SMALL("Detect and draw edge."),
    .priv_size     = sizeof(EdgeDetectContext),
    .init          = init,
    .uninit        = uninit,
    .query_formats = query_formats,

    .inputs    = (const AVFilterPad[]) {
       {
           .name             = "default",
           .type             = AVMEDIA_TYPE_VIDEO,
           .draw_slice       = null_draw_slice,
           .config_props     = config_props,
           .end_frame        = end_frame,
           .min_perms        = AV_PERM_READ
        },
        { .name = NULL }
    },
    .outputs   = (const AVFilterPad[]) {
        {
            .name            = "default",
            .type            = AVMEDIA_TYPE_VIDEO,
        },
        { .name = NULL }
    },
}

Definition at line 298 of file vf_edgedetect.c.

const AVOption edgedetect_options[] [static]

Initial value:

 {
    { "high", "set high threshold", OFFSET(high), AV_OPT_TYPE_DOUBLE, {.dbl=50/255.}, 0, 1, FLAGS },
    { "low",  "set low threshold",  OFFSET(low),  AV_OPT_TYPE_DOUBLE, {.dbl=20/255.}, 0, 1, FLAGS },
    { NULL },
}

Definition at line 45 of file vf_edgedetect.c.


Generated on Fri Oct 26 02:50:10 2012 for FFmpeg by  doxygen 1.5.8