avfilter/af_surround: expose window size to user
authorPaul B Mahol <onemda@gmail.com>
Tue, 23 Apr 2019 09:52:56 +0000 (11:52 +0200)
committerPaul B Mahol <onemda@gmail.com>
Tue, 23 Apr 2019 11:37:41 +0000 (13:37 +0200)
doc/filters.texi
libavfilter/af_surround.c

index 6ce2781..33e8ea7 100644 (file)
@@ -4901,6 +4901,9 @@ Set spread usage of stereo image across X axis for each channel.
 @item fcy, fly, fry, bly, bry, sly, sry, bcy
 Set spread usage of stereo image across Y axis for each channel.
 
+@item win_size
+Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
+
 @item win_func
 Set window function.
 
index 4a228b6..2e883a9 100644 (file)
@@ -40,6 +40,7 @@ typedef struct AudioSurroundContext {
     float lfe_in;
     float lfe_out;
     int   lfe_mode;
+    int   win_size;
     int   win_func;
     float overlap;
 
@@ -1416,7 +1417,7 @@ fail:
         return AVERROR(EINVAL);
     }
 
-    s->buf_size = 4096;
+    s->buf_size = 1 << av_log2(s->win_size);
     s->pts = AV_NOPTS_VALUE;
 
     s->window_func_lut = av_calloc(s->buf_size, sizeof(*s->window_func_lut));
@@ -1615,6 +1616,7 @@ static const AVOption surround_options[] = {
     { "sly",       "set side left channel y spread",     OFFSET(sl_y),          AV_OPT_TYPE_FLOAT,  {.dbl=1},     0,  15, FLAGS },
     { "sry",       "set side right channel y spread",    OFFSET(sr_y),          AV_OPT_TYPE_FLOAT,  {.dbl=1},     0,  15, FLAGS },
     { "bcy",       "set back center channel y spread",   OFFSET(bc_y),          AV_OPT_TYPE_FLOAT,  {.dbl=1},     0,  15, FLAGS },
+    { "win_size", "set window size", OFFSET(win_size), AV_OPT_TYPE_INT, {.i64 = 4096}, 1024, 65536, FLAGS },
     { "win_func", "set window function", OFFSET(win_func), AV_OPT_TYPE_INT, {.i64 = WFUNC_HANNING}, 0, NB_WFUNC-1, FLAGS, "win_func" },
         { "rect",     "Rectangular",      0, AV_OPT_TYPE_CONST, {.i64=WFUNC_RECT},     0, 0, FLAGS, "win_func" },
         { "bartlett", "Bartlett",         0, AV_OPT_TYPE_CONST, {.i64=WFUNC_BARTLETT}, 0, 0, FLAGS, "win_func" },