|
|
@ -31,16 +31,8 @@ |
|
|
|
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
typedef struct { |
|
|
|
unsigned int frame; |
|
|
|
unsigned int frame; |
|
|
|
int vsub, hsub; |
|
|
|
|
|
|
|
} BBoxContext; |
|
|
|
} BBoxContext; |
|
|
|
|
|
|
|
|
|
|
|
static av_cold int init(AVFilterContext *ctx, const char *args) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
BBoxContext *bbox = ctx->priv; |
|
|
|
|
|
|
|
bbox->frame = 0; |
|
|
|
|
|
|
|
return 0; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static int query_formats(AVFilterContext *ctx) |
|
|
|
static int query_formats(AVFilterContext *ctx) |
|
|
|
{ |
|
|
|
{ |
|
|
|
static const enum AVPixelFormat pix_fmts[] = { |
|
|
|
static const enum AVPixelFormat pix_fmts[] = { |
|
|
@ -92,7 +84,6 @@ static const AVFilterPad bbox_inputs[] = { |
|
|
|
{ |
|
|
|
{ |
|
|
|
.name = "default", |
|
|
|
.name = "default", |
|
|
|
.type = AVMEDIA_TYPE_VIDEO, |
|
|
|
.type = AVMEDIA_TYPE_VIDEO, |
|
|
|
.get_video_buffer = ff_null_get_video_buffer, |
|
|
|
|
|
|
|
.filter_frame = filter_frame, |
|
|
|
.filter_frame = filter_frame, |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ NULL } |
|
|
|
{ NULL } |
|
|
@ -111,7 +102,6 @@ AVFilter avfilter_vf_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), |
|
|
|
.query_formats = query_formats, |
|
|
|
.query_formats = query_formats, |
|
|
|
.init = init, |
|
|
|
|
|
|
|
.inputs = bbox_inputs, |
|
|
|
.inputs = bbox_inputs, |
|
|
|
.outputs = bbox_outputs, |
|
|
|
.outputs = bbox_outputs, |
|
|
|
}; |
|
|
|
}; |
|
|
|