mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-03 09:01:54 -05:00
filter-graph: add latency reporting to the convolver
This commit is contained in:
parent
e545efdb6e
commit
dbca286de8
1 changed files with 20 additions and 2 deletions
|
|
@ -687,7 +687,8 @@ struct convolver_impl {
|
||||||
struct spa_log *log;
|
struct spa_log *log;
|
||||||
struct spa_fga_dsp *dsp;
|
struct spa_fga_dsp *dsp;
|
||||||
unsigned long rate;
|
unsigned long rate;
|
||||||
float *port[2];
|
float *port[3];
|
||||||
|
unsigned long latency;
|
||||||
|
|
||||||
struct convolver *conv;
|
struct convolver *conv;
|
||||||
};
|
};
|
||||||
|
|
@ -1068,6 +1069,8 @@ static void * convolver_instantiate(const struct spa_fga_plugin *plugin, const s
|
||||||
if (impl->conv == NULL)
|
if (impl->conv == NULL)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
impl->latency = n_samples;
|
||||||
|
|
||||||
free(samples);
|
free(samples);
|
||||||
|
|
||||||
return impl;
|
return impl;
|
||||||
|
|
@ -1101,8 +1104,20 @@ static struct spa_fga_port convolve_ports[] = {
|
||||||
.name = "In",
|
.name = "In",
|
||||||
.flags = SPA_FGA_PORT_INPUT | SPA_FGA_PORT_AUDIO,
|
.flags = SPA_FGA_PORT_INPUT | SPA_FGA_PORT_AUDIO,
|
||||||
},
|
},
|
||||||
|
{ .index = 2,
|
||||||
|
.name = "latency",
|
||||||
|
.hint = SPA_FGA_HINT_LATENCY,
|
||||||
|
.flags = SPA_FGA_PORT_OUTPUT | SPA_FGA_PORT_CONTROL,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void convolver_activate(void * Instance)
|
||||||
|
{
|
||||||
|
struct convolver_impl *impl = Instance;
|
||||||
|
if (impl->port[2] != NULL)
|
||||||
|
impl->port[2][0] = impl->latency;
|
||||||
|
}
|
||||||
|
|
||||||
static void convolver_deactivate(void * Instance)
|
static void convolver_deactivate(void * Instance)
|
||||||
{
|
{
|
||||||
struct convolver_impl *impl = Instance;
|
struct convolver_impl *impl = Instance;
|
||||||
|
|
@ -1114,17 +1129,20 @@ static void convolve_run(void * Instance, unsigned long SampleCount)
|
||||||
struct convolver_impl *impl = Instance;
|
struct convolver_impl *impl = Instance;
|
||||||
if (impl->port[1] != NULL && impl->port[0] != NULL)
|
if (impl->port[1] != NULL && impl->port[0] != NULL)
|
||||||
convolver_run(impl->conv, impl->port[1], impl->port[0], SampleCount);
|
convolver_run(impl->conv, impl->port[1], impl->port[0], SampleCount);
|
||||||
|
if (impl->port[2] != NULL)
|
||||||
|
impl->port[2][0] = impl->latency;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct spa_fga_descriptor convolve_desc = {
|
static const struct spa_fga_descriptor convolve_desc = {
|
||||||
.name = "convolver",
|
.name = "convolver",
|
||||||
.flags = SPA_FGA_DESCRIPTOR_SUPPORTS_NULL_DATA,
|
.flags = SPA_FGA_DESCRIPTOR_SUPPORTS_NULL_DATA,
|
||||||
|
|
||||||
.n_ports = 2,
|
.n_ports = SPA_N_ELEMENTS(convolve_ports),
|
||||||
.ports = convolve_ports,
|
.ports = convolve_ports,
|
||||||
|
|
||||||
.instantiate = convolver_instantiate,
|
.instantiate = convolver_instantiate,
|
||||||
.connect_port = convolver_connect_port,
|
.connect_port = convolver_connect_port,
|
||||||
|
.activate = convolver_activate,
|
||||||
.deactivate = convolver_deactivate,
|
.deactivate = convolver_deactivate,
|
||||||
.run = convolve_run,
|
.run = convolve_run,
|
||||||
.cleanup = convolver_cleanup,
|
.cleanup = convolver_cleanup,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue