Commit 35a81791 authored by Paul B Mahol's avatar Paul B Mahol

avfilter/af_adelay: allow setting delays in seconds

parent e1f7881d
...@@ -683,6 +683,7 @@ Set list of delays in milliseconds for each channel separated by '|'. ...@@ -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 Unused delays will be silently ignored. If number of given delays is
smaller than number of channels all remaining channels will not be delayed. 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 to delay exact number of samples, append 'S' to number.
If you want instead to delay in seconds, append 's' to number.
@end table @end table
@subsection Examples @subsection Examples
......
...@@ -141,7 +141,7 @@ static int config_input(AVFilterLink *inlink) ...@@ -141,7 +141,7 @@ static int config_input(AVFilterLink *inlink)
p = s->delays; p = s->delays;
for (i = 0; i < s->nb_delays; i++) { for (i = 0; i < s->nb_delays; i++) {
ChanDelay *d = &s->chandelay[i]; ChanDelay *d = &s->chandelay[i];
float delay; float delay, div;
char type = 0; char type = 0;
int ret; int ret;
...@@ -152,8 +152,9 @@ static int config_input(AVFilterLink *inlink) ...@@ -152,8 +152,9 @@ static int config_input(AVFilterLink *inlink)
ret = av_sscanf(arg, "%d%c", &d->delay, &type); ret = av_sscanf(arg, "%d%c", &d->delay, &type);
if (ret != 2 || type != 'S') { if (ret != 2 || type != 'S') {
div = type == 's' ? 1.0 : 1000.0;
av_sscanf(arg, "%f", &delay); av_sscanf(arg, "%f", &delay);
d->delay = delay * inlink->sample_rate / 1000.0; d->delay = delay * inlink->sample_rate / div;
} }
if (d->delay < 0) { if (d->delay < 0) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment