Commit 8f3c440a authored by Pavel Koshevoy's avatar Pavel Koshevoy Committed by Michael Niedermayer

lavfi/atempo: switch to an AVOptions-based system.

Signed-off-by: 's avatarPavel Koshevoy <pkoshevoy@gmail.com>
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 9ab79612
...@@ -85,6 +85,8 @@ typedef enum { ...@@ -85,6 +85,8 @@ typedef enum {
* Filter state machine * Filter state machine
*/ */
typedef struct { typedef struct {
const AVClass *class;
// ring-buffer of input samples, necessary because some times // ring-buffer of input samples, necessary because some times
// input fragment position may be adjusted backwards: // input fragment position may be adjusted backwards:
uint8_t *buffer; uint8_t *buffer;
...@@ -146,6 +148,17 @@ typedef struct { ...@@ -146,6 +148,17 @@ typedef struct {
uint64_t nsamples_out; uint64_t nsamples_out;
} ATempoContext; } 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. * Reset filter to initial state, do not deallocate existing local buffers.
*/ */
...@@ -950,13 +963,9 @@ static int yae_flush(ATempoContext *atempo, ...@@ -950,13 +963,9 @@ static int yae_flush(ATempoContext *atempo,
static av_cold int init(AVFilterContext *ctx, const char *args) static av_cold int init(AVFilterContext *ctx, const char *args)
{ {
ATempoContext *atempo = ctx->priv; ATempoContext *atempo = ctx->priv;
// NOTE: this assumes that the caller has memset ctx->priv to 0:
atempo->format = AV_SAMPLE_FMT_NONE; atempo->format = AV_SAMPLE_FMT_NONE;
atempo->tempo = 1.0;
atempo->state = YAE_LOAD_FRAGMENT; atempo->state = YAE_LOAD_FRAGMENT;
return 0;
return args ? yae_set_tempo(ctx, args) : 0;
} }
static av_cold void uninit(AVFilterContext *ctx) static av_cold void uninit(AVFilterContext *ctx)
...@@ -1166,6 +1175,7 @@ AVFilter avfilter_af_atempo = { ...@@ -1166,6 +1175,7 @@ AVFilter avfilter_af_atempo = {
.query_formats = query_formats, .query_formats = query_formats,
.process_command = process_command, .process_command = process_command,
.priv_size = sizeof(ATempoContext), .priv_size = sizeof(ATempoContext),
.priv_class = &atempo_class,
.inputs = atempo_inputs, .inputs = atempo_inputs,
.outputs = atempo_outputs, .outputs = atempo_outputs,
}; };
...@@ -687,7 +687,6 @@ static const char *const filters_left_to_update[] = { ...@@ -687,7 +687,6 @@ static const char *const filters_left_to_update[] = {
#if FF_API_ACONVERT_FILTER #if FF_API_ACONVERT_FILTER
"aconvert", "aconvert",
#endif #endif
"atempo",
"buffer", "buffer",
"pan", "pan",
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment