diff options
author | Paul B Mahol <onemda@gmail.com> | 2018-04-29 19:27:15 +0200 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2018-04-29 19:27:15 +0200 |
commit | c0f2abcc8d2acfc95e675a05303db958c3866b03 (patch) | |
tree | b9d58ba83908725666fbf9f4779e569e3e9fc3df | |
parent | 6e95d80e6fae978f8a44afc24b0c5097a062719f (diff) |
avfilter/vf_mix: make setting weights more user friendly
Signed-off-by: Paul B Mahol <onemda@gmail.com>
-rw-r--r-- | doc/filters.texi | 8 | ||||
-rw-r--r-- | libavfilter/vf_mix.c | 7 |
2 files changed, 12 insertions, 3 deletions
diff --git a/doc/filters.texi b/doc/filters.texi index 249d88265c..f31747ebf5 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -11177,7 +11177,9 @@ The number of inputs. If unspecified, it defaults to 2. @item weights Specify weight of each input video stream as sequence. -Each weight is separated by space. +Each weight is separated by space. If number of weights +is smaller than number of @var{frames} last specified +weight will be used for all remaining unset weights. @item scale Specify scale, if it is set it will be multiplied with sum @@ -15603,7 +15605,9 @@ The number of successive frames to mix. If unspecified, it defaults to 3. @item weights Specify weight of each input video frame. -Each weight is separated by space. +Each weight is separated by space. If number of weights is smaller than +number of @var{frames} last specified weight will be used for all remaining +unset weights. @item scale Specify scale, if it is set it will be multiplied with sum diff --git a/libavfilter/vf_mix.c b/libavfilter/vf_mix.c index 9ae61c59d2..14e0f19e2d 100644 --- a/libavfilter/vf_mix.c +++ b/libavfilter/vf_mix.c @@ -74,7 +74,7 @@ static av_cold int init(AVFilterContext *ctx) { MixContext *s = ctx->priv; char *p, *arg, *saveptr = NULL; - int i, ret; + int i, ret, last; s->tmix = !strcmp(ctx->filter->name, "tmix"); @@ -110,6 +110,11 @@ static av_cold int init(AVFilterContext *ctx) p = NULL; sscanf(arg, "%f", &s->weights[i]); s->wfactor += s->weights[i]; + last = i; + } + for (; i < s->nb_inputs; i++) { + s->weights[i] = s->weights[last]; + s->wfactor += s->weights[i]; } if (s->scale == 0) { s->wfactor = 1 / s->wfactor; |