lavfi/atempo: switch to an AVOptions-based system.
authorPavel Koshevoy <pkoshevoy@gmail.com>
Fri, 12 Apr 2013 03:21:04 +0000 (21:21 -0600)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 12 Apr 2013 07:31:33 +0000 (09:31 +0200)
Signed-off-by: Pavel Koshevoy <pkoshevoy@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavfilter/af_atempo.c
libavfilter/avfilter.c

index 6fe8b2c..d49f3d4 100644 (file)
@@ -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,
 };
index eca267e..eb381d5 100644 (file)
@@ -687,7 +687,6 @@ static const char *const filters_left_to_update[] = {
 #if FF_API_ACONVERT_FILTER
     "aconvert",
 #endif
-    "atempo",
     "buffer",
     "pan",
 };