Wim Taymans
cfe43cbea7
pulse-server: handle NULL as default sink/source
...
Fixes #444
2020-12-05 13:30:02 +01:00
Wim Taymans
8c4145291e
pulse-server: name and id can't be both set in volume/mute
2020-12-05 13:27:42 +01:00
Wim Taymans
0fba936b06
pulse-server: use defines for default sink/source
2020-12-05 13:26:59 +01:00
Wim Taymans
c6663b6a18
pulse-server: fix set-port
...
Parse the name as a string
Pass the device id and port_id in the right properties
Return an error when unknown port was specified.
Fixes #443
2020-12-04 15:41:11 +01:00
Wim Taymans
745b7ee900
pulse-server: tweak some parameters to get lower latency
2020-12-04 15:11:35 +01:00
Wim Taymans
ecc975d089
pulse-server: make sure our buffers are large enough
...
Allocate the buffers a bit larger so that we can handle a client that
sends a bit more data and we don't underrun.
2020-12-04 12:16:07 +01:00
Wim Taymans
3005d33113
module-device-factory: clean up properties in all cases
2020-12-03 10:24:38 +01:00
Wim Taymans
e98931023f
device-factory: save factory_name for debug later
...
Make a copy of the factory_name, the properties it is inside are
destroyed when the device can't be created and we still need the
name for the debug message.
2020-12-03 10:16:38 +01:00
Wim Taymans
3c2ab98a2a
Add support for virtual source
...
A virtual source is usually implemented with a null-sink, it looks
like a source to pulseaudio clients but just forwards what it gets
as input.
Make sure the port names make sense.
You can use the null sink now as:
pactl load-module module-null-sink sink_name=source object.linger=1
media.class=Audio/Source/Virtual channel_map=FL,FR,RL,RR
This creates a node with "input" and "capture" ports and looks
like a virtual source for pulseaudio clients.
pactl load-module module-null-sink sink_name=source object.linger=1
media.class=Audio/Sink channel_map=FL,FR,RL,RR
This creates a node with "playback" and "monitor" ports and looks
like a virtual sink for pulseaudio clients.
pactl load-module module-null-sink sink_name=source object.linger=1
media.class=Audio/Duplex channel_map=FL,FR,RL,RR
This creates a node with "playback" and "capture" ports and looks
like a virtual source and sink for pulseaudio clients.
2020-12-02 15:42:56 +01:00
Wim Taymans
e2f0ab5710
pulse-server: handle channel_map null-sink option
2020-12-02 15:39:31 +01:00
Wim Taymans
53adabea19
adapter: name Duplex port names capture/playback
2020-12-02 13:00:21 +01:00
Wim Taymans
d6127a4745
handle Duplex media class
...
Audio/Duplex is both a source and a sink. Name the ports as input/output
and make sure we list them in the source and sink lists in pulse-server.
2020-12-02 11:44:19 +01:00
Wim Taymans
b0a717c95e
pulse-server: use right prefix for object check
2020-12-02 10:59:25 +01:00
Wim Taymans
f8059be328
adapter: small cleanup
2020-12-02 10:33:30 +01:00
Wim Taymans
4fb9e7eecc
pulse-server: convert some more null-sink properties
2020-12-02 10:31:16 +01:00
Wim Taymans
1e9b152bb5
spa: make an extra level for arrays
...
Make a level with type info for the array elements.
2020-12-01 13:30:14 +01:00
Wim Taymans
73e0bb255a
props: add container property to PROP_INFO
...
So we can mark a property should be inside a container.
Use this info in pw_stream to construct properties.
2020-12-01 12:58:18 +01:00
Wim Taymans
e995d3a832
media-session: store config data as json objects
...
So that we can use the json string escaping functions for keys
and use multiline config files.
2020-12-01 12:05:08 +01:00
Wim Taymans
19dc150643
media-session: don't emit metadata remove in shutdown
...
When in shutdown we destroy all objects but don't remove all
the metadata associated with them, like route settings.
2020-12-01 12:03:28 +01:00
Wim Taymans
19a67a2da5
media-session: add option to disable hardware volume
...
See #426
2020-12-01 10:45:24 +01:00
Wim Taymans
97ec1ce209
pw-cat: handle stream error
...
Exit when the stream is in error
See #430
2020-12-01 09:39:16 +01:00
Wim Taymans
8b048279f1
pulse-server: handle error during create
...
Use the create-tag in the error when the stream fails. This way the
client can know when something failed during create.
See #430
2020-12-01 09:37:40 +01:00
Wim Taymans
23bcc21240
media-session: remove metadata when default node is removed
2020-12-01 09:24:16 +01:00
Wim Taymans
f8e501169b
media-session: count property changes correctly
2020-11-30 15:05:53 +01:00
Wim Taymans
95718792c4
pw-cli: implement set_param
...
You can do something like this to set some params:
pw-cli set-param 46 13 '{ "index": 5,
"props": { "mute": false,
"channelMap": [ "FL", "LFE" ]
},
"direction": "Output"
}'
2020-11-30 13:31:46 +01:00
Wim Taymans
3d93b2492c
portal: improve error message
2020-11-29 16:51:33 +01:00
Wim Taymans
068be74f73
core: silence the errors
...
Just log a debug message, applications should decide if this is
fatal and log an error message
2020-11-29 16:25:41 +01:00
Wim Taymans
b8300c663b
improve some errors
...
Silence some -ENOENT warnings, they can happen when the object we
are introspecting is destroyed
2020-11-29 16:22:50 +01:00
Wim Taymans
6e4c138238
properties: support properties from json object sting
...
Make pw_properties_new_string() work with a json object string.
This makes it possible to specify property strings as more complex
objects and escape characters.
2020-11-28 20:25:39 +01:00
Wim Taymans
62cdec8448
spa: move json parser to utils
...
Add unit test
Add escape function
2020-11-28 15:34:01 +01:00
Wim Taymans
6e0fed37b4
pulse-server: also handle planar formats
...
Also handle streams with planar formats. Just pretend that they
are interleaved, it does not really matter.
2020-11-27 15:39:59 +01:00
Wim Taymans
350fa39aba
pulse-server: try to convert name to id when selecting
...
Obsoletes !327
2020-11-27 15:04:06 +01:00
Wim Taymans
ea84177a2e
pulse-server: make sure we have active_name/profile set
2020-11-26 12:05:32 +01:00
Wim Taymans
3b20e0f9e7
pulse-server: fix lookup of module
2020-11-26 09:49:16 +01:00
Wim Taymans
6235c8c0f2
pulse-server: don't set object.linger by default
2020-11-26 09:35:29 +01:00
Wim Taymans
1934df7307
pulse-server: implement OBJECT_LINGER
...
Use OBJECT_LINGER in module-load to make sure the module stays loaded
after the client disconnects.
Implement linger in adapter and node-factory
2020-11-26 09:28:22 +01:00
Wim Taymans
0fe77d39ce
pulse-server: fallback to name if no description is set
2020-11-26 09:27:19 +01:00
Wim Taymans
765ce0564f
pulse-server: don't crash with NULL arguments in module-load
2020-11-26 09:26:29 +01:00
Wim Taymans
64be5bb617
pulse-server: fix debug line
2020-11-25 21:05:49 +01:00
Wim Taymans
9bf7be7984
client-node: increase some limits
...
See #416
2020-11-25 17:41:05 +01:00
Wim Taymans
261144c27f
media-session: add /etc/pipewire/media-session.d/ dir
...
Placing files in it will activate options in the session manager.
2020-11-25 16:13:20 +01:00
Wim Taymans
38fcc64e1f
pulse-server: check if route param changed
...
Only mark the sink/source changed when the card route param
changed. Avoids triggering sink/source updates when nothing
changed.
See #298
2020-11-24 20:02:46 +01:00
Wim Taymans
3d6e87832d
pulse-server: after new event, clear changes
...
Remove any pending changes after we emited the new event.
2020-11-24 19:29:49 +01:00
Wim Taymans
a65d4d04c3
pulse-server: collect updates and apply after sync
...
Collect all object updates in a separate list. When we collected
all updates in sync, apply them and then signal notifications.
This ensure we have a consistent object model.
2020-11-24 15:31:20 +01:00
Wim Taymans
6ab25c6904
pulse-server: fix parsing of format-info
...
Fixes totem playback
2020-11-24 15:11:05 +01:00
Wim Taymans
d0d64de1a0
pulse-server: emit metadata immeditately
...
Don't wait for sync but immediately emit the added event for metadata.
This way the server can get the name and handle the metadata events
immediately.
2020-11-24 11:55:51 +01:00
Wim Taymans
cc7f91db19
pulse-server: actually wait for sync to complete
...
Wait for sync to complete before we start emiting new objects.
Add some more debug
2020-11-24 11:28:29 +01:00
Wim Taymans
7efd140e10
pulse-server: don't wait for links to complete
2020-11-24 11:27:04 +01:00
Wim Taymans
2cd59fdf8b
pulse-server: don't send invalid format and channels
2020-11-24 10:18:17 +01:00
Wim Taymans
0c66b5677b
pulse-server: init volume/channelmap correctly in stream-restore
2020-11-24 09:54:42 +01:00