1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00

avfilter/af_amix: rename sum option to normalize

It makes more sense to still use provided weights.
This commit is contained in:
Paul B Mahol 2021-02-12 22:58:13 +01:00
parent 05a6d82d5c
commit 95b854dd06
2 changed files with 9 additions and 9 deletions

View File

@ -1936,10 +1936,10 @@ stream ends. The default value is 2 seconds.
Specify weight of each input audio stream as sequence.
Each weight is separated by space. By default all inputs have same weight.
@item sum
Do not scale inputs but instead do only summation of samples.
Beware of heavy clipping if inputs are not normalized prior of filtering
or output from @var{amix} normalized after filtering. By default is disabled.
@item normalize
Always scale inputs instead of only doing summation of samples.
Beware of heavy clipping if inputs are not normalized prior or after filtering
by this filter if this option is disabled. By default is enabled.
@end table
@subsection Commands

View File

@ -164,7 +164,7 @@ typedef struct MixContext {
int duration_mode; /**< mode for determining duration */
float dropout_transition; /**< transition time when an input drops out */
char *weights_str; /**< string for custom weights for every input */
int sum; /**< inputs are not scaled, only added */
int normalize; /**< if inputs are scaled */
int nb_channels; /**< number of channels */
int sample_rate; /**< sample rate */
@ -196,8 +196,8 @@ static const AVOption amix_options[] = {
OFFSET(dropout_transition), AV_OPT_TYPE_FLOAT, { .dbl = 2.0 }, 0, INT_MAX, A|F },
{ "weights", "Set weight for each input.",
OFFSET(weights_str), AV_OPT_TYPE_STRING, {.str="1 1"}, 0, 0, A|F|T },
{ "sum", "Do not scale inputs instead do only sum",
OFFSET(sum), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, A|F|T },
{ "normalize", "Scale inputs",
OFFSET(normalize), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1, A|F|T },
{ NULL }
};
@ -231,8 +231,8 @@ static void calculate_scales(MixContext *s, int nb_samples)
for (i = 0; i < s->nb_inputs; i++) {
if (s->input_state[i] & INPUT_ON) {
if (s->sum)
s->input_scale[i] = 1.0f;
if (!s->normalize)
s->input_scale[i] = FFABS(s->weights[i]);
else
s->input_scale[i] = 1.0f / s->scale_norm[i] * FFSIGN(s->weights[i]);
} else {