diff options
author | Pavel Koshevoy <pkoshevoy@gmail.com> | 2018-06-14 19:19:17 -0600 |
---|---|---|
committer | Pavel Koshevoy <pkoshevoy@gmail.com> | 2018-06-14 19:19:17 -0600 |
commit | 29cddc99cd8302e462bbae572e885e88f63d6dc3 (patch) | |
tree | 3cc416352f242788da74c735c621a7758e84ab07 | |
parent | 78298bce70edda705ebfc61ee1d0b8a3b3dad772 (diff) | |
download | ffmpeg-streaming-29cddc99cd8302e462bbae572e885e88f63d6dc3.zip ffmpeg-streaming-29cddc99cd8302e462bbae572e885e88f63d6dc3.tar.gz |
lavfi/atempo: raise max tempo limit (v2)
-rw-r--r-- | doc/filters.texi | 17 | ||||
-rw-r--r-- | libavfilter/af_atempo.c | 6 |
2 files changed, 17 insertions, 6 deletions
diff --git a/doc/filters.texi b/doc/filters.texi index de4b61c..fb5f3ee 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -1986,7 +1986,12 @@ Adjust audio tempo. The filter accepts exactly one parameter, the audio tempo. If not specified then the filter will assume nominal 1.0 tempo. Tempo must -be in the [0.5, 2.0] range. +be in the [0.5, 100.0] range. + +Note that tempo greater than 2 will skip some samples rather than +blend them in. If for any reason this is a concern it is always +possible to daisy-chain several instances of atempo to achieve the +desired product tempo. @subsection Examples @@ -1998,9 +2003,15 @@ atempo=0.8 @end example @item -To speed up audio to 125% tempo: +To speed up audio to 300% tempo: +@example +atempo=3 +@end example + +@item +To speed up audio to 300% tempo by daisy-chaining two atempo instances: @example -atempo=1.25 +atempo=sqrt(3),atempo=sqrt(3) @end example @end itemize diff --git a/libavfilter/af_atempo.c b/libavfilter/af_atempo.c index 8b214bc..52f15f2 100644 --- a/libavfilter/af_atempo.c +++ b/libavfilter/af_atempo.c @@ -153,7 +153,7 @@ typedef struct ATempoContext { static const AVOption atempo_options[] = { { "tempo", "set tempo scale factor", - OFFSET(tempo), AV_OPT_TYPE_DOUBLE, { .dbl = 1.0 }, 0.5, 2.0, + OFFSET(tempo), AV_OPT_TYPE_DOUBLE, { .dbl = 1.0 }, 0.5, 100.0, AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_FILTERING_PARAM }, { NULL } }; @@ -439,8 +439,8 @@ static int yae_load_data(ATempoContext *atempo, return 0; } - // samples are not expected to be skipped: - av_assert0(read_size <= atempo->ring); + // samples are not expected to be skipped, unless tempo is greater than 2: + av_assert0(read_size <= atempo->ring || atempo->tempo > 2.0); while (atempo->position[0] < stop_here && src < src_end) { int src_samples = (src_end - src) / atempo->stride; |