]> git.sesse.net Git - ffmpeg/commitdiff
avfilter/af_sofalizer: add framesize option
authorPaul B Mahol <onemda@gmail.com>
Thu, 20 Dec 2018 19:22:36 +0000 (20:22 +0100)
committerPaul B Mahol <onemda@gmail.com>
Thu, 20 Dec 2018 19:30:07 +0000 (20:30 +0100)
doc/filters.texi
libavfilter/af_sofalizer.c

index ac4c9b44d8628a2b745518c030fda21eeabc8103..aac51bed690540a87afa4c3b5d51d2dbee914a54 100644 (file)
@@ -4506,6 +4506,11 @@ Descriptions with unrecognised channel names are ignored.
 
 @item lfegain
 Set custom gain for LFE channels. Value is in dB. Default is 0.
+
+@item framesize
+Set custom frame size in number of samples. Default is 1024.
+Allowed range is from 1024 to 96000. Only used if option @samp{type}
+is set to @var{freq}.
 @end table
 
 @subsection Examples
index 773093d9edca169692319e5bb612a89e3ab0e540..94e8c8a53eb3de4602ecc114881e24fce09b85dc 100644 (file)
@@ -92,6 +92,7 @@ typedef struct SOFAlizerContext {
     float elevation;     /* elevation of virtual loudspeakers (in deg.) */
     float radius;        /* distance virtual loudspeakers to listener (in metres) */
     int type;            /* processing type */
+    int framesize;       /* size of buffer */
 
     VirtualSpeaker vspkrpos[64];
 
@@ -662,7 +663,7 @@ static int load_data(AVFilterContext *ctx, int azim, int elev, float radius, int
     /* buffer length is longest IR plus max. delay -> next power of 2
        (32 - count leading zeros gives required exponent)  */
     s->buffer_length = 1 << (32 - ff_clz(n_max));
-    s->n_fft = n_fft = 1 << (32 - ff_clz(n_max + sample_rate));
+    s->n_fft = n_fft = 1 << (32 - ff_clz(n_max + s->framesize));
 
     if (s->type == FREQUENCY_DOMAIN) {
         av_fft_end(s->fft[0]);
@@ -823,7 +824,7 @@ static int config_input(AVFilterLink *inlink)
     if (s->type == FREQUENCY_DOMAIN) {
         inlink->partial_buf_size =
         inlink->min_samples =
-        inlink->max_samples = inlink->sample_rate;
+        inlink->max_samples = s->framesize;
     }
 
     /* gain -3 dB per channel, -6 dB to get LFE on a similar level */
@@ -881,6 +882,7 @@ static const AVOption sofalizer_options[] = {
     { "freq",      "frequency domain", 0,               AV_OPT_TYPE_CONST,  {.i64=1},       0,   0, .flags = FLAGS, "type" },
     { "speakers",  "set speaker custom positions", OFFSET(speakers_pos), AV_OPT_TYPE_STRING,  {.str=0},    0, 0, .flags = FLAGS },
     { "lfegain",   "set lfe gain",                 OFFSET(lfe_gain),     AV_OPT_TYPE_FLOAT,   {.dbl=0},   -9, 9, .flags = FLAGS },
+    { "framesize", "set frame size", OFFSET(framesize), AV_OPT_TYPE_INT,    {.i64=1024},1024,96000, .flags = FLAGS },
     { NULL }
 };