summaryrefslogtreecommitdiff
path: root/libavfilter/vf_median.c
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2019-10-30 10:14:23 +0100
committerPaul B Mahol <onemda@gmail.com>2019-10-31 10:32:43 +0100
commitb414cff6304071d5ef1e2b0a1b407e4fe3f58092 (patch)
treeb2f50e9c78ec257a5086053b5915e95799a6786d /libavfilter/vf_median.c
parent86a42e954e8e75175a65ef93d05fece8e001e36b (diff)
downloadffmpeg-b414cff6304071d5ef1e2b0a1b407e4fe3f58092.tar.gz
avfilter/vf_median: add radiusV option
Diffstat (limited to 'libavfilter/vf_median.c')
-rw-r--r--libavfilter/vf_median.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/libavfilter/vf_median.c b/libavfilter/vf_median.c
index 98296bcc2b..49f2351518 100644
--- a/libavfilter/vf_median.c
+++ b/libavfilter/vf_median.c
@@ -59,6 +59,7 @@
static const AVOption median_options[] = {
{ "radius", "set median radius", OFFSET(radius), AV_OPT_TYPE_INT, {.i64=1}, 1, 127, FLAGS },
{ "planes", "set planes to filter", OFFSET(planes), AV_OPT_TYPE_INT, {.i64=0xF}, 0, 0xF, FLAGS },
+ { "radiusV", "set median vertical radius", OFFSET(radiusV), AV_OPT_TYPE_INT, {.i64=0},0, 127, FLAGS },
{ NULL }
};
@@ -119,8 +120,9 @@ static int config_input(AVFilterLink *inlink)
s->planeheight[1] = s->planeheight[2] = AV_CEIL_RSHIFT(inlink->h, desc->log2_chroma_h);
s->planeheight[0] = s->planeheight[3] = inlink->h;
+ s->radiusV = !s->radiusV ? s->radius : s->radiusV;
s->nb_planes = av_pix_fmt_count_planes(inlink->format);
- s->t = 2 * s->radius * s->radius + 2 * s->radius;
+ s->t = 2 * s->radius * s->radiusV + 2 * s->radius;
for (int i = 0; i < s->nb_planes; i++) {
if (!(s->planes & (1 << i)))
@@ -131,13 +133,13 @@ static int config_input(AVFilterLink *inlink)
return AVERROR(EINVAL);
}
- if (s->planeheight[i] < s->radius * 2 + 1) {
- av_log(inlink->dst, AV_LOG_ERROR, "The %d plane height %d must be not less than %d\n", i, s->planeheight[i], s->radius * 2 + 1);
+ if (s->planeheight[i] < s->radiusV * 2 + 1) {
+ av_log(inlink->dst, AV_LOG_ERROR, "The %d plane height %d must be not less than %d\n", i, s->planeheight[i], s->radiusV * 2 + 1);
return AVERROR(EINVAL);
}
}
- s->nb_threads = FFMAX(1, FFMIN(s->planeheight[1] / (s->radius + 1), ff_filter_get_nb_threads(inlink->dst)));
+ s->nb_threads = FFMAX(1, FFMIN(s->planeheight[1] / (s->radiusV + 1), ff_filter_get_nb_threads(inlink->dst)));
s->bins = 1 << ((s->depth + 1) / 2);
s->fine_size = s->bins * s->bins * inlink->w;
s->coarse_size = s->bins * inlink->w;