There were some API changes:
- 878ef44079
- 6665b466d2
Leading to:
Error relocating /usr/lib/pulse-13.0/modules/libdroid-sink.so: pa_make_realtime: symbol not found
Error relocating /usr/lib/pulse-13.0/modules/libdroid-source.so: pa_make_realtime: symbol not found
Error relocating /usr/lib/pulse-13.0/modules/libdroid-source.so: pa_source_get_state: symbol not found
Fixes are:
- include <pulse/util.h>, replace pa_make_realtime -> pa_thread_make_realtime
- replace pa_source_get_state(X) -> X->state
- replace pa_sink_get_state(X) -> X->state
[modules] Fix compatibility with PulseAudio 13.0. JB#47666
We don't need the extra profiles for anything in normal use,
they are just a way to debug profile and hal module handling.
Debugging can still be achieved by using module profiles,
for example with profile=primary
Our droid source may be left in a state of not having an input stream
if reconfiguration fails and fallback to previously active values fails
as well. In this case just avoid using the stream but don't die.
When new source-output is connecting to our droid source
we check if its sample specification or channel map differ
from currently configured source. If they differ close the
input stream and try to open with the new values. If opening
new input stream fails retry opening with previously used
values.
When there already is one or more connected source-outputs
and a new one connects, source is always reconfigured based
on the latest connecting source-output. Already connected
source-outputs will then reattach so that if need be they
will use resampler to get what they originally requested.
[modules-droid] Source is reconfigured dynamically based on input. Fixes JB#47579
Android by design only allows one input at a time so previous
adaptations where we could record to input sources at the same
time was a coincidence. Line the implementation with how the
input handling is defined.
[common] Always use only one input. JB#45496
Previously only one profile could extend previous one, with new
implementation one virtual profile can have as many extensions as is
needed. But only two levels of virtual profiles is supported, that
is virtual1->virtual1-exetension.