Browse Source

lavfi/atempo: raise max tempo limit (v2)

tags/n4.1
Pavel Koshevoy 7 years ago
parent
commit
29cddc99cd
2 changed files with 17 additions and 6 deletions
  1. +14
    -3
      doc/filters.texi
  2. +3
    -3
      libavfilter/af_atempo.c

+ 14
- 3
doc/filters.texi View File

@@ -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



+ 3
- 3
libavfilter/af_atempo.c View File

@@ -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;


Loading…
Cancel
Save