mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-06 13:30:01 -05:00
port: keep track of mix port states
Keep track of the state of the mixer ports and update the port state accordingly. This avoids clearing the format or buffers on the port when mixers are still busy.
This commit is contained in:
parent
08a63ded5d
commit
0a27040c9a
3 changed files with 77 additions and 34 deletions
|
|
@ -445,6 +445,10 @@ struct pw_port {
|
|||
#define PW_PORT_MIX_FLAG_MIX_ONLY (1<<1) /**< only negotiate mix ports */
|
||||
uint32_t mix_flags; /**< flags for the mixing */
|
||||
struct pw_map mix_port_map; /**< map from port_id from mixer */
|
||||
uint32_t n_mix;
|
||||
uint32_t n_mix_configure;
|
||||
uint32_t n_mix_ready;
|
||||
uint32_t n_mix_paused;
|
||||
|
||||
struct {
|
||||
struct spa_io_buffers io; /**< io area of the port */
|
||||
|
|
@ -693,6 +697,9 @@ int pw_port_add(struct pw_port *port, struct pw_node *node);
|
|||
int pw_port_init_mix(struct pw_port *port, struct pw_port_mix *mix);
|
||||
int pw_port_release_mix(struct pw_port *port, struct pw_port_mix *mix);
|
||||
|
||||
void pw_port_mix_update_state(struct pw_port *port, struct pw_port_mix *mix, enum pw_port_state state);
|
||||
void pw_port_update_state(struct pw_port *port, enum pw_port_state state);
|
||||
|
||||
/** Unlink a port \memberof pw_port */
|
||||
void pw_port_unlink(struct pw_port *port);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue