summaryrefslogtreecommitdiff
path: root/libavfilter
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2020-02-12 11:25:25 +0100
committerPaul B Mahol <onemda@gmail.com>2020-02-12 11:27:28 +0100
commit28743f1803721b6d0b7dcfcc1cb07c1e58f8cc12 (patch)
treec9d83bfe0a16ff0f9dd7cfcaaa2a6e137480e977 /libavfilter
parentd9751a116275ec0281ea7c4bd28d8d10b457e264 (diff)
avfilter/vf_median: implement percentile option
Diffstat (limited to 'libavfilter')
-rw-r--r--libavfilter/median.h1
-rw-r--r--libavfilter/vf_median.c3
2 files changed, 3 insertions, 1 deletions
diff --git a/libavfilter/median.h b/libavfilter/median.h
index 89ae0472b0..672607caa8 100644
--- a/libavfilter/median.h
+++ b/libavfilter/median.h
@@ -31,6 +31,7 @@ typedef struct MedianContext {
int planes;
int radius;
int radiusV;
+ float percentile;
int planewidth[4];
int planeheight[4];
diff --git a/libavfilter/vf_median.c b/libavfilter/vf_median.c
index ee264e1a74..0189fabd07 100644
--- a/libavfilter/vf_median.c
+++ b/libavfilter/vf_median.c
@@ -60,6 +60,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 },
+ { "percentile", "set median percentile", OFFSET(percentile), AV_OPT_TYPE_FLOAT, {.dbl=.5}, 0., 1., FLAGS },
{ NULL }
};
@@ -127,7 +128,7 @@ static void check_params(MedianContext *s, AVFilterLink *inlink)
}
}
- s->t = 2 * s->radius * s->radiusV + 2 * s->radius;
+ s->t = (2 * s->radius * s->radiusV + s->radiusV + s->radius) * 2.f * s->percentile;
}
static int config_input(AVFilterLink *inlink)