From 7aa99a69c7a41b3d1a01ea3548ce78dcab211870 Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Sun, 26 May 2013 09:22:02 +0000 Subject: lavfi/bbox: make min_val user configurable Signed-off-by: Paul B Mahol --- libavfilter/vf_bbox.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'libavfilter/vf_bbox.c') diff --git a/libavfilter/vf_bbox.c b/libavfilter/vf_bbox.c index db73f018bf..1c28f8c13e 100644 --- a/libavfilter/vf_bbox.c +++ b/libavfilter/vf_bbox.c @@ -23,6 +23,7 @@ * bounding box detection filter */ +#include "libavutil/opt.h" #include "libavutil/pixdesc.h" #include "libavutil/timestamp.h" #include "avfilter.h" @@ -30,9 +31,20 @@ #include "internal.h" typedef struct { - int unused; + const AVClass *class; + int min_val; } BBoxContext; +#define OFFSET(x) offsetof(BBoxContext, x) +#define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM + +static const AVOption bbox_options[] = { + { "min_val", "set minimum luminance value for bounding box", OFFSET(min_val), AV_OPT_TYPE_INT, { .i64 = 16 }, 0, 254, FLAGS }, + { NULL } +}; + +AVFILTER_DEFINE_CLASS(bbox); + static int query_formats(AVFilterContext *ctx) { static const enum AVPixelFormat pix_fmts[] = { @@ -58,7 +70,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) has_bbox = ff_calculate_bounding_box(&box, frame->data[0], frame->linesize[0], - inlink->w, inlink->h, 16); + inlink->w, inlink->h, bbox->min_val); w = box.x2 - box.x1 + 1; h = box.y2 - box.y1 + 1; @@ -100,6 +112,7 @@ AVFilter avfilter_vf_bbox = { .name = "bbox", .description = NULL_IF_CONFIG_SMALL("Compute bounding box for each frame."), .priv_size = sizeof(BBoxContext), + .priv_class = &bbox_class, .query_formats = query_formats, .inputs = bbox_inputs, .outputs = bbox_outputs, -- cgit v1.2.3