PipeWire 1.0.5
|
Files | |
file | filter.h |
pipewire/filter.h | |
Data Structures | |
struct | pw_filter_events |
Events for a filter. More... | |
struct | pw_filter |
Enumerations | |
enum | pw_filter_state { PW_FILTER_STATE_ERROR = -1 , PW_FILTER_STATE_UNCONNECTED = 0 , PW_FILTER_STATE_CONNECTING = 1 , PW_FILTER_STATE_PAUSED = 2 , PW_FILTER_STATE_STREAMING = 3 } |
The state of a filter More... | |
enum | pw_filter_flags { PW_FILTER_FLAG_NONE = 0 , PW_FILTER_FLAG_INACTIVE = (1 << 0) , PW_FILTER_FLAG_DRIVER = (1 << 1) , PW_FILTER_FLAG_RT_PROCESS = (1 << 2) , PW_FILTER_FLAG_CUSTOM_LATENCY = (1 << 3) , PW_FILTER_FLAG_TRIGGER = (1 << 4) , PW_FILTER_FLAG_ASYNC = (1 << 5) } |
Extra flags that can be used in pw_filter_connect() More... | |
enum | pw_filter_port_flags { PW_FILTER_PORT_FLAG_NONE = 0 , PW_FILTER_PORT_FLAG_MAP_BUFFERS = (1 << 0) , PW_FILTER_PORT_FLAG_ALLOC_BUFFERS = (1 << 1) } |
Macros | |
#define | PW_VERSION_FILTER_EVENTS 1 |
Functions | |
const char * | pw_filter_state_as_string (enum pw_filter_state state) |
Convert a filter state to a readable string | |
struct pw_filter * | pw_filter_new (struct pw_core *core, const char *name, struct pw_properties *props) |
Create a new unconneced Filter. | |
struct pw_filter * | pw_filter_new_simple (struct pw_loop *loop, const char *name, struct pw_properties *props, const struct pw_filter_events *events, void *data) |
void | pw_filter_destroy (struct pw_filter *filter) |
Destroy a filter | |
void | pw_filter_add_listener (struct pw_filter *filter, struct spa_hook *listener, const struct pw_filter_events *events, void *data) |
enum pw_filter_state | pw_filter_get_state (struct pw_filter *filter, const char **error) |
const char * | pw_filter_get_name (struct pw_filter *filter) |
struct pw_core * | pw_filter_get_core (struct pw_filter *filter) |
int | pw_filter_connect (struct pw_filter *filter, enum pw_filter_flags flags, const struct spa_pod **params, uint32_t n_params) |
Connect a filter for processing. | |
uint32_t | pw_filter_get_node_id (struct pw_filter *filter) |
Get the node ID of the filter. | |
int | pw_filter_disconnect (struct pw_filter *filter) |
Disconnect filter | |
void * | pw_filter_add_port (struct pw_filter *filter, enum pw_direction direction, enum pw_filter_port_flags flags, size_t port_data_size, struct pw_properties *props, const struct spa_pod **params, uint32_t n_params) |
add a port to the filter, returns user data of port_data_size. | |
int | pw_filter_remove_port (void *port_data) |
remove a port from the filter | |
const struct pw_properties * | pw_filter_get_properties (struct pw_filter *filter, void *port_data) |
get properties, port_data of NULL will give global properties | |
int | pw_filter_update_properties (struct pw_filter *filter, void *port_data, const struct spa_dict *dict) |
Update properties, use NULL port_data for global filter properties. | |
int | pw_filter_set_error (struct pw_filter *filter, int res, const char *error,...) |
Set the filter in error state. | |
int | pw_filter_update_params (struct pw_filter *filter, void *port_data, const struct spa_pod **params, uint32_t n_params) |
Update params, use NULL port_data for global filter params. | |
int | pw_filter_get_time (struct pw_filter *filter, struct pw_time *time) |
Query the time on the filter, deprecated, use the spa_io_position in the process() method for timing information. | |
uint64_t | pw_filter_get_nsec (struct pw_filter *filter) |
Get the current time in nanoseconds. | |
struct pw_buffer * | pw_filter_dequeue_buffer (void *port_data) |
Get a buffer that can be filled for output ports or consumed for input ports. | |
int | pw_filter_queue_buffer (void *port_data, struct pw_buffer *buffer) |
Submit a buffer for playback or recycle a buffer for capture. | |
void * | pw_filter_get_dsp_buffer (void *port_data, uint32_t n_samples) |
Get a data pointer to the buffer data. | |
int | pw_filter_set_active (struct pw_filter *filter, bool active) |
Activate or deactivate the filter | |
int | pw_filter_flush (struct pw_filter *filter, bool drain) |
Flush a filter. | |
bool | pw_filter_is_driving (struct pw_filter *filter) |
Check if the filter is driving. | |
int | pw_filter_trigger_process (struct pw_filter *filter) |
Trigger a push/pull on the filter. | |
PipeWire filter object class
The filter object provides a convenient way to implement processing filters.
See also Core API
enum pw_filter_state |
enum pw_filter_flags |
Extra flags that can be used in pw_filter_connect()
Enumerator | |
---|---|
PW_FILTER_FLAG_NONE | no flags |
PW_FILTER_FLAG_INACTIVE | start the filter inactive, pw_filter_set_active() needs to be called explicitly |
PW_FILTER_FLAG_DRIVER | be a driver |
PW_FILTER_FLAG_RT_PROCESS | call process from the realtime thread |
PW_FILTER_FLAG_CUSTOM_LATENCY | don't call the default latency algorithm but emit the param_changed event for the ports when Latency params are received. |
PW_FILTER_FLAG_TRIGGER | the filter will not be scheduled automatically but _trigger_process() needs to be called. This can be used when the filter depends on processing of other filters. |
PW_FILTER_FLAG_ASYNC | Buffers will not be dequeued/queued from the realtime process() function. This is assumed when RT_PROCESS is unset but can also be the case when the process() function does a trigger_process() that will then dequeue/queue a buffer from another process() function. since 0.3.73 |
enum pw_filter_port_flags |
#define PW_VERSION_FILTER_EVENTS 1 |
const char * pw_filter_state_as_string | ( | enum pw_filter_state | state | ) |
Convert a filter state to a readable string
struct pw_filter * pw_filter_new | ( | struct pw_core * | core, |
const char * | name, | ||
struct pw_properties * | props ) |
struct pw_filter * pw_filter_new_simple | ( | struct pw_loop * | loop, |
const char * | name, | ||
struct pw_properties * | props, | ||
const struct pw_filter_events * | events, | ||
void * | data ) |
loop | a Loop to use |
name | a filter media name |
props | filter properties, ownership is taken |
events | filter events |
data | data passed to events |
void pw_filter_destroy | ( | struct pw_filter * | filter | ) |
Destroy a filter
void pw_filter_add_listener | ( | struct pw_filter * | filter, |
struct spa_hook * | listener, | ||
const struct pw_filter_events * | events, | ||
void * | data ) |
enum pw_filter_state pw_filter_get_state | ( | struct pw_filter * | filter, |
const char ** | error ) |
const char * pw_filter_get_name | ( | struct pw_filter * | filter | ) |
int pw_filter_connect | ( | struct pw_filter * | filter, |
enum pw_filter_flags | flags, | ||
const struct spa_pod ** | params, | ||
uint32_t | n_params ) |
Connect a filter for processing.
You should connect to the process event and use pw_filter_dequeue_buffer() to get the latest metadata and data.
filter | a Filter |
flags | filter flags |
params | an array with params. |
n_params | number of items in params |
uint32_t pw_filter_get_node_id | ( | struct pw_filter * | filter | ) |
Get the node ID of the filter.
int pw_filter_disconnect | ( | struct pw_filter * | filter | ) |
Disconnect filter
void * pw_filter_add_port | ( | struct pw_filter * | filter, |
enum pw_direction | direction, | ||
enum pw_filter_port_flags | flags, | ||
size_t | port_data_size, | ||
struct pw_properties * | props, | ||
const struct spa_pod ** | params, | ||
uint32_t | n_params ) |
add a port to the filter, returns user data of port_data_size.
filter | a Filter |
direction | port direction |
flags | port flags |
port_data_size | allocated and given to the user as port_data |
props | port properties, ownership is taken |
params | an array of params. The params should ideally contain the supported formats |
n_params | number of elements in params |
int pw_filter_remove_port | ( | void * | port_data | ) |
remove a port from the filter
port_data | data associated with port |
const struct pw_properties * pw_filter_get_properties | ( | struct pw_filter * | filter, |
void * | port_data ) |
get properties, port_data of NULL will give global properties
int pw_filter_update_properties | ( | struct pw_filter * | filter, |
void * | port_data, | ||
const struct spa_dict * | dict ) |
Update properties, use NULL port_data for global filter properties.
int pw_filter_set_error | ( | struct pw_filter * | filter, |
int | res, | ||
const char * | error, | ||
... ) |
Set the filter in error state.
filter | a Filter |
res | a result code |
error | an error message |
int pw_filter_update_params | ( | struct pw_filter * | filter, |
void * | port_data, | ||
const struct spa_pod ** | params, | ||
uint32_t | n_params ) |
Update params, use NULL port_data for global filter params.
filter | a Filter |
port_data | data associated with port |
params | an array of params. |
n_params | number of elements in params |
Query the time on the filter, deprecated, use the spa_io_position in the process() method for timing information.
uint64_t pw_filter_get_nsec | ( | struct pw_filter * | filter | ) |
Get the current time in nanoseconds.
This value can be compared with the nsec value in the spa_io_position. Since 1.0.4
struct pw_buffer * pw_filter_dequeue_buffer | ( | void * | port_data | ) |
Get a buffer that can be filled for output ports or consumed for input ports.
int pw_filter_queue_buffer | ( | void * | port_data, |
struct pw_buffer * | buffer ) |
Submit a buffer for playback or recycle a buffer for capture.
void * pw_filter_get_dsp_buffer | ( | void * | port_data, |
uint32_t | n_samples ) |
Get a data pointer to the buffer data.
int pw_filter_set_active | ( | struct pw_filter * | filter, |
bool | active ) |
Activate or deactivate the filter
int pw_filter_flush | ( | struct pw_filter * | filter, |
bool | drain ) |
Flush a filter.
When drain is true, the drained callback will be called when all data is played or recorded
bool pw_filter_is_driving | ( | struct pw_filter * | filter | ) |
Check if the filter is driving.
The filter needs to have the PW_FILTER_FLAG_DRIVER set. When the filter is driving, pw_filter_trigger_process() needs to be called when data is available (output) or needed (input). Since 0.3.66
int pw_filter_trigger_process | ( | struct pw_filter * | filter | ) |
Trigger a push/pull on the filter.
One iteration of the graph will be scheduled and process() will be called. Since 0.3.66