mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-24 12:09:55 +00:00
avfilter/vf_amplify: add tolerance option
This commit is contained in:
parent
6f93868e46
commit
c679119a73
@ -5652,6 +5652,11 @@ Set threshold for difference amplification. Any difference greater or equal to
|
||||
this value will not alter source pixel. Default is 10.
|
||||
Allowed range is from 0 to 65535.
|
||||
|
||||
@item tolerance
|
||||
Set tolerance for difference amplification. Any difference lower to
|
||||
this value will not alter source pixel. Default is 0.
|
||||
Allowed range is from 0 to 65535.
|
||||
|
||||
@item low
|
||||
Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
|
||||
This option controls maximum possible value that will decrease source pixel value.
|
||||
|
@ -34,6 +34,7 @@ typedef struct AmplifyContext {
|
||||
int radius;
|
||||
float factor;
|
||||
float threshold;
|
||||
float tolerance;
|
||||
int planes;
|
||||
|
||||
int llimit;
|
||||
@ -104,6 +105,7 @@ static int amplify_frame(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs
|
||||
const int radius = s->radius;
|
||||
const int nb_inputs = s->nb_inputs;
|
||||
const float threshold = s->threshold;
|
||||
const float tolerance = s->tolerance;
|
||||
const float factor = s->factor;
|
||||
const int llimit = s->llimit;
|
||||
const int hlimit = s->hlimit;
|
||||
@ -136,7 +138,7 @@ static int amplify_frame(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs
|
||||
|
||||
avg = sum / (float)nb_inputs;
|
||||
diff = src - avg;
|
||||
if (fabsf(diff) < threshold) {
|
||||
if (fabsf(diff) < threshold && fabsf(diff) > tolerance) {
|
||||
int amp;
|
||||
if (diff < 0) {
|
||||
amp = -FFMIN(FFABS(diff * factor), llimit);
|
||||
@ -179,7 +181,7 @@ static int amplify_frame(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs
|
||||
avg = sum / (float)nb_inputs;
|
||||
diff = src - avg;
|
||||
|
||||
if (fabsf(diff) < threshold) {
|
||||
if (fabsf(diff) < threshold && fabsf(diff) > tolerance) {
|
||||
int amp;
|
||||
if (diff < 0) {
|
||||
amp = -FFMIN(FFABS(diff * factor), llimit);
|
||||
@ -271,6 +273,7 @@ static const AVOption amplify_options[] = {
|
||||
{ "radius", "set radius", OFFSET(radius), AV_OPT_TYPE_INT, {.i64=2}, 1, 63, .flags = FLAGS },
|
||||
{ "factor", "set factor", OFFSET(factor), AV_OPT_TYPE_FLOAT, {.dbl=2}, 0, UINT16_MAX, .flags = FLAGS },
|
||||
{ "threshold", "set threshold", OFFSET(threshold), AV_OPT_TYPE_FLOAT, {.dbl=10}, 0, UINT16_MAX, .flags = FLAGS },
|
||||
{ "tolerance", "set tolerance", OFFSET(tolerance), AV_OPT_TYPE_FLOAT, {.dbl=0}, 0, UINT16_MAX, .flags = FLAGS },
|
||||
{ "low", "set low limit for amplification", OFFSET(llimit), AV_OPT_TYPE_INT, {.i64=UINT16_MAX}, 0, UINT16_MAX, .flags = FLAGS },
|
||||
{ "high", "set high limit for amplification", OFFSET(hlimit), AV_OPT_TYPE_INT, {.i64=UINT16_MAX}, 0, UINT16_MAX, .flags = FLAGS },
|
||||
{ "planes", "set what planes to filter", OFFSET(planes), AV_OPT_TYPE_FLAGS, {.i64=7}, 0, 15, FLAGS },
|
||||
|
Loading…
Reference in New Issue
Block a user