avfilter/guided: simplify subsampling assignment.

Reduce option ranges to effective values.

Signed-off-by: Gyan Doshi <ffmpeg@gyani.pro>
Reviewed-by: Steven Liu <liuqi05@kuaishou.com>
pull/362/head
Gyan Doshi 4 years ago
parent ef58f48d59
commit 93ddb9b617
  1. 26
      libavfilter/vf_guided.c

@ -61,10 +61,10 @@ typedef struct GuidedContext {
static const AVOption guided_options[] = {
{ "radius", "set the box radius", OFFSET(radius), AV_OPT_TYPE_INT, {.i64 = 3 }, 1, 20, FLAGS },
{ "eps", "set the regularization parameter (with square)", OFFSET(eps), AV_OPT_TYPE_FLOAT, {.dbl = 0.01 }, 0.0, 1, FLAGS },
{ "mode", "set filtering mode (0: basic mode; 1: fast mode)", OFFSET(mode), AV_OPT_TYPE_INT, {.i64 = BASIC}, 0, NB_MODES - 1, FLAGS, "mode" },
{ "mode", "set filtering mode (0: basic mode; 1: fast mode)", OFFSET(mode), AV_OPT_TYPE_INT, {.i64 = BASIC}, BASIC, NB_MODES - 1, FLAGS, "mode" },
{ "basic", "basic guided filter", 0, AV_OPT_TYPE_CONST, {.i64 = BASIC}, 0, 0, FLAGS, "mode" },
{ "fast", "fast guided filter", 0, AV_OPT_TYPE_CONST, {.i64 = FAST }, 0, 0, FLAGS, "mode" },
{ "sub", "subsampling ratio", OFFSET(sub), AV_OPT_TYPE_INT, {.i64 = 1 }, 1, 64, FLAGS },
{ "sub", "subsampling ratio for fast mode", OFFSET(sub), AV_OPT_TYPE_INT, {.i64 = 4 }, 2, 64, FLAGS },
{ "planes", "set planes to filter", OFFSET(planes), AV_OPT_TYPE_INT, {.i64=1 }, 0, 0xF, FLAGS },
{ NULL }
};
@ -160,24 +160,14 @@ static int config_input(AVFilterLink *inlink)
}
if (s->mode == BASIC) {
if (s->sub != 1) {
av_log(ctx, AV_LOG_WARNING, "Subsampling ratio is 1 in basic mode.\n");
s->sub = 1;
}
s->sub = 1;
}
else if (s->mode == FAST) {
if (s->sub == 1) {
av_log(ctx, AV_LOG_WARNING, "Subsampling ratio is larger than 1 in fast mode.\n");
s->sub = 4;
}
if (s->radius >= s->sub)
s->radius = s->radius / s->sub;
else {
s->radius = 1;
}
}
else {
return AVERROR_BUG;
if (s->radius >= s->sub)
s->radius = s->radius / s->sub;
else {
s->radius = 1;
}
}
s->depth = desc->comp[0].depth;

Loading…
Cancel
Save