Commit graph

346 commits

Author SHA1 Message Date
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
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
Wim Taymans
0662f3a3ea Small fixes for error handling 2017-10-26 15:13:33 +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
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
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
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
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
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
c386eda653 volume: mark input busy while processing output 2017-10-16 18:13:11 +02:00
Wim Taymans
ce6b75cf63 Small cleanups 2017-10-16 18:09:59 +02:00
Wim Taymans
574c6d4b90 v4l2: only produce data when needed
We should only produce data when the io area status is NEED_BUFFER.
2017-10-16 13:23:20 +02:00
Wim Taymans
acfdc63f26 don't include stdio 2017-09-29 13:39:26 +02:00
Wim Taymans
93bd18ccc5 fix build of test 2017-09-29 12:18:38 +02:00
Wim Taymans
d65012ff21 remove json stuff
using JSON for formats or properties is not a good idea because we can't
add more types like pointers, fd, rectangles without weird hacks. Our
PODs are more easy to parse and extend and now there is an easy way
to parse and create them as well.
2017-09-28 17:07:43 +02:00
Wim Taymans
24d80e5c00 Add new pod parser and builder
Add a new pod builder and parser that is less verbose and
a little more powerful.
2017-09-28 17:00:51 +02:00
Wim Taymans
3e49aec61b json tests: add properties and 2017-09-21 18:03:48 +02:00
Wim Taymans
b93ecb70fc more experiments: add json pattern matcher 2017-09-20 20:33:15 +02:00
Wim Taymans
86c8955c3a more json tests 2017-09-20 13:06:52 +02:00
Wim Taymans
ac382c052a Work on JSON based format descriptions 2017-09-20 08:03:56 +02:00
Wim Taymans
6af4f08c6e cli: small cleanups
Add make cli to start the cli
Only print changes once
Notify of changed objects
2017-09-18 22:23:18 +02:00
Wim Taymans
304a6d1796 alsa-source: fix class 2017-09-18 19:15:09 +02:00
Wim Taymans
3c1957fd9d remote: make extra nodes for scheduler
Add an extra input and output node for remote nodes. We link this
node to all remote inputs and outputs to make it easier to use
the scheduler.
Improve scheduler debug
2017-09-16 09:20:04 +02:00
Wim Taymans
4d03224141 scheduler: fix push 2017-09-15 16:04:46 +02:00
Wim Taymans
26e9daf6b7 graph: provide in and out counters
Make it possible to have input and output counters to see when a
node can be scheduled.
2017-09-15 13:37:33 +02:00
Wim Taymans
e641914c2f volume: improve negotiation and params 2017-09-15 13:29:53 +02:00
Wim Taymans
83b5765bbd list: fix spa_list_last 2017-09-15 13:29:17 +02:00
Wim Taymans
dc85a79786 Add more generic export-spa example
Replace the v4l2 example with a more generic version that can add
any spa node to a remote graph
Make the dictionary items const
Add some info to nodes and factories. Add the node info to the node
properties. We can then set the media.class directly on the node,
instead of letting the monitor set it.
Debug node info in spa-inspect.
Do async operation on the audiotestsrc and videotestsrc differently.
2017-09-07 19:55:22 +02:00
Wim Taymans
21cd5a2918 Add example to play sine wave
Various build fixes and cleanups
Move port_add to private and make node ports based on implementation.
Improve pull based scheduling on remote nodes
2017-09-07 10:22:32 +02:00
Marcos Paulo de Souza
ff363cc7bf spa/include/meson: Install hook.h (#11)
When compiling some application and include spa/loop.h, it needs hook.h,
so install it.

Signed-off-by: Marcos Paulo de Souza <marcos.souza.org@gmail.com>
2017-09-04 11:09:18 +02:00
Marcos Paulo de Souza
b0c3936477 Fix clang warnings about comparing uint32 < 0 (#10)
* Fix clang warnings about comparing uint32 < 0

clangs complains about an uint32 compared to < 0:
warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare]

So remove these comparisos and an uint32 never will be less than 0.

Signed-off-by: Marcos Paulo de Souza <marcos.souza.org@gmail.com>

* module-jack.c: Differentiate error msg from protocol-native

Signed-off-by: Marcos Paulo de Souza <marcos.souza.org@gmail.com>
2017-09-04 11:09:08 +02:00
Wim Taymans
577f86be0d graph: use spa_node as implementation
Always use a spa_node as the graph implementation, implementing the
methods is just as easy.
Plug some mem leaks in remote
2017-08-27 12:12:14 +02:00
Wim Taymans
6953642ed5 small cleanups 2017-08-27 09:16:03 +02:00
Wim Taymans
80cf20a255 monitor: fix some leaks 2017-08-22 19:22:04 +02:00
Wim Taymans
c25834a692 Work on cleanup
Add signal handlers for daemon to shut down
Add destroy listeners for modules and do cleanup
Fix some leaks
Simplify port registration in new nodes
Hide some more data structures
Let the node implementation take care of the reuse_buffer signal because
then we can get to the graph nodes to find the destination port.
Destroy modules in core cleanup. Modules should undo everything they
have done.
Activate the link after we negotiated format and buffers.
2017-08-22 18:30:10 +02:00
Wim Taymans
12e2fae8ab jack: add midi format
Add midi format
Handle ore requests
Clean semaphore and socket names
2017-08-21 20:19:09 +02:00
Wim Taymans
bece3a013b Make scheduler more generic
Add some callbacks to trigger push and pull in a graph
Remove the scheduler, make some implementations of graph push/pull
functions.
Add some properties to jack clients and nodes
Fix the parent of the clients.
Notify link format changes
2017-08-20 18:33:07 +02:00
Wim Taymans
eba2b82c8e graph: fix the API a little
Add test for atomic graph updates
2017-08-18 18:54:45 +02:00
Wim Taymans
c3d63983e1 alsa: don't read timerfd when stopped
We only start the timerfd when we are started
2017-08-18 18:53:45 +02:00
Wim Taymans
4731a0b4b8 More work on jack support 2017-08-15 11:02:42 +02:00