diff options
author | Paul B Mahol <onemda@gmail.com> | 2016-08-11 21:42:56 +0200 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2016-08-11 21:46:06 +0200 |
commit | b5314333dee195a53f3dd84c7394fd3c3ee82bb4 (patch) | |
tree | b3eb247dff1ed9523a416f98eeb526dfb1f88aa4 /libavfilter/af_adelay.c | |
parent | 0ed5c3ce81811dcd93f21cdd1204d4c68bca9654 (diff) |
avfilter/af_adelay: make it possible to delay channels by exact number of samples
Diffstat (limited to 'libavfilter/af_adelay.c')
-rw-r--r-- | libavfilter/af_adelay.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/libavfilter/af_adelay.c b/libavfilter/af_adelay.c index 09bf3c7732..187cacf28a 100644 --- a/libavfilter/af_adelay.c +++ b/libavfilter/af_adelay.c @@ -138,14 +138,20 @@ static int config_input(AVFilterLink *inlink) for (i = 0; i < s->nb_delays; i++) { ChanDelay *d = &s->chandelay[i]; float delay; + char type = 0; + int ret; if (!(arg = av_strtok(p, "|", &saveptr))) break; p = NULL; - sscanf(arg, "%f", &delay); - d->delay = delay * inlink->sample_rate / 1000.0; + ret = sscanf(arg, "%d%c", &d->delay, &type); + if (ret != 2 || type != 'S') { + sscanf(arg, "%f", &delay); + d->delay = delay * inlink->sample_rate / 1000.0; + } + if (d->delay < 0) { av_log(ctx, AV_LOG_ERROR, "Delay must be non negative number.\n"); return AVERROR(EINVAL); |