mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avfilter/vf_deflicker: add bypass option
Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
parent
9bebad86c7
commit
4c55144ee9
@ -6394,6 +6394,9 @@ Power mean
|
||||
@item median
|
||||
Median
|
||||
@end table
|
||||
|
||||
@item bypass
|
||||
Do not actually modify frame. Useful when one only wants metadata.
|
||||
@end table
|
||||
|
||||
@section dejudder
|
||||
|
@ -49,6 +49,7 @@ typedef struct DeflickerContext {
|
||||
|
||||
int size;
|
||||
int mode;
|
||||
int bypass;
|
||||
|
||||
int eof;
|
||||
int depth;
|
||||
@ -84,6 +85,7 @@ static const AVOption deflicker_options[] = {
|
||||
{ "cm", "cubic mean", 0, AV_OPT_TYPE_CONST, {.i64=CUBIC_MEAN}, 0, 0, FLAGS, "mode" },
|
||||
{ "pm", "power mean", 0, AV_OPT_TYPE_CONST, {.i64=POWER_MEAN}, 0, 0, FLAGS, "mode" },
|
||||
{ "median", "median", 0, AV_OPT_TYPE_CONST, {.i64=MEDIAN}, 0, 0, FLAGS, "mode" },
|
||||
{ "bypass", "leave frames unchanged", OFFSET(bypass), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
@ -377,9 +379,10 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *buf)
|
||||
}
|
||||
|
||||
s->get_factor(ctx, &f);
|
||||
s->deflicker(ctx, in->data[0], in->linesize[0], out->data[0], out->linesize[0],
|
||||
outlink->w, outlink->h, f);
|
||||
for (y = 1; y < s->nb_planes; y++) {
|
||||
if (!s->bypass)
|
||||
s->deflicker(ctx, in->data[0], in->linesize[0], out->data[0], out->linesize[0],
|
||||
outlink->w, outlink->h, f);
|
||||
for (y = 1 - s->bypass; y < s->nb_planes; y++) {
|
||||
av_image_copy_plane(out->data[y], out->linesize[y],
|
||||
in->data[y], in->linesize[y],
|
||||
s->planewidth[y] * (1 + (s->depth > 8)), s->planeheight[y]);
|
||||
|
Loading…
Reference in New Issue
Block a user