Commit graph

284 commits

Author SHA1 Message Date
Wim Taymans
a63523650d hooks: enforce version on hook emission
Pass the minimum required version to the hook emission and only call
events when the handler is recent enough.
Add some macros to make event emission easier to read.
2018-08-01 21:41:25 +02:00
Wim Taymans
899e67eb61 client-node: clear buffers when mixer is removed 2018-07-31 21:36:10 +02:00
Wim Taymans
57ef49b154 client-node: fix port implementation
Make the port forward the port methods to the node.
Fix io area when not using adapter
2018-07-31 14:28:15 +02:00
Wim Taymans
ca898a00db work on separating port mixers
Make it possible to assign an arbitary node as the port mixer.
Also remove dynamically added ports.
Improve negotiation and allocation on the mixer ports
Add some more SSE optimisations
Move float mixer from the audio dsp to the port
Remove pw_node_get_free_port() and do things more explicitly.
Handle mixer ports in client-node
2018-07-31 12:23:35 +02:00
Wim Taymans
0d148654c0 stream: add more timing info
Keep track of queued data in the stream
Pass delay field around to make it possible to know about the raw
software read/write pointer and the hardware one.
Start stream position at 0
2018-07-19 13:30:27 +02:00
Wim Taymans
cc542935ea client-node: add more generic set_io method
Replace the set_position method with set_io that allows us to share
other types of state with the client.
2018-07-12 15:33:07 +02:00
Wim Taymans
5a3eee9cac command: remove clock-update 2018-07-12 13:22:50 +02:00
Wim Taymans
54c45252fd client-stream: don't run the driver
The driver will take the initiative to run the graph
2018-07-11 20:09:32 +02:00
Wim Taymans
70b04da723 media-session: express quantum relative to rate 2018-07-03 21:55:08 +02:00
Wim Taymans
9417cdd9e6 client-stream: Also link controls
Improve registration of the node, set the media.class
2018-07-03 21:47:53 +02:00
Wim Taymans
1b4a0e8d5d client-node: also implement io on the node itself 2018-07-03 21:45:07 +02:00
Wim Taymans
79a3b594f9 client-node: set parent id and owner
Make sure we set the right parent id and owner for the client node
and client-stream
Move the remote id in the proxy object and use it in the stream to
get the node id.
2018-07-03 21:43:21 +02:00
Wim Taymans
e68624fe7b client-stream: improve scheduling 2018-07-02 12:07:46 +02:00
Wim Taymans
b46a0bc047 client-stream: prefer client buffer params 2018-06-26 16:54:48 +02:00
Wim Taymans
bb7be076bb client-stream: swap local and remote io area 2018-06-25 14:33:00 +02:00
Wim Taymans
c01112d6c2 node: move position calculation to the node 2018-06-22 17:38:36 +02:00
Wim Taymans
757e2ccc79 client-stream: trigger client-node manually
Don't let the graph scheduler trigger the client-node, instead do it
ourselves when the need a buffer for the next quantum.
2018-06-22 17:37:21 +02:00
Wim Taymans
ce2e605255 client-stream: fix format and buffers for capture 2018-06-22 17:36:26 +02:00
Wim Taymans
bbd5c941d2 client-stream: send node_id to client
Send the node_id of the client-stream node to the client.
2018-06-18 13:19:54 +02:00
Wim Taymans
a198943b1a client-stream: fix capture case
Setup the processing order differently for capture, we first want
to schedule the converters and then the client-node.
2018-06-18 12:24:20 +02:00
Wim Taymans
4ac21aea53 stream: remove conversion
Improve audioconvert to also split the output.
Remove the format conversion from the stream and move into the
server client-stream.
2018-06-15 11:31:42 +02:00
Wim Taymans
acfd07c504 client-stream: allocate the right number of buffers 2018-06-15 11:30:20 +02:00
Wim Taymans
ba0a68aab3 client-stream: improve debug 2018-06-15 11:29:38 +02:00
Wim Taymans
e5629b23f3 client-node: pass position around
Pass the position from server to clients
Implement current time in stream.c using the position info
2018-06-07 11:01:20 +02:00
Wim Taymans
3d25e254ef client-node: implement node property update
Make it possible to update the node properties
Make it possible to update the remote properties
2018-06-07 10:23:41 +02:00
Wim Taymans
bf2a6bb1d7 client-node: small cleanups 2018-06-01 11:19:22 +02:00
Wim Taymans
f5f1a435cc client-node: improve time and position reporting 2018-05-24 16:10:22 +02:00
Wim Taymans
ef9fcd1093 node: keep better track of driver node
When a session disappears, try to move nodes to another session.
2018-05-17 17:40:08 +02:00
Wim Taymans
1bff5afe05 client-stream: reset format on adapter 2018-05-17 17:38:13 +02:00
Wim Taymans
6450c64542 clean up listeners 2018-05-17 17:30:30 +02:00
Wim Taymans
bed26040ef node: add driver position struct
Pass driver info to client
use current buffersize and samplerate in client
update the buffer size dynamically based on session
2018-05-11 10:15:59 +02:00
Wim Taymans
6d79ce2589 small cleanups 2018-05-10 11:28:02 +02:00
Wim Taymans
d93dd5ec93 graph: remove io from graph port, it's not needed 2018-05-08 12:21:57 +02:00
Wim Taymans
27c53a31bc stream: add exclusive flag
With the exclusive flag we don't go through the audio-dsp.
2018-05-08 10:47:18 +02:00
Wim Taymans
b160d81d2f stream: fix driver mode 2018-05-02 11:42:04 +02:00
Wim Taymans
a6cb6b740c client-node: make it possible to skip signal
Add an option to not signal the remote implementation when we still
have enough data.
2018-04-26 09:49:29 +02:00
Wim Taymans
f784da5505 pipewire: add info to interface load
Make it possible to pass info to interface load
Enable color logs
2018-04-26 09:48:19 +02:00
Wim Taymans
9376ba6098 client-stream: improve case without adapter
Handle the case where we don't have/need an adapter.
Add the adapter and client-node to the graph
2018-04-25 15:56:39 +02:00
Wim Taymans
d165b3b842 pipewire: improve memory cleanup
Add method to unload a spa interface.
Various other memory cleanups
2018-04-20 16:27:19 +02:00
Wim Taymans
0dc036ac84 client-stream: improvements 2018-04-19 22:02:11 +02:00
Wim Taymans
57cbc5e503 various cleanups 2018-04-19 20:15:30 +02:00
Wim Taymans
63ce244c79 add client-stream
A client stream is a more specialized way to send 1 stream to pipewire.
On the client side and receiver side it can do conversion and the
buffer size of the client can be choosen arbitrarily.
2018-04-13 20:06:37 +02:00
Wim Taymans
efa35c2911 node: add option to not register a node 2018-04-13 20:05:46 +02:00
Wim Taymans
fa07400c2e port_mix: place io area in separate field
We would like to remove it from the spa_graph_port...
2018-04-13 20:04:22 +02:00
Wim Taymans
adf8bc7804 client-node: fix buffer data offset 2018-04-13 20:03:14 +02:00
Wim Taymans
04f3044f1c client-node: implement add/remove port 2018-04-13 20:02:35 +02:00
Wim Taymans
f4f2e4bf68 small cleanups 2018-04-13 19:57:34 +02:00
Wim Taymans
03b914405d client-node: remove transport area
We don't need the area anymore
2018-04-12 10:12:40 +02:00
Wim Taymans
b07c4932cd stream: remove client_reuse
We can't have client-reuse with the client-node interface.
2018-04-12 09:45:07 +02:00
Wim Taymans
008df86c8f small cleanups 2018-04-11 10:54:47 +02:00