Wim Taymans
8caab44782
Revert "pulse-server: always ask for more data when underrun"
...
This reverts commit e1576c53d4 .
This is not quite right, it seems to break orca and qemu audio.
See #1900
2021-12-14 10:27:01 +01:00
Wim Taymans
e1576c53d4
pulse-server: always ask for more data when underrun
...
Ask for more data when we are in underrun and not corked.
Fixes paplay and changing the quantum to something large.
2021-12-09 23:10:08 +01:00
Wim Taymans
7e5a0849f6
Revert "pulse-server: always asks for more data when underrun"
...
This reverts commit 1b94b66924 .
It causes problems with qemu.
Without this patch, paplay --latency-msec=1 /some.wav hangs when
forcing the quantum to 8192. A different fix will be needed.
2021-12-09 16:54:47 +01:00
Wim Taymans
a8139b7acf
pulse-server: handle prebuf state better
...
When we have a prebuf value, we start in the prebuf state.
We go back to prebuf when we have a prebuf value and an empty
ringbuffer.
2021-12-03 17:49:59 +01:00
Wim Taymans
16665d74d2
pulse-server: don't clamp missing bytes to tlength
...
When we increase the quantum past the tlength, we need to be able to
ask for more bytes than the tlength or else we will never exit this
underrun state. Look at the last required bytes and use that if it's
larger then tlength.
2021-12-03 16:43:16 +01:00
Wim Taymans
1b94b66924
pulse-server: always asks for more data when underrun
...
Even when prebuffer is active, we need to ask for more data to
resolve the underrun.
2021-12-03 16:41:41 +01:00
Wim Taymans
cc9fbe4375
pulse-server: add some debug
2021-11-30 09:22:58 +01:00
Wim Taymans
700a22b7f7
pulse-server: recover for underrun better
...
If we are underrun, don't update the read pointer and let the write
pointer catch up.
If we don't have enough data to fill a buffer, skip all the available
data and wait for the new request to arrive.
Fixes #1857
2021-11-29 20:22:05 +01:00
Wim Taymans
a0d7fb01ba
pulse-server: add size check when reading strings
2021-11-25 10:14:30 +01:00
Wim Taymans
5d20e3028a
pulse-server: avoid reading past the message size
...
We can't really get into this situation but it is a good idea to check
that we don't try to read past the message length.
2021-11-25 09:48:34 +01:00
Wim Taymans
ac4ec20b01
pulse-server: free pending client message
...
If the client is destroyed before it could completely read the message,
free the pending message as well.
See #1840
2021-11-23 18:13:35 +01:00
Wim Taymans
9feecb36d0
pulse-server: don't add large blocks to cache
...
See #1840
2021-11-23 17:44:01 +01:00
Wim Taymans
418c6fbe96
pulse-server: limit the max cache to 16MB
...
Don't recycle messages when we have too many allocated already.
See #1840
2021-11-23 17:24:24 +01:00
Wim Taymans
5ae75e1d2a
pulse-server: use STREAM_CAPTURE_SINK for monitor capture
...
Make the pulseaudio layer set the PW_KEY_STREAM_CAPTURE_SINK property
when a monitor device is selected as a source to make it easier for the
session manager to find the right source.
2021-11-19 20:24:58 +01:00
Wim Taymans
af2e7b630a
pulse-server: turn error into info
...
Receiving a message from an already removed stream should not result in
an error message.
See #1812
2021-11-16 12:33:23 +01:00
Wim Taymans
6ce9260980
pulse-server: implement module-raop-discover
2021-11-12 17:53:24 +01:00
Nicolai Syvertsen
a84cfac28a
Only handle -EPIPE eerrors.
2021-11-10 19:26:03 +00:00
Nicolai Syvertsen
7b773433f4
pipewire-pulse: add manager disconnect event
...
Drop client connections when pipewire goes away. pipewire-pulse daemon can remain running and pulseaudio clients will be able to connect again once pipewire is up and running.
2021-11-10 19:26:03 +00:00
Wim Taymans
c9fc3d7f42
pulse-server: don't process while the stream is created
...
When the stream is still being created, avoid doing any processing
because some things might not be configured yet.
2021-11-09 16:29:46 +01:00
Wim Taymans
743f699193
pulse-server: try to not put pointers in info messages
...
It's not very helpful, prefer to use human readable strings and move the
more techincal stuff in debug messages.
2021-11-05 16:22:22 +01:00
Wim Taymans
2f3e65c049
pulse-server: leave the draining state
...
Use pw_stream_set_active() to leave the draining state so that our
process methods are called again and we can resume.
2021-11-05 15:47:49 +01:00
Wim Taymans
0cccff517b
pulse-server: send the drained event only once
...
Only send the drained command once. pw-stream keeps on emitting drained
events as longs as the stream is drained.
2021-11-05 15:42:33 +01:00
Wim Taymans
6ca297797f
pulse-server: ensure latency is multiple of frame_size
2021-11-05 13:31:09 +01:00
Wim Taymans
b96f15d2fe
pulse-server: improve latency setup a little
...
Reorganize the latency setup in one place, return a desired device
latency for use as quantum.
PulseAudio assigns half of the (tlength - minreq) latency to the sink
but we can't do that because our sinks have a max-quantum of latency.
Fix this by clamping our calculated sink latency to the quantum
PulseAudio subtracts the sink latency from the tlength in adjust latency
mode, so we need to do the same.
This makes PULSE_LATENCY_MSEC values bahave more like pulseaudio.
See #1769
2021-11-04 18:07:30 +01:00
Wim Taymans
86ca0f8466
acp: improve debug of channel map
...
Increase the size of the channel_map debug printf buffer.
Use a safer version of the snprintf that avoids buffer overruns.
See #1781
2021-11-04 16:41:32 +01:00
Wim Taymans
efd8ac25e3
pulse-server: don't emit _removed without havine emitted _added
...
Don't emit _removed for objects that are still being created because
we did not emit an _added signal for them yet.
2021-11-04 12:50:18 +01:00
Wim Taymans
f70fdf5605
pulse-server: also remove creating objects
...
When an object is created, it is marked creating until all roundtrips
complete. If the object is removed in between, we don't remove it
because find_object does not return creating objects.
Make find_object also return the creating objects to fix this.
2021-11-03 16:57:41 +01:00
Wim Taymans
a2f06be199
pulse-server: Improve combine sink properties
...
Make streams and sink have the same description so that they show
up as the same node in catia.
2021-10-26 10:50:28 +02:00
Wim Taymans
33653cbabf
protocol-pulse: flush streams on pause
...
To remove any lingering data
2021-10-26 10:49:50 +02:00
Barnabás Pőcze
4c27c3fd43
pulse-server: use for-each loop
...
Use `SPA_FOR_EACH_ELEMENT` to enumate the elements
in the array instead of an "indexed" loop.
2021-10-18 15:36:22 +02:00
Barnabás Pőcze
3fefb55ef2
pulse-server: return NULL instead of 0
...
... to be consistent with the vast majority of the
existing source code.
2021-10-18 15:36:22 +02:00
Barnabás Pőcze
ee7b82ac9e
pulse-server: remove unnecessary NULL check
...
`spa_streq()` already checks for NULL pointers, so the
pointer does not need to be checked before calling it.
2021-10-18 15:36:22 +02:00
Barnabás Pőcze
80ae688cc6
pulse-server: compile extensions separately
...
Avoid including other C source files. Compile them separately.
2021-10-18 15:36:17 +02:00
Wim Taymans
8c346ab3a7
pulse-server: list NETWORK flag on devices
...
Mark network sinks and sources with node.network.
2021-10-14 13:45:58 +02:00
Wim Taymans
058cecee7e
pulse-server: remove some pw_log_info debug
2021-10-13 15:44:38 +02:00
Wim Taymans
f1c29194a8
pulse-server: improve lookup of default source and sink
...
Make things work then there is no default input device and the default
source is actually the monitor of the default sink.
Also implement lookups of monitor sources with the monitor id as the
name.
Fixes #1691
2021-10-13 15:39:41 +02:00
Wim Taymans
1b09640b6f
pulse-server: use find_device for get_info of a device
...
So that we also go through the same logic for finding the default
source and sink when needed.
2021-10-13 15:38:59 +02:00
Peter Hutterer
1d8d7e90ce
modules: switch a few modules to the new property helpers
2021-10-13 07:12:00 +00:00
Wim Taymans
9afb832d22
pulse-server: find the sink when doing monitor source lookup
...
When we do a lookup of a source with the monitor flag bits set in the
id, strip off the monitor bits se we can find the associated sink.
Fixes #1677
2021-10-11 17:02:13 +02:00
Wim Taymans
5f7c4dec34
meson: make it possible to compile without dbus
...
Make an option to disable dbus and all the code that depends on
it.
Fixes #1685
2021-10-09 15:00:04 +02:00
Björn Daase
cf38b7bdc4
fix codespell issues
2021-10-07 15:26:18 +00:00
Nicolai Syvertsen
28c2e8ca56
pulse-tunnel: use format, channels and rate props
2021-10-07 13:00:24 +02:00
Wim Taymans
5026645e93
pulse-server: add latency_msec parameter
2021-09-30 09:49:09 +02:00
Peter Hutterer
52a96bb602
modules: add log topics to module-protocol-pulse
...
This ends up using a nested namespace: mod.protocol-pulse for the module
itself, mod.protocol-pulse.foo for the various submodules and
extensions.
2021-09-28 09:35:39 +02:00
Peter Hutterer
207c5796b6
pulse: print the strerror on metadata errors
2021-09-23 15:29:48 +10:00
Wim Taymans
6f519d4052
pulse-server: put the channel map in the loopback args
...
Fixes #1486
2021-09-21 18:33:29 +02:00
Wim Taymans
c8f629a0a3
pulse-server: improve module args compatibility
...
Boolean switches can also be true with 'y', 'yes', 't' and 'on'
2021-09-21 17:39:11 +02:00
Wim Taymans
fda6e7b4af
pulse-server: parse default.clock.rate from core info
...
Use the core.info clock rate as the default sample rate as soon as the
manager exposes the core object. Otherwise the default sample rate is 0
until someone calls GET_SERVER_INFO, which as a side effect sets the
default sample rate.
Fixes issues with sinks not appearing right away.
Fixes #1588
2021-09-13 10:50:01 +02:00
Wim Taymans
7e4d5b142f
pulse-server: don't leak format info
2021-09-07 09:51:58 +02:00
Peter Hutterer
8bb0e340c7
protocol-pulse: fix two -Wformat-nonliteral warnings
...
For the stream group, we break into the three components we write out
and print those.
For the IPv6 address printing inside [], we can make this a condition on
the printf statement.
2021-09-07 08:57:28 +10:00