Commit graph

360 commits

Author SHA1 Message Date
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
Wim Taymans
9ad1f911b2 Improve loop callbacks
Pass just one data item to the callbacks.
Add properties to port.
Add user data to link
Handle autolink with multiple ports
More work on jack support
2017-08-11 19:21:31 +02:00
Wim Taymans
eeda53dbef Fix leaks
Add some docs
Add properties to loop objects for future use
2017-08-08 18:24:15 +02:00
Wim Taymans
600055bd68 Move listeners to spa and rename to hooks
The listeners are generally useful in spa, move it there and rename
to hooks. Implement loop hooks with it.
Fix some cleanup issues in stream and remote
2017-08-08 16:56:29 +02:00
Wim Taymans
6b6b827a3b Add resource override method
Add an easy way to override a resource implementation and use this in
the flatpak module.
Add more methods
2017-08-08 15:03:30 +02:00
Wim Taymans
0602d76b9e Cleanups
Only pass data to callbacks.
Rename some structs
Provide methods to access structs
2017-08-06 06:42:26 +02:00
Wim Taymans
9831786eb7 Work on improved scheduling or remote nodes 2017-07-28 14:28:20 +01:00
Wim Taymans
3d9f28c676 Use remote to join nodes on remote graphs
Make a new method that can take a local node and run it in a remote
pipeline. This basically replaces all functionality of the streams
and more.
Add 2 examples for exporting a sink and a v4l2 node
Make some more things const
Cleanups
Make it possible to do things when the node needs scheduling. The
default node will schedule the local pipeline but the remote node might
also schedule the remote pipeline.
2017-07-25 19:52:31 +02:00
Wim Taymans
91d54364fc loop: add signal count to callback
Don't try to signal too many times
2017-07-19 10:44:03 +02:00
Wim Taymans
1acba78234 API cleanups
Fix docs
Add some more versions to interfaces
Make types for the various proxy object + inline methods that does type
checking and create proxys etc.
Set owner client of client-nodes in the properties
Pass type to bind to in create-node
Don't place global id in the info structs
Improve registration of marshal functions
Pass more types around as ids
2017-07-18 10:06:40 +02:00
Wim Taymans
465f12241e Implement protocol extensions
Add hooks that contain protocol specific interfaces that can be used
to extend the protocol. This makes it possible to add new interfaces
to the protocol and implement the protocol specific data transport.
Move these protocol specific extension to the extensions directory.
2017-07-12 18:04:00 +02:00
Wim Taymans
83b4eaca53 Pass some more properties around
Only start listener when core is a daemon.
2017-07-11 20:38:48 +02:00
Wim Taymans
847cef83b6 Work on unifying client and server
Remove context and extensions, make client API also use the core.
Make a new pw_remote object that keeps connections with remote
instances.
Remove introspection API, it's just as easy to connect to the registry
and get updates like that.
Expand the protocol a little to make it useful for making listeners
and connections.
Move protocol specific connection to the module. Make some new
convenience methods.
Make a factory to create nodes from spa objects
Add an example of a local pipeline displaying a v4l2 source.
2017-07-11 12:40:01 +02:00
Wim Taymans
0738f7fcf5 Rework node and ports
Rework the node and port API so that other implementations can be used
than the spa_node. The plan is to morph this into the stream and
context API.
Rework the graph API a little so that init + add is separated.
2017-07-07 17:55:26 +02:00
Wim Taymans
da94f65493 fix some compiler warnings 2017-07-04 12:21:01 +02:00
Wim Taymans
8886f5d373 build fixes 2017-07-04 11:30:49 +02:00
Wim Taymans
791137e9e5 loop: fix ringbuffer handling 2017-07-04 10:18:24 +02:00
Wim Taymans
9fa1df6f2c link: work on activate/deactivate
Recursively activate links when activating nodes
2017-07-03 17:34:30 +02:00
Wim Taymans
d2f877912a Use graph to schedule things
Make real spa_graph nodes and ports and schedule those. This makes
it possible to add explicit tee and mixers in the real graph.
Rework the way we add and remove ports and nodes from the graph.
Remove confusing pw_port_link and merge core with pw_link_new()
Move scheduling in separate files, add some more graph-schedulers.
2017-06-30 19:36:39 +02:00
Wim Taymans
83e65c31ab graph: improve API a little
Node allow linking to multiple inputs when there is a mixer.
2017-06-29 09:31:50 +02:00
Wim Taymans
9ee0cd7d8d fix last_port 2017-06-28 16:53:10 +02:00
Wim Taymans
d8cac792f4 spa: small performance fixes 2017-06-28 16:33:11 +02:00
Wim Taymans
7fbe811a03 audiomixer: separate mixer functions 2017-06-27 17:48:34 +02:00
Wim Taymans
bc56c59597 loop: add block flag to invoke
Remove async shutdown and block instead.
2017-06-26 10:41:19 +02:00
Wim Taymans
c391e5088a ringbuffer: simplify 2017-06-22 09:49:12 +02:00
Wim Taymans
0fc6b1c0be fix some valgrind issues 2017-06-21 16:42:10 +02:00
Wim Taymans
3b5a308645 link: improve renegotiation
Only suspend an idle node when we need to configure a different format.
2017-06-20 16:22:25 +02:00
Wim Taymans
4a6b1b42bc Don't hardcode plugin path
Use SPA_PLUGIN_DIR to get the plugin path.
Install plugins in subdirectory to make it match the build tree.
2017-06-19 12:19:22 +02:00
Wim Taymans
763bd1100e Add user_data to callbacks
Add user data to callbacks, it's more flexible and natural
2017-06-18 19:48:31 +02:00
Wim Taymans
c3b73ba47d Add versions to structures
Use versions instead of size
Remove user_data from callbacks, we can simply pass the callback struct.
2017-06-14 18:32:39 +02:00
Wim Taymans
4a219e81dd loop: move to plugin
Move the loop implementation to a plugin.
Organize the hooks in a list so that we can add many.
2017-06-14 16:27:04 +02:00
Wim Taymans
f55f1739e1 Rework support
Load the mapper from the support plugin
Move the support setup in pw_init
2017-06-14 11:48:41 +02:00
Wim Taymans
b9c719ac7e log: don't crash when failed to load
Improve docs for node
2017-06-14 10:16:24 +02:00
Wim Taymans
9257e3b8f3 make support plugin 2017-06-14 10:15:17 +02:00
Wim Taymans
34450ed7ed Make done event on node
Replace the AsyncDone event with an explicit done callback in the node
to signal completion of an async operation.
Pass read and write fd together with the transport
2017-06-09 17:24:18 +02:00
Wim Taymans
0af8377d10 log: dynamically load the logger API 2017-06-06 16:53:16 +02:00
Wim Taymans
b4fdcbd322 Debug: remove logger
Make a default logger and mapper in a .h file to be used by examples
Remove logger and mapper from libs
Make method to set the default mapper for the debug methods
2017-06-06 13:30:34 +02:00