In case pa_*_move_all_fail(), it is nicer to let a module override the
default behavior to fallback on a different sink/source. (instead of
unlinking the sink_input/source_output)
When doing init_profile(), the value u->sample_spec is modified to the
one which has been last configured. In case of HSP, it will be 8kHz.
Later on, when setting the profile to A2DP, it picks up the lower rate
available which match with current u->sample_spec.
In my case, it would be 16kHz. To circunvent the issue, I decided to
reinitialize the u->sample_spec to default value with user module
argument requested rate.
Currently, Bluez audio service crash when reusing the same control
socket to switch to different profiles. This typically happen when
first switching from HSP to A2DP on dual headsets.
Erich Boleyn <erich@uruk.org> wrote:
> Using RTP for multi-room music streaming, updated to Pulse 0.9.14 from
> 0.9.9, RTP reception new crashes with a segfault on all machines at
> the first "Updating sample rate" log message.
>
> Source of the segfault appears to be null pointer for
> "impl_update_rates" function in resampler routine, perhaps
> uninitialized resamplers in general?
A fresh look after work made the resampler initialization code pop out.
The problem is in the sink connection being made from
"module-rtp-recv.c", the "PA_SINK_INPUT_VARIABLE_RATE" flag should be
passed into "pa_sink_input_new", but is not there. Made the change and
tested it, fixes the problem. Checked and head-of- tree off of the
pulseaudio.org source browsing link does not have this fix either.
One-liner patch attached.
Make sure libdbus-util.so is installed/relinked prior to libalsa-util.so
Make sure libbluetooth-util.so is installed/relinked prior to module-bluetooth-discover.so
As the APEX device only has one channel of volume (e.g. it's always matched) we emulate any variation in channel volumes in software.
Remove the unnecessary callback defininitions.