lavfi/bbox: make min_val user configurable

Signed-off-by: Paul B Mahol <onemda@gmail.com>
pull/22/merge
Paul B Mahol 12 years ago
parent e9c3851d60
commit 7aa99a69c7
  1. 7
      doc/filters.texi
  2. 2
      libavfilter/version.h
  3. 17
      libavfilter/vf_bbox.c

@ -1925,6 +1925,13 @@ luminance value greater than the minimum allowed value.
The parameters describing the bounding box are printed on the filter The parameters describing the bounding box are printed on the filter
log. log.
The filter accepts the following option:
@table @option
@item min_val
Set the minimal luminance value. Default is @code{16}.
@end table
@section blackdetect @section blackdetect
Detect video intervals that are (almost) completely black. Can be Detect video intervals that are (almost) completely black. Can be

@ -31,7 +31,7 @@
#define LIBAVFILTER_VERSION_MAJOR 3 #define LIBAVFILTER_VERSION_MAJOR 3
#define LIBAVFILTER_VERSION_MINOR 70 #define LIBAVFILTER_VERSION_MINOR 70
#define LIBAVFILTER_VERSION_MICRO 100 #define LIBAVFILTER_VERSION_MICRO 101
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
LIBAVFILTER_VERSION_MINOR, \ LIBAVFILTER_VERSION_MINOR, \

@ -23,6 +23,7 @@
* bounding box detection filter * bounding box detection filter
*/ */
#include "libavutil/opt.h"
#include "libavutil/pixdesc.h" #include "libavutil/pixdesc.h"
#include "libavutil/timestamp.h" #include "libavutil/timestamp.h"
#include "avfilter.h" #include "avfilter.h"
@ -30,9 +31,20 @@
#include "internal.h" #include "internal.h"
typedef struct { typedef struct {
int unused; const AVClass *class;
int min_val;
} BBoxContext; } 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 int query_formats(AVFilterContext *ctx)
{ {
static const enum AVPixelFormat pix_fmts[] = { static const enum AVPixelFormat pix_fmts[] = {
@ -58,7 +70,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
has_bbox = has_bbox =
ff_calculate_bounding_box(&box, ff_calculate_bounding_box(&box,
frame->data[0], frame->linesize[0], frame->data[0], frame->linesize[0],
inlink->w, inlink->h, 16); inlink->w, inlink->h, bbox->min_val);
w = box.x2 - box.x1 + 1; w = box.x2 - box.x1 + 1;
h = box.y2 - box.y1 + 1; h = box.y2 - box.y1 + 1;
@ -100,6 +112,7 @@ AVFilter avfilter_vf_bbox = {
.name = "bbox", .name = "bbox",
.description = NULL_IF_CONFIG_SMALL("Compute bounding box for each frame."), .description = NULL_IF_CONFIG_SMALL("Compute bounding box for each frame."),
.priv_size = sizeof(BBoxContext), .priv_size = sizeof(BBoxContext),
.priv_class = &bbox_class,
.query_formats = query_formats, .query_formats = query_formats,
.inputs = bbox_inputs, .inputs = bbox_inputs,
.outputs = bbox_outputs, .outputs = bbox_outputs,

Loading…
Cancel
Save