Commit graph

2311 commits

Author SHA1 Message Date
Wim Taymans
391fa81fa8 impl-link: add an active state
Avoid emission of events for each state change.
Add an active state and aim to only emit events for paused<->active
state changed or error.
2020-10-09 16:43:31 +02:00
Wim Taymans
f67cbd7444 impl-link: don't notify when nothing changed 2020-10-09 16:42:30 +02:00
Wim Taymans
ea92df814c node: avoid useless info events
If only the flags of the node changed, emit the info_changed signal so
that the client-node can update the flags but don't notify the
listeners, the flag is not included in that info.
2020-10-09 16:40:23 +02:00
Wim Taymans
f84eacdd5b private: node and port flags are uin64_t 2020-10-09 16:33:23 +02:00
Wim Taymans
0e3198272b remote-node: only update changed fields 2020-10-09 16:31:17 +02:00
Wim Taymans
85977634c1 client-node: only add props and params when mask is set 2020-10-09 16:30:00 +02:00
Wim Taymans
12e6dd89e2 client: register client global after update properties
This way we only expose the client after we have all the properties.
Also add a new CLIENT_ACCESS property that contains the desired
client access mode.
2020-10-09 13:31:22 +02:00
Wim Taymans
8b70a83c96 pulse-server: improve server registration
Take a list of addresses to listen on.
2020-10-09 13:31:22 +02:00
Wim Taymans
5b8a52cc78 pulse-server: cleanup servers 2020-10-09 13:31:22 +02:00
Wim Taymans
13dfa9d64b pulse-server: update volume and mute for record streams 2020-10-08 19:36:12 +02:00
Wim Taymans
680f8bc645 pulse-server: set more flags 2020-10-08 19:35:58 +02:00
Wim Taymans
71e3052a33 pulse-server: reuse the socket 2020-10-08 18:06:12 +02:00
Wim Taymans
d44fdabea1 pulse-server: send messges when killed and disconnected 2020-10-08 18:06:12 +02:00
Wim Taymans
fde36ac6c2 pulse-server: use at least MIN_SAMPLES of samples per buffer 2020-10-08 18:06:12 +02:00
Wim Taymans
d01586bfa5 pulse-server: support network connections 2020-10-08 18:06:11 +02:00
Wim Taymans
177e897a88 pulse-server: pass data with a ringbuffer
Implement the process function from the RT thread and use a ringbuffer
to pass samples around.
2020-10-08 18:06:11 +02:00
Wim Taymans
138e61138f pulse: resize message dynamically 2020-10-08 18:06:11 +02:00
Wim Taymans
f0102fd490 pulse: move pulse protocol to module 2020-10-08 18:06:11 +02:00
Wim Taymans
17843ae7cb pulse-bridge: fix reply of record latency
Makes bluejeans in firefox work
2020-10-08 18:06:11 +02:00
Wim Taymans
fead5c18d6 pulse-bridge: fix state of source 2020-10-08 18:06:11 +02:00
Wim Taymans
3194d5ca81 pulse-bridge: add introspection of dummy sink/source 2020-10-08 18:06:11 +02:00
Wim Taymans
6f6337e732 pulse-bridge: support record streams 2020-10-08 18:06:11 +02:00
Wim Taymans
7c1fbf5bee pulse-bridge: rework messages
Make recycled message blocks for receiving and sending data.
Implement async flushing out the output queue.
2020-10-08 18:06:11 +02:00
Wim Taymans
4ad085ef96 pulse-bridge: work more on timings
Fixes sync in firefox
2020-10-08 18:06:11 +02:00
Wim Taymans
ab4def7e5f pulse: respect flags to set volume/mute 2020-10-08 18:06:11 +02:00
Wim Taymans
a4874abc46 pulse: restore volume and muted 2020-10-08 18:06:11 +02:00
Wim Taymans
630889493c pulse-bridge: Update client properties 2020-10-08 18:06:11 +02:00
Wim Taymans
949f923b80 pulse-bridge: implement timing and corking 2020-10-08 18:06:11 +02:00
Wim Taymans
a536c38fbe pulse: use send to avoid SIGPIPE signals 2020-10-08 18:06:11 +02:00
Wim Taymans
90b52b9ff4 pulse-bridge: add more commands 2020-10-08 18:06:11 +02:00
Wim Taymans
9dad175959 pulse-bridge: implement stream volume
Implement some more things.
2020-10-08 18:06:11 +02:00
Wim Taymans
7655aa7066 pulse-bridge: implement enough to play flatpak Spotify 2020-10-08 18:06:11 +02:00
Wim Taymans
d180b8d927 beginnings of pulse protocol 2020-10-08 18:06:11 +02:00
Wim Taymans
5c048500cc stream: normalize volumes when monitoring 2020-10-07 12:45:28 +02:00
Wim Taymans
932adc18f8 stream: clarify that timestamp is in nanoseconds 2020-10-07 12:00:53 +02:00
Wim Taymans
bcaf7cd722 adapter: remove redundant set_active call 2020-10-05 12:16:46 +02:00
Wim Taymans
b05597cf6b stream: make sure stream is in the right state
An adapter stream is usually created in the active state so deactive
it before export when requested.
2020-10-05 12:16:42 +02:00
Wim Taymans
6f2534f5ab core: improve debug 2020-10-02 16:23:08 +02:00
Wim Taymans
0da406d304 media-session: make sure we don't read invalid data 2020-10-01 11:32:40 +02:00
Wim Taymans
bc35221210 context: destroy clients first
Destroy clients before trying to remove nodes. If the clients are
still connected they might try to react to the removed nodes.
2020-09-30 12:01:46 +02:00
Wim Taymans
81ca70af9b alsa-monitor: avoid crash in release
Only try to release the device when we have a proxy.

Fixes #310
2020-09-28 18:23:23 +02:00
Wim Taymans
79fbddb838 stream: handle out of buffers port
If the port was out of buffers and we can't recycle a buffer, return
-EPIPE.
2020-09-25 18:24:29 +02:00
Wim Taymans
d2d722efb3 node: add an ASYNC flag
The flag means that the process function might not complete
synchronously.

We can use this knowledge to improve the adapter. In sync mode we
can pull before scheduling the converter. In async mode we need to
schedule the follower after the converter to get the data ready for
the next iteration.

We can also improve the stream when it is operating async to schedule
a process call when a new buffer is ready to be filled.

This reduces a cycle latency from alsa and improves latency in
pulse.
2020-09-25 17:02:54 +02:00
Wim Taymans
9dc1c3b168 stream: improve the input process loop
Only try to reuse a buffer when the io area is not already in
the NEED_DATA state or else we might overwrite a previous buffer
reuse and run out of buffers.
We also always need more input.
2020-09-24 17:15:47 +02:00
Wim Taymans
61523d383a tools: add pw-reserve to reverse and monitor a device 2020-09-23 10:24:06 +02:00
Wim Taymans
f4bf7bc7e6 media-session: don't emit busy when we are acquiring 2020-09-23 10:22:22 +02:00
Wim Taymans
3f844f7b09 media-session: make the same node name as PulseAudio
Fixes #299
2020-09-22 12:59:13 +02:00
Wim Taymans
a4e079e1cb media-session: guard against invalid input
See #304
2020-09-22 12:39:39 +02:00
Wim Taymans
cf2c32f0a9 alsa: rework device reservation
Always try to first reserve the device name and then start the probing
so that we can be sure that the device is not in use.
2020-09-21 15:23:36 +02:00
Wim Taymans
2b8568e14f reserve: don't call busy/available when we are the owner
Also ignore acquired from our other devices.
2020-09-21 14:35:32 +02:00