]> git.sesse.net Git - ffmpeg/blobdiff - libavfilter/af_asetnsamples.c
Merge remote-tracking branch 'qatar/master'
[ffmpeg] / libavfilter / af_asetnsamples.c
index 8805d53a9714831d42c3a634698537c8c35a3144..467af76571f47c3bc451049bacf888554e42273c 100644 (file)
@@ -43,12 +43,13 @@ typedef struct {
 } ASNSContext;
 
 #define OFFSET(x) offsetof(ASNSContext, x)
+#define FLAGS AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
 
 static const AVOption asetnsamples_options[] = {
-{ "pad", "pad last frame with zeros", OFFSET(pad), AV_OPT_TYPE_INT, {.dbl=1}, 0, 1 },
-{ "p",   "pad last frame with zeros", OFFSET(pad), AV_OPT_TYPE_INT, {.dbl=1}, 0, 1 },
-{ "nb_out_samples", "set the number of per-frame output samples", OFFSET(nb_out_samples), AV_OPT_TYPE_INT, {.dbl=1024}, 1, INT_MAX },
-{ "n",              "set the number of per-frame output samples", OFFSET(nb_out_samples), AV_OPT_TYPE_INT, {.dbl=1024}, 1, INT_MAX },
+{ "pad", "pad last frame with zeros", OFFSET(pad), AV_OPT_TYPE_INT, {.i64=1}, 0, 1, FLAGS },
+{ "p",   "pad last frame with zeros", OFFSET(pad), AV_OPT_TYPE_INT, {.i64=1}, 0, 1, FLAGS },
+{ "nb_out_samples", "set the number of per-frame output samples", OFFSET(nb_out_samples), AV_OPT_TYPE_INT, {.i64=1024}, 1, INT_MAX, FLAGS },
+{ "n",              "set the number of per-frame output samples", OFFSET(nb_out_samples), AV_OPT_TYPE_INT, {.i64=1024}, 1, INT_MAX, FLAGS },
 { NULL }
 };
 
@@ -62,10 +63,8 @@ static av_cold int init(AVFilterContext *ctx, const char *args)
     asns->class = &asetnsamples_class;
     av_opt_set_defaults(asns);
 
-    if ((err = av_set_options_string(asns, args, "=", ":")) < 0) {
-        av_log(ctx, AV_LOG_ERROR, "Error parsing options string: '%s'\n", args);
+    if ((err = av_set_options_string(asns, args, "=", ":")) < 0)
         return err;
-    }
 
     asns->next_out_pts = AV_NOPTS_VALUE;
     av_log(ctx, AV_LOG_VERBOSE, "nb_out_samples:%d pad:%d\n", asns->nb_out_samples, asns->pad);
@@ -153,7 +152,7 @@ static int filter_samples(AVFilterLink *inlink, AVFilterBufferRef *insamples)
         asns->next_out_pts = insamples->pts;
     avfilter_unref_buffer(insamples);
 
-    if (av_audio_fifo_size(asns->fifo) >= asns->nb_out_samples)
+    while (av_audio_fifo_size(asns->fifo) >= asns->nb_out_samples)
         push_samples(outlink);
     return 0;
 }
@@ -202,4 +201,5 @@ AVFilter avfilter_af_asetnsamples = {
         },
         { .name = NULL }
     },
+    .priv_class = &asetnsamples_class,
 };