lavfi/bbox: make min_val user configurable
Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
parent
e9c3851d60
commit
7aa99a69c7
@ -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…
x
Reference in New Issue
Block a user