Commit graph

50 commits

Author SHA1 Message Date
Wim Taymans
3dc6820e9e Don't use __ in defines or declarations, it's reserved
SPA_TYPE -> SPA_TYPE_INFO for type info strings
improve includes

Fixes #115
2019-01-14 13:00:00 +01:00
Wim Taymans
66bab1d9b2 remote: remove some events
Remove some events from the remote that we can find on the core_proxy.
Use the core_proxy to get to the done and info events.
Remove pw_remote_get_core_info(), we don't need this anymore now that
we don't listen for the event and the user can keep track of this
herself.
2019-01-10 10:08:14 +01:00
Wim Taymans
349a11cde5 add const to info 2019-01-09 17:49:45 +01:00
Wim Taymans
979d155382 core: add user_data to core 2019-01-08 17:32:37 +01:00
Wim Taymans
e918f9f77c fix sign confusion 2019-01-07 15:52:42 +01:00
Wim Taymans
0984096089 free() can handle NULL just fine so skip the check
Fixes #117
2018-12-19 17:47:25 +01:00
Wim Taymans
4be368c957 media-session: handle dont-reconnect
If dont-reconnect is given and a target node, kill the stream when
the target node can't be found.
2018-12-14 16:35:57 +01:00
Wim Taymans
8e969c9d44 media-session: set media (sub)type on dsp nodes 2018-12-13 17:26:35 +01:00
Wim Taymans
3ab95f66f3 media-session: don't set audio profile on non-audio nodes 2018-12-13 17:18:37 +01:00
Wim Taymans
491dd785ad media-session: only try to link to nodes 2018-12-12 18:32:28 +01:00
Wim Taymans
2bd7f5c934 media-session: skip non-dsp ports on dsp nodes
Detect DSP nodes sooner, flag pads that have the dsp property, skip
ports on DSP nodes without the dsp flag.
2018-12-11 16:32:19 +01:00
Wim Taymans
5fcbbb4d6b media-session: keep track of profile format
Also keep track of the profile format of a node, this is the profile we
choose for it and what we should use as a profile for the peer node.
2018-12-05 15:59:45 +01:00
Wim Taymans
bf344a86e5 alsa: add on and off profiles 2018-11-29 15:24:13 +01:00
Wim Taymans
4810d91c58 media-session: use direction to derive CATEGORY
Try to use the stream direction to figure out the CATEGORY when missing.
Add some more debug
2018-11-28 17:32:35 +01:00
Wim Taymans
7c54b4b89c audio-dsp: improve properties 2018-11-28 13:24:33 +01:00
Wim Taymans
cff8ce8e99 media-session: set device name 2018-11-28 12:21:19 +01:00
Wim Taymans
25c81e8c34 media-session: only add DSP for raw audio nodes 2018-11-21 12:19:47 +01:00
Wim Taymans
c9f7439b52 media-session: debug profile 2018-11-16 16:41:13 +01:00
Wim Taymans
088ee9f09e Improve TIMESPEC_TO_TIME
Add explicit TO_NSEC and TO_USEC versions to make it clearer and to
allow for some optimizations.
2018-11-07 09:56:24 +01:00
Wim Taymans
85f2e93c54 Relicense as MIT/X11
Remove some obsolete files
2018-11-05 17:48:52 +01:00
Wim Taymans
eb0a561f8c permissions: pass pw_permission struct around
Use a pw_permission struct to express permissions of object.
Improve client permissions, add/remove globals when permissions
are changed.
2018-11-05 15:02:08 +01:00
Wim Taymans
ee72023629 media-session: try to connect to the node directly
If we can't find a session for the target node, try to connect to the
node directly if it exists.
2018-10-30 16:30:16 +00:00
Wim Taymans
83517e22ac media-session: set permissions on restricted access clients 2018-10-29 08:47:45 +00:00
Wim Taymans
5088bcce60 module-access: make new access module
Rename the flatpak module to access module. The access module should
either let the client connect or mask the client busy while the
permissions are being configured. It is then up to the session manager
to collect the right permissions of the objects and configure those
in the client.

Let the media session monitor the clients and configure the permissions.
2018-10-27 17:33:21 +01:00
Wim Taymans
e59a7c0848 media-session: set node volume 2018-10-18 15:16:59 +02:00
Wim Taymans
fd5e315a10 media-session: handle default media roles better
Use the media.class to derive a better role.
2018-10-18 12:53:30 +02:00
Wim Taymans
0fe0d5dd85 media-session: also enable session for video 2018-10-15 17:51:47 +02:00
Wim Taymans
2b096993ed media-session: only enable session when format is known 2018-10-15 12:46:50 +02:00
Wim Taymans
b3189bb5e7 media-session: handle port without node
Don't crash when the node proxy is destroyed before the port proxy.
2018-10-11 15:56:49 +02:00
Wim Taymans
805240258b Improve channel positions
Sort the channel positions as the suggested format
Use the session node channel positions as the target profile
2018-10-09 20:11:01 +02:00
Wim Taymans
e1ec1bad23 spa: add profile param
Make a profile param that can be used to configure a node with a
certain profile.
Use the profile to configure the ports on splitter and merger and
get rid of the dynamic ports.
Use the profile to configure the client-node and audio-dsp.
Don't try to link more ports than available between client-node and
dsp.
2018-10-08 11:45:52 +02:00
Wim Taymans
41d38e56df media-session: keep track of dsp proxy
Keep the dsp_proxy around because we need it to clean up the
session.
2018-10-05 10:28:20 +02:00
Wim Taymans
b2e84e85c6 media-session: query stream format
Query the stream format. We will use this later to decide what to link
to and how to convert.
2018-10-04 16:41:00 +02:00
Wim Taymans
32e4d676b4 media-session: clear manager after cleanup 2018-10-02 05:45:50 +02:00
Wim Taymans
b8fb7aeaad media-session: handle disconnect better 2018-09-26 13:22:21 +02:00
Wim Taymans
650f9eb9a7 media-session: make device links passive again 2018-09-26 10:52:33 +02:00
Wim Taymans
59f10ad453 Add proxy destroy
Make the current destroy method on the core for proxies to remove the
server side resource.
Make a new destroy method on the registry to destroy globals.
Remove the destroy method on the client-node
media-session: monitor the dsp and device node states to manage the
session state
2018-09-21 16:43:11 +02:00
Wim Taymans
3d1acf3032 media-session: also link source to DSP 2018-09-20 10:12:04 +02:00
Wim Taymans
3dc2254196 media-session: add suspend 2018-09-18 09:28:52 +02:00
Wim Taymans
96a84d09df media-session: remove session when the driver node is removed 2018-09-17 17:17:08 +02:00
Wim Taymans
fcd90b25d3 More work on multichannel
Reorder channels to a more common default order.
Only add channel layout when channels > 1
Don't try to link to a session that is still starting
Small sse fixes.
2018-09-14 15:23:12 +02:00
Wim Taymans
5196f7f053 audio: remove layout from audio
Make special format types for planar and interleaved instead of
having a field.
Add enum for audio channel positions
Add some default audio channel layouts
Place the channel layout in the audio format when possible
alsa: place audio channel positions in format
Add sse optimized channel mixing for some common cases
Remove name from port info, it's not mandatory and in the properties
Add direction to port info
2018-09-13 17:03:56 +02:00
Wim Taymans
fb3379e587 Pass channelmask around and use it to name ports
Use the channel name in the port names of the dsp
2018-09-11 18:09:45 +02:00
Wim Taymans
7aae01fe15 media-session: handle object remove
Improve debug
Deal with removed objects, handle node cleanup
Classify nodes with a type ans get rid of stream struct.
2018-09-11 15:25:35 +02:00
Wim Taymans
45807e804a media-session: also link sinks correctly 2018-09-11 12:02:35 +02:00
Wim Taymans
968192f9a9 media-session: implement more
Track the state of nodes and ports.
Make streams for nodes tagged as stream
Make sessions for nodes that are sinks and sources and make a DSP
node for those
Rescan when a change happens and reconfigure
Link streams to sessions
2018-09-11 10:26:19 +02:00
Wim Taymans
90c1a95eef More type cleanups
SPA_ID_* -> SPA_TYPE_*. We use 'type' for all registered types.
ID refers to either a registered type or an enum.
Improve introspection of object ids. Make 0 an invalid enum and
use it to look up the object id type.
Move some type-info files together.
Swap type and id of the object, we first specify the type and then
the id because the meaning of the id depends on the object type.
2018-08-27 15:03:11 +02:00
Wim Taymans
fca3e1d85d Remove dynamic types
Do not use dynamic types anymore. The reason is that it's difficult:

- to maintain a shared type database over a network.
- the extra overhead when translating between processes and for
  maintaining the translation tables.
- race conditions in translating in RT-threads, this is a problem
  because we want to make event streams.

We now have simple enums with types and extension points for all
types. This is also nicer to use in general.
We don't need the mapper anymore or pass strings around as types.
There is a parallel type info system to get more info about ids and
enums and their hierarchy. It can also be used for debugging.
2018-08-23 17:47:57 +02:00
Wim Taymans
a6ad8f747f remove spalib 2018-08-14 15:29:25 +02:00
Wim Taymans
17cc9d2039 add media session example beginnings
Add an example media session that runs as a separate program instead
of a module
2018-08-09 11:07:41 +02:00