Pauli Virtanen
b76bcdc70d
pulse-server: NULL means default only if id==INVALID
...
The default values also only apply for sources/sinks which have
defaults.
2021-01-04 23:54:48 +02:00
Wim Taymans
518365e350
pulse-server: fix module arg parsing
...
Parse the module arguments according to the pulseaudio syntax,
not our own syntax (which requires "" around a , delimter). Fixes
audio.position=FL,FR argument.
See #527
2021-01-04 17:25:28 +01:00
Wim Taymans
0bf7b07d91
pulse-server: improve warning
2021-01-02 20:37:44 +01:00
Wim Taymans
f7a7feea4e
pipewire-pulse: use defines for our keys
2020-12-18 17:19:24 +01:00
Wim Taymans
d2a5f5c1ae
pulse-server: also cleanup sample when error
...
Remove the separate error event and merge with the done event with
error code. This then also marks the sample as done when in error
so that it gets cleaned up properly.
Fixes #486
2020-12-18 09:50:12 +01:00
Wim Taymans
1a690a0cbb
pulse-server: limit writes to ringbuffer
...
We can't write more to the ringbuffer than its maxsize. Some clients
send more than the negotiated maxsize and cause a crash if we don't
clamp.
See #440
2020-12-17 19:39:12 +01:00
Wim Taymans
e0580fedc1
pulse-server: handle seek flags and offset
...
Fixes #485
2020-12-17 16:49:17 +01:00
Wim Taymans
00295b64b5
pulse-server: don't write too small buffers
...
Fixes #399
2020-12-11 18:09:21 +01:00
Wim Taymans
bcf6c0986e
pulse-server: read in chunks of minreq from the ringbuffer
...
Don't read too large chunks from the ringbuffer but in minreq
increments. This is more what pulseaudio does.
Fixes #463
2020-12-11 12:45:01 +01:00
Wim Taymans
d3db703f77
pulse-server: improve some debug
2020-12-11 12:39:46 +01:00
Wim Taymans
4ef0ef464e
pulse-server: warn for unsupported seek flags
2020-12-11 10:39:15 +01:00
Wim Taymans
5469ac19ab
pulse-server: map node.description to device.description
...
Makes Teamspeak work
Fixes #462
2020-12-08 12:20:47 +01:00
Wim Taymans
5a94bfc6cd
pulse-server: add some more supported channel_map values
2020-12-07 21:52:09 +01:00
Wim Taymans
157d6de607
pulse-server: convert channel_map channels
...
channel_map contains pulseaudio channel names, convert them to
pipewire channel ids and then into pipewire channel names for the
null sink.
2020-12-07 20:29:22 +01:00
Wim Taymans
203679f27e
pulse-server: support lookup of monitor names
...
Support setting a monitor as default source.
2020-12-05 19:16:04 +01:00
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
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
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
4fb9e7eecc
pulse-server: convert some more null-sink properties
2020-12-02 10:31: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
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
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
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
Wim Taymans
edbec5d4ba
pulse-server: fix channel map lookup
2020-11-24 09:49:35 +01:00
Wim Taymans
2d71d02f40
pulse-server: only debug packets, not data messages
...
See #405
2020-11-24 09:10:32 +01:00
Haochen Tong
648dfc0250
pulse-server: end the statement with semicolon
2020-11-23 23:27:53 +01:00
Wim Taymans
d56e759166
pulse-server: don't send NULL profile name in port info
2020-11-23 17:11:43 +01:00