mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-02-04 06:08:26 +02:00
lavfi/pan: allow negative gain parameters also for other inputs than the first named
Expands the parser to also accept the separator '-' in addition to '+', and take the negative sign into consideration. The optional sign for the first factor in the expression is already covered by parsing for an integer. Signed-off-by: Moritz Barsnick <barsnick@gmx.net> Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
584eea5bf3
commit
0700d02a69
@ -3026,7 +3026,7 @@ output channel layout or number of channels
|
||||
|
||||
@item outdef
|
||||
output channel specification, of the form:
|
||||
"@var{out_name}=[@var{gain}*]@var{in_name}[+[@var{gain}*]@var{in_name}...]"
|
||||
"@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
|
||||
|
||||
@item out_name
|
||||
output channel to define, either a channel name (FL, FR, etc.) or a channel
|
||||
|
@ -102,7 +102,7 @@ static av_cold int init(AVFilterContext *ctx)
|
||||
{
|
||||
PanContext *const pan = ctx->priv;
|
||||
char *arg, *arg0, *tokenizer, *args = av_strdup(pan->args);
|
||||
int out_ch_id, in_ch_id, len, named, ret;
|
||||
int out_ch_id, in_ch_id, len, named, ret, sign = 1;
|
||||
int nb_in_channels[2] = { 0, 0 }; // number of unnamed and named input channels
|
||||
double gain;
|
||||
|
||||
@ -178,14 +178,18 @@ static av_cold int init(AVFilterContext *ctx)
|
||||
ret = AVERROR(EINVAL);
|
||||
goto fail;
|
||||
}
|
||||
pan->gain[out_ch_id][in_ch_id] = gain;
|
||||
pan->gain[out_ch_id][in_ch_id] = sign * gain;
|
||||
skip_spaces(&arg);
|
||||
if (!*arg)
|
||||
break;
|
||||
if (*arg != '+') {
|
||||
if (*arg == '-') {
|
||||
sign = -1;
|
||||
} else if (*arg != '+') {
|
||||
av_log(ctx, AV_LOG_ERROR, "Syntax error near \"%.8s\"\n", arg);
|
||||
ret = AVERROR(EINVAL);
|
||||
goto fail;
|
||||
} else {
|
||||
sign = 1;
|
||||
}
|
||||
arg++;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user