avfilter/af_adelay: allow setting delays in seconds

This commit is contained in:
Paul B Mahol 2019-01-01 13:33:16 +01:00
parent e1f7881d92
commit 35a8179149
2 changed files with 4 additions and 2 deletions

View File

@ -683,6 +683,7 @@ Set list of delays in milliseconds for each channel separated by '|'.
Unused delays will be silently ignored. If number of given delays is
smaller than number of channels all remaining channels will not be delayed.
If you want to delay exact number of samples, append 'S' to number.
If you want instead to delay in seconds, append 's' to number.
@end table
@subsection Examples

View File

@ -141,7 +141,7 @@ static int config_input(AVFilterLink *inlink)
p = s->delays;
for (i = 0; i < s->nb_delays; i++) {
ChanDelay *d = &s->chandelay[i];
float delay;
float delay, div;
char type = 0;
int ret;
@ -152,8 +152,9 @@ static int config_input(AVFilterLink *inlink)
ret = av_sscanf(arg, "%d%c", &d->delay, &type);
if (ret != 2 || type != 'S') {
div = type == 's' ? 1.0 : 1000.0;
av_sscanf(arg, "%f", &delay);
d->delay = delay * inlink->sample_rate / 1000.0;
d->delay = delay * inlink->sample_rate / div;
}
if (d->delay < 0) {