Commit graph

862 commits

Author SHA1 Message Date
Wim Taymans
5fec60078d Release 0.1.6 2017-11-03 12:40:03 +01:00
Wim Taymans
25212235b9 audiomixer: add log 2017-11-03 12:26:16 +01:00
Wim Taymans
f58a567af8 export-source: set buffer output size 2017-11-02 16:54:36 +01:00
Wim Taymans
3f020cd350 audiomixer: simplify code
Pretend there are ringbuffers on input and output buffers and simulate
them otherwise to make some code paths simpler.
2017-11-02 16:51:26 +01:00
Wim Taymans
e303485757 alsa: suggest ringbuffer of max-latency size
With a ringbuffer of max-latency size we never receive more data than
the max-latency, which is exactly what we want.
2017-11-02 16:49:56 +01:00
Wim Taymans
8c77332f25 Improve ringbuffer support
Fix ringbuffer mixing in audiomixer
Add ringbuffer support in audiotestsrc params
Don't recycle buffers before signaling have_output, the app is supposed
to recycle explicitly or with a process_output call.
Add some trace to graph functions in tests
Add ringbuffer support in export-source
2017-11-02 15:19:20 +01:00
Wim Taymans
e11e19f3e7 audiomixer: fix buffer reuse
Only reuse the buffer after we consumed all data
2017-11-02 12:41:34 +01:00
Wim Taymans
307239767c audiomixer: add ringbuffer handling 2017-10-31 16:01:26 +01:00
Wim Taymans
af99c196c9 alsa: improve ringbuffer handling
Add max-latency property to configure the maximum amount we write
to the device.
Only try to pull after we consumed our current buffers.
2017-10-31 15:59:08 +01:00
Wim Taymans
f04b292d08 remote: ask for input in start 2017-10-27 18:13:48 +02:00
Wim Taymans
61555ab3b5 client-node: Rework scheduling
Only send data to a client when it has sent a NEED_INPUT otherwise
recycle the buffers immediately.
Explicitly recycle buffers when the client is not going to do this.
2017-10-27 18:04:00 +02:00
Wim Taymans
d594444059 export-sink: add sanity checks 2017-10-27 17:59:51 +02:00
Wim Taymans
3138e20cb6 v4l2: rename variable from state -> port 2017-10-27 17:57:45 +02:00
Wim Taymans
91ba492712 alsa: improve ringbuffer params
Always reuse the ringbuffer after we consumed some of it. This is
the trigger for upstream to write some more in the buffer.
2017-10-27 17:54:34 +02:00
David Svensson Fors
84d422bc46 stream: light-weight buffer recycling while in new_buffer
When recycle_buffer() is called while in the new_buffer event handler,
don't send the reuse_buffer event. Instead, mark the buffer for
recycling by putting the buffer ID in the IO area, which is more
light-weight. When need_input reaches the server, it will recycle the
buffer.

Also introduce a helper function for sending the reuse_buffer event.

Change-Id: I900e75694efce2fa7e12840eaf53a7f6b7ae7e8a
2017-10-27 17:47:59 +02:00
David Svensson Fors
82eaf7e8dd stream: emit new_buffer only if HAVE_BUFFER
Emit the new_buffer event only if the IO area status is HAVE_BUFFER.

In client-reuse mode, also clear the buffer ID - we need an explicit
recycle call before recycling.

Change-Id: I139663068ef12669adc13b7e351666c8469dee72
2017-10-27 17:47:45 +02:00
Wim Taymans
ff242550c8 stream: update port_io before sending need_input
Update the port_io area to NEED_BUFFER right before starting
2017-10-27 17:45:29 +02:00
Wim Taymans
0662f3a3ea Small fixes for error handling 2017-10-26 15:13:33 +02:00
Wim Taymans
08aa175a20 client-node: use graph structures for scheduling
Use the graph structures in the RT thread to iterate ports etc.
2017-10-25 18:39:56 +02:00
Wim Taymans
b25985a2b2 client-node: split setup of transport and fds
We can initialize the transport as soon as we get async notify
from the client when setup completes. Node initialization happens
after that and then finaly the node is initialized and we can send
the transport and fds.
Small cleanups
2017-10-25 17:00:25 +02:00
Wim Taymans
4f33a37ac6 alsa: report underrun better 2017-10-24 18:04:03 +02:00
Wim Taymans
5b4a4922db client-node: only pull once
When we pull, don't pull again until we get the reply or else we
might overwrite the result in progress.
2017-10-24 18:02:54 +02:00
Wim Taymans
7f5c6ddd46 volume: only queue output buffers
Fix volume function, we try to write as many bytes as we can to the
output buffer and set the offset and size in the chunk;
Add some logging
2017-10-24 13:01:13 +02:00
Wim Taymans
eef6f380c1 remote: handle per port buffers and memory 2017-10-24 13:00:32 +02:00
Wim Taymans
e969e8854b alsa-utils: calculate size correctly 2017-10-24 12:59:52 +02:00
Wim Taymans
a691d07531 use spa_list_append when we can 2017-10-24 12:58:10 +02:00
Wim Taymans
4aaa2cbc6b alsa: we can always signal that there is a buffer 2017-10-22 16:08:30 +02:00
Wim Taymans
a3b614fff6 Implement explicit buffer-reuse in stream API 2017-10-22 15:12:04 +02:00
Wim Taymans
0f4142f879 v4l2: always emit have_output, recycle what was not collected 2017-10-22 14:23:50 +02:00
Wim Taymans
827f0763ef scheduler: we can schedule ready elements directly 2017-10-22 14:17:14 +02:00
Wim Taymans
df59183a66 scheduler: add new scheduler
Make port status SPA_RESULT_OK until events changes it and data
processing can start
Only start pulling on ports in the OK state
Change we way we handle client-nodes, handle them async and continue
processing after they signaled completion
Add a new scheduler that decouples push and pull. It pushes to peer
elements when all inputs are provided and pulls from nodes when all
peer outputs are processed.
2017-10-22 13:12:34 +02:00
Wim Taymans
3315de187c connection: don't error when not enough data
When there is not enough data available yet, don't fail but try again
next time.
2017-10-20 17:04:21 +02:00
Reverend Homer
ffd7b5a743 core: remove redundant return 2017-10-19 22:45:39 +02:00
Harry van Haaren
ac37d0f180 readme: add section on building with make or meson
Add a short paragraph to indicate that there are two methods
to build pipewire.

Signed-off-by: Harry van Haaren <harryhaaren@gmail.com>
2017-10-19 22:45:19 +02:00
Rasmus Thomsen
6a0ee7a298 meson.build: remove automagic docs and manpages 2017-10-19 22:44:37 +02:00
Thomas Hindoe Paaboel Andersen
fa5c2000f9 cli: use a signed type for return value
read() returns ssize_t where a negative number is used for errors.
The value was read into a size_t and then checked for <0.

Change to ssize_t to handle the negative number.
2017-10-19 22:43:31 +02:00
Wim Taymans
127d69e4a0 jack: remove nodes we created 2017-10-19 17:52:24 +02:00
Wim Taymans
177ffd766c jack: fix buffer reuse 2017-10-19 16:50:39 +02:00
Wim Taymans
d3d557c166 cli: don't try to destroy NULL 2017-10-19 15:48:40 +02:00
Wim Taymans
f19edc16ab link: activate before start
Activate the link before we start the nodes to make sure we are
linked when the nodes start to push things.
2017-10-18 10:05:06 +02:00
Wim Taymans
530caf35db *testsrc: async == live for now 2017-10-18 10:04:31 +02:00
Wim Taymans
65a8bc8b34 graph: improve debug 2017-10-18 10:03:55 +02:00
Wim Taymans
5e21edd8d5 spa-node: parse bool properties
Add some more helpers to parse property values
2017-10-18 10:02:55 +02:00
Wim Taymans
5a9c4981d8 mixer: remove nodes we created 2017-10-17 16:57:26 +02:00
Wim Taymans
c818ab78cf alsa: safely remove the source 2017-10-17 16:56:44 +02:00
Wim Taymans
c5385805bd alsa: reuse_buffer is without buffer_id in port_io 2017-10-17 15:38:30 +02:00
Wim Taymans
b589b7062d Add support for NULL strings 2017-10-17 12:16:53 +02:00
Wim Taymans
323c644084 fix crashes and leaks on shutdown 2017-10-17 10:14:56 +02:00
Wim Taymans
f817aabe24 Work on better scheduling
Also use double buffering for the client-node input, we process the
output of the previous cycle.
Only process the reuse_buffer if the client is explicitly going to
send them otherwise, recycle right after sending.
Let the tee and mix pass the io status upstream.
Initialize io area with NEED_BUFFER for inputs.
Implement reuse_buffer for the remote.
2017-10-16 18:14:35 +02:00
Wim Taymans
957a03e3f8 export-source: implement reuse_buffer 2017-10-16 18:13:43 +02:00