mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-28 05:50:43 +00:00
avfilter/af_sofalizer: add framesize option
This commit is contained in:
parent
d06aae732c
commit
d6951e595a
@ -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
|
||||
|
@ -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 }
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user