summaryrefslogtreecommitdiff
path: root/libavfilter/af_atempo.c
diff options
context:
space:
mode:
authorPavel Koshevoy <pkoshevoy@gmail.com>2013-04-11 21:21:04 -0600
committerMichael Niedermayer <michaelni@gmx.at>2013-04-12 09:31:33 +0200
commit8f3c440a39e8de88e24260a7dea833558f44110c (patch)
treecaa89bc07e2186187888f9fa2b9c72129cf59e43 /libavfilter/af_atempo.c
parent9ab796127a38e047bc76eb0a825ba6c90fb945da (diff)
lavfi/atempo: switch to an AVOptions-based system.
Signed-off-by: Pavel Koshevoy <pkoshevoy@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavfilter/af_atempo.c')
-rw-r--r--libavfilter/af_atempo.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/libavfilter/af_atempo.c b/libavfilter/af_atempo.c
index 6fe8b2c927..d49f3d4b42 100644
--- a/libavfilter/af_atempo.c
+++ b/libavfilter/af_atempo.c
@@ -85,6 +85,8 @@ typedef enum {
* Filter state machine
*/
typedef struct {
+ const AVClass *class;
+
// ring-buffer of input samples, necessary because some times
// input fragment position may be adjusted backwards:
uint8_t *buffer;
@@ -146,6 +148,17 @@ typedef struct {
uint64_t nsamples_out;
} ATempoContext;
+#define OFFSET(x) offsetof(ATempoContext, x)
+
+static const AVOption atempo_options[] = {
+ { "tempo", "set tempo scale factor",
+ OFFSET(tempo), AV_OPT_TYPE_DOUBLE, { .dbl = 1.0 }, 0.5, 2.0,
+ AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_FILTERING_PARAM },
+ { NULL }
+};
+
+AVFILTER_DEFINE_CLASS(atempo);
+
/**
* Reset filter to initial state, do not deallocate existing local buffers.
*/
@@ -950,13 +963,9 @@ static int yae_flush(ATempoContext *atempo,
static av_cold int init(AVFilterContext *ctx, const char *args)
{
ATempoContext *atempo = ctx->priv;
-
- // NOTE: this assumes that the caller has memset ctx->priv to 0:
atempo->format = AV_SAMPLE_FMT_NONE;
- atempo->tempo = 1.0;
atempo->state = YAE_LOAD_FRAGMENT;
-
- return args ? yae_set_tempo(ctx, args) : 0;
+ return 0;
}
static av_cold void uninit(AVFilterContext *ctx)
@@ -1166,6 +1175,7 @@ AVFilter avfilter_af_atempo = {
.query_formats = query_formats,
.process_command = process_command,
.priv_size = sizeof(ATempoContext),
+ .priv_class = &atempo_class,
.inputs = atempo_inputs,
.outputs = atempo_outputs,
};