PipeWire 1.2.7
|
Files | |
file | data-loop.h |
pipewire/data-loop.h | |
Data Structures | |
struct | pw_data_loop_events |
Loop events, use pw_data_loop_add_listener to add a listener. More... | |
struct | pw_data_loop |
Macros | |
#define | PW_VERSION_DATA_LOOP_EVENTS 0 |
Functions | |
struct pw_data_loop * | pw_data_loop_new (const struct spa_dict *props) |
Make a new loop. | |
void | pw_data_loop_add_listener (struct pw_data_loop *loop, struct spa_hook *listener, const struct pw_data_loop_events *events, void *data) |
Add an event listener to loop. | |
int | pw_data_loop_wait (struct pw_data_loop *loop, int timeout) |
wait for activity on the loop up to timeout milliseconds. | |
void | pw_data_loop_exit (struct pw_data_loop *loop) |
make sure the thread will exit. | |
struct pw_loop * | pw_data_loop_get_loop (struct pw_data_loop *loop) |
Get the loop implementation of this data loop. | |
const char * | pw_data_loop_get_name (struct pw_data_loop *loop) |
Get the loop name. | |
const char * | pw_data_loop_get_class (struct pw_data_loop *loop) |
Get the loop class. | |
void | pw_data_loop_destroy (struct pw_data_loop *loop) |
Destroy the loop. | |
int | pw_data_loop_start (struct pw_data_loop *loop) |
Start the processing thread. | |
int | pw_data_loop_stop (struct pw_data_loop *loop) |
Stop the processing thread. | |
bool | pw_data_loop_in_thread (struct pw_data_loop *loop) |
Check if the current thread is the processing thread. | |
struct spa_thread * | pw_data_loop_get_thread (struct pw_data_loop *loop) |
Get the thread object. | |
int | pw_data_loop_invoke (struct pw_data_loop *loop, spa_invoke_func_t func, uint32_t seq, const void *data, size_t size, bool block, void *user_data) |
invoke func in the context of the thread or in the caller thread when the loop is not running. | |
void | pw_data_loop_set_thread_utils (struct pw_data_loop *loop, struct spa_thread_utils *impl) |
Set a custom spa_thread_utils for this loop. | |
PipeWire rt-loop object
This loop starts a new real-time thread that is designed to run the processing graph.
#define PW_VERSION_DATA_LOOP_EVENTS 0 |
struct pw_data_loop * pw_data_loop_new | ( | const struct spa_dict * | props | ) |
Make a new loop.
Make a new loop.
void pw_data_loop_add_listener | ( | struct pw_data_loop * | loop, |
struct spa_hook * | listener, | ||
const struct pw_data_loop_events * | events, | ||
void * | data ) |
Add an event listener to loop.
int pw_data_loop_wait | ( | struct pw_data_loop * | loop, |
int | timeout ) |
wait for activity on the loop up to timeout milliseconds.
Should be called from the loop function
void pw_data_loop_exit | ( | struct pw_data_loop * | loop | ) |
make sure the thread will exit.
Can be called from a loop callback
struct pw_loop * pw_data_loop_get_loop | ( | struct pw_data_loop * | loop | ) |
Get the loop implementation of this data loop.
const char * pw_data_loop_get_name | ( | struct pw_data_loop * | loop | ) |
Get the loop name.
Since 1.1.0
loop | the data loop to query |
Get the name of the data loop. The data loop name is a unique name that identifies this data loop.
const char * pw_data_loop_get_class | ( | struct pw_data_loop * | loop | ) |
Get the loop class.
Since 1.1.0
loop | the data loop to query |
Get the class of the data loop. Multiple data loop can have the same class and processing can be assigned to any data loop from the same class.
void pw_data_loop_destroy | ( | struct pw_data_loop * | loop | ) |
Destroy the loop.
Destroy the loop.
loop | the data loop to destroy |
int pw_data_loop_start | ( | struct pw_data_loop * | loop | ) |
Start the processing thread.
Start the processing thread.
loop | the data loop to start |
This will start the realtime thread that manages the loop.
int pw_data_loop_stop | ( | struct pw_data_loop * | loop | ) |
Stop the processing thread.
Stop the processing thread.
loop | the data loop to Stop |
This will stop and join the realtime thread that manages the loop.
bool pw_data_loop_in_thread | ( | struct pw_data_loop * | loop | ) |
Check if the current thread is the processing thread.
May be called from any thread.
Check if the current thread is the processing thread.
loop | the data loop to check |
struct spa_thread * pw_data_loop_get_thread | ( | struct pw_data_loop * | loop | ) |
Get the thread object.
loop | the data loop to get the thread of |
On posix based systems this returns a pthread_t
int pw_data_loop_invoke | ( | struct pw_data_loop * | loop, |
spa_invoke_func_t | func, | ||
uint32_t | seq, | ||
const void * | data, | ||
size_t | size, | ||
bool | block, | ||
void * | user_data ) |
invoke func in the context of the thread or in the caller thread when the loop is not running.
May be called from the loop's thread, but otherwise can only be called by a single thread at a time. If called from the loop's thread, all callbacks previously queued with pw_data_loop_invoke() will be run synchronously, which might cause unexpected reentrancy problems.
[in] | loop | The loop to invoke func on. |
func | The function to be invoked. | |
seq | A sequence number, opaque to PipeWire. This will be made available to func. | |
[in] | data | Data that will be copied into the internal ring buffer and made available to func. Because this data is copied, it is okay to pass a pointer to a local variable, but do not pass a pointer to an object that has identity. |
size | The size of data to copy. | |
block | If \true, do not return until func has been called. Otherwise, returns immediately. Passing \true does not risk a deadlock because the data thread is never allowed to wait on any other thread. | |
user_data | An opaque pointer passed to func. |
-EPIPE
if the internal ring buffer filled up, if block is \false, 0 is returned when seq is SPA_ID_INVALID or the sequence number with the ASYNC bit set otherwise. When block is \true, the return value of func is returned.Since 0.3.3
void pw_data_loop_set_thread_utils | ( | struct pw_data_loop * | loop, |
struct spa_thread_utils * | impl ) |
Set a custom spa_thread_utils for this loop.
Setting NULL restores the system default implementation. Since 0.3.50
Set a custom spa_thread_utils for this loop.
loop | the data loop to set the thread utils on |
impl | the thread utils implementation |
This configures a custom spa_thread_utils implementation for this data loop. Use NULL to restore the system default implementation.