Apply a boxblur filter to the input video. More...
#include "libavutil/avstring.h"
#include "libavutil/eval.h"
#include "libavutil/pixdesc.h"
#include "avfilter.h"
Go to the source code of this file.
Apply a boxblur filter to the input video.
Ported from MPlayer libmpcodecs/vf_boxblur.c.
Definition in file vf_boxblur.c.
#define A 3 |
Definition at line 75 of file vf_boxblur.c.
#define CHECK_RADIUS_VAL | ( | w_, | ||
h_, | ||||
comp | ||||
) |
if (boxblur->comp##_param.radius < 0 || \ 2*boxblur->comp##_param.radius > FFMIN(w_, h_)) { \ av_log(ctx, AV_LOG_ERROR, \ "Invalid " #comp " radius value %d, must be >= 0 and <= %d\n", \ boxblur->comp##_param.radius, FFMIN(w_, h_)/2); \ return AVERROR(EINVAL); \ }
Referenced by config_input().
#define EVAL_RADIUS_EXPR | ( | comp | ) |
expr = boxblur->comp##_radius_expr; \ ret = av_expr_parse_and_eval(&res, expr, var_names, var_values, \ NULL, NULL, NULL, NULL, NULL, 0, ctx); \ boxblur->comp##_param.radius = res; \ if (ret < 0) { \ av_log(NULL, AV_LOG_ERROR, \ "Error when evaluating " #comp " radius expression '%s'\n", expr); \ return ret; \ }
Referenced by config_input().
#define U 1 |
Definition at line 73 of file vf_boxblur.c.
#define V 2 |
Definition at line 74 of file vf_boxblur.c.
#define Y 0 |
Definition at line 72 of file vf_boxblur.c.
enum var_name |
Definition at line 43 of file vf_boxblur.c.
static void blur | ( | uint8_t * | dst, | |
int | dst_step, | |||
const uint8_t * | src, | |||
int | src_step, | |||
int | len, | |||
int | radius | |||
) | [inline, static] |
Definition at line 208 of file vf_boxblur.c.
Referenced by blur_power().
static void blur_power | ( | uint8_t * | dst, | |
int | dst_step, | |||
const uint8_t * | src, | |||
int | src_step, | |||
int | len, | |||
int | radius, | |||
int | power, | |||
uint8_t * | temp[2] | |||
) | [inline, static] |
Definition at line 249 of file vf_boxblur.c.
static int config_input | ( | AVFilterLink * | inlink | ) | [static] |
Definition at line 136 of file vf_boxblur.c.
static void end_frame | ( | AVFilterLink * | inlink | ) | [static] |
Definition at line 303 of file vf_boxblur.c.
static void hblur | ( | uint8_t * | dst, | |
int | dst_linesize, | |||
const uint8_t * | src, | |||
int | src_linesize, | |||
int | w, | |||
int | h, | |||
int | radius, | |||
int | power, | |||
uint8_t * | temp[2] | |||
) | [static] |
Definition at line 275 of file vf_boxblur.c.
Referenced by end_frame().
static av_cold int init | ( | AVFilterContext * | ctx, | |
const char * | args, | |||
void * | opaque | |||
) | [static] |
Definition at line 77 of file vf_boxblur.c.
static void null_draw_slice | ( | AVFilterLink * | inlink, | |
int | y, | |||
int | h, | |||
int | slice_dir | |||
) | [static] |
Definition at line 301 of file vf_boxblur.c.
static int query_formats | ( | AVFilterContext * | ctx | ) | [static] |
Definition at line 121 of file vf_boxblur.c.
static av_cold void uninit | ( | AVFilterContext * | ctx | ) | [static] |
Definition at line 113 of file vf_boxblur.c.
static void vblur | ( | uint8_t * | dst, | |
int | dst_linesize, | |||
const uint8_t * | src, | |||
int | src_linesize, | |||
int | w, | |||
int | h, | |||
int | radius, | |||
int | power, | |||
uint8_t * | temp[2] | |||
) | [static] |
Definition at line 288 of file vf_boxblur.c.
Referenced by end_frame().
{ .name = "boxblur", .description = NULL_IF_CONFIG_SMALL("Blur the input."), .priv_size = sizeof(BoxBlurContext), .init = init, .uninit = uninit, .query_formats = query_formats, .inputs = (const AVFilterPad[]) {{ .name = "default", .type = AVMEDIA_TYPE_VIDEO, .config_props = config_input, .draw_slice = null_draw_slice, .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 331 of file vf_boxblur.c.
const char* const var_names[] [static] |
{ "w", "h", "cw", "ch", "hsub", "vsub", NULL }
Definition at line 33 of file vf_boxblur.c.