X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavfilter%2Fvf_cropdetect.c;h=deeb9e480af1bb5eb9282d5546107009715240df;hb=3a3e8c35b63a40c4d59161097dc8652c15d13779;hp=7c7d0b953ab00a1acc6f15c0ff055d3744d6ab78;hpb=493240a522fca34882601fbeeda4e17aa40a0303;p=ffmpeg diff --git a/libavfilter/vf_cropdetect.c b/libavfilter/vf_cropdetect.c index 7c7d0b953ab..deeb9e480af 100644 --- a/libavfilter/vf_cropdetect.c +++ b/libavfilter/vf_cropdetect.c @@ -37,6 +37,7 @@ typedef struct CropDetectContext { int x1, y1, x2, y2; float limit; int round; + int skip; int reset_count; int frame_nb; int max_pixsteps[4]; @@ -127,10 +128,10 @@ static av_cold int init(AVFilterContext *ctx) { CropDetectContext *s = ctx->priv; - s->frame_nb = -2; + s->frame_nb = -1 * s->skip; - av_log(ctx, AV_LOG_VERBOSE, "limit:%f round:%d reset_count:%d\n", - s->limit, s->round, s->reset_count); + av_log(ctx, AV_LOG_VERBOSE, "limit:%f round:%d skip:%d reset_count:%d\n", + s->limit, s->round, s->skip, s->reset_count); return 0; } @@ -167,7 +168,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) int outliers, last_y; int limit = lrint(s->limit); - // ignore first 2 frames - they may be empty + // ignore first s->skip frames if (++s->frame_nb > 0) { metadata = &frame->metadata; @@ -247,6 +248,7 @@ static const AVOption cropdetect_options[] = { { "limit", "Threshold below which the pixel is considered black", OFFSET(limit), AV_OPT_TYPE_FLOAT, { .dbl = 24.0/255 }, 0, 65535, FLAGS }, { "round", "Value by which the width/height should be divisible", OFFSET(round), AV_OPT_TYPE_INT, { .i64 = 16 }, 0, INT_MAX, FLAGS }, { "reset", "Recalculate the crop area after this many frames", OFFSET(reset_count), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, FLAGS }, + { "skip", "Number of initial frames to skip", OFFSET(skip), AV_OPT_TYPE_INT, { .i64 = 2 }, 0, INT_MAX, FLAGS }, { "reset_count", "Recalculate the crop area after this many frames",OFFSET(reset_count),AV_OPT_TYPE_INT,{ .i64 = 0 }, 0, INT_MAX, FLAGS }, { "max_outliers", "Threshold count of outliers", OFFSET(max_outliers),AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, FLAGS }, { NULL } @@ -272,7 +274,7 @@ static const AVFilterPad avfilter_vf_cropdetect_outputs[] = { { NULL } }; -AVFilter ff_vf_cropdetect = { +const AVFilter ff_vf_cropdetect = { .name = "cropdetect", .description = NULL_IF_CONFIG_SMALL("Auto-detect crop size."), .priv_size = sizeof(CropDetectContext),