[FFmpeg-devel] [PATCH] lavfi/atempo: raise max tempo limit (v2)
Pavel Koshevoy
pkoshevoy at gmail.com
Fri Jun 15 04:20:33 EEST 2018
On 06/13/2018 07:39 AM, Pavel Koshevoy wrote:
> On Thu, Jun 7, 2018 at 8:16 PM Pavel Koshevoy <pkoshevoy at gmail.com> wrote:
>> ---
>> doc/filters.texi | 17 ++++++++++++++---
>> libavfilter/af_atempo.c | 6 +++---
>> 2 files changed, 17 insertions(+), 6 deletions(-)
>>
>> diff --git a/doc/filters.texi b/doc/filters.texi
>> index 256ab42b00..6b98b04774 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:
>> + at example
>> +atempo=3
>> + at end example
>> +
>> + at 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 8b214bccd7..52f15f2769 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;
>> --
>> 2.16.4
>>
>
> Any objections if I apply this?
>
> Pavel.
Applied, pushed
Pavel.
More information about the ffmpeg-devel
mailing list