avfilter/af_adelay: allow setting delays in seconds
This commit is contained in:
parent
e1f7881d92
commit
35a8179149
@ -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)
|
|||||||
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)
|
|||||||
|
|
||||||
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) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user