Add -c option to pipewire to select config file. Use this to select
the uninstalled conf file.
Rename conf properties, prefix with context.
Simplify the main daemon now that everything can go in config.
Simplify pipewire-pulse now that we can put everything in config, it's
now virtually the same as pipewire but with a differenct config file.
Parse server addresses as array of strings.
When sending captured data to a client, pulseaudio limits the
size of the block to the fragsize. Let's do the same just in case
a client can't deal with more data.
See #615
In the corked state we simply hand out silence and don't try to
consume data from our ringbuffer.
Also set the corked state before syncing this with the data thread.
Fixes#662
Send server change events to subscribers, when default nodes change due
to some nodes being added/removed/changed, also if there is no metadata
change. Make sure the event is consistent with the result from
find_device at the time.
Previously, these were not necessarily sent, or information from
find_device immediately after the event might not reflect the change
yet.
When a sample is playing a cached sample and it disconnects we should
wait until all the pending samples are finished otherwise we stop
their playback and get a chopped or broken sample.
See #595
Allow only one memblock in the output queue. Otherwise, if the
client is for some reason not reading from the socket, we would queue
an unlimited amount of messages until we get killed by OOM.
Change some warn to debug in the process function for things we
handle from the non-rt thread.
Fixes#488
Pulseaudio unsets the preferred sink/source when stream is moved to a
default target. Emulate this behavior by setting + unsetting
target.node, which informs policy-node to move it accordingly.
PulseAudio starts with underrun_for equal to -1, sets it to 0 when
something was played and increments it from then on with the number
of bytes played.
Use the rate match io are to read the exact amount of samples we
need for this cycle from the ringbuffer. We can then request lower
latency.
There will also be less buffering in the audioconverter, which makes
our timestamps more accurate.
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