[pulseaudio-discuss] [PATCH v9 0/8] Bluetooth A2DP codecs

Pali Rohár pali.rohar at gmail.com
Thu Apr 25 16:51:49 UTC 2019


On Thursday 25 April 2019 19:43:28 Luiz Augusto von Dentz wrote:
> Hi Pali,
> 
> On Thu, Apr 25, 2019 at 2:42 PM Luiz Augusto von Dentz
> <luiz.dentz at gmail.com> wrote:
> >
> > Hi Pali,
> >
> > On Thu, Apr 25, 2019 at 2:35 PM Pali Rohár <pali.rohar at gmail.com> wrote:
> > >
> > > On Thursday 25 April 2019 13:28:16 Pali Rohár wrote:
> > > > On Thursday 25 April 2019 14:19:15 Luiz Augusto von Dentz wrote:
> > > > > These seems to work great, I can even switch on the fly the profiles
> > > > > and after a short delay it switches without a problem, there is one
> > > > > issue related to reconnecting though:
> > > > >
> > > > > https://gist.github.com/Vudentz/40f10e85fb860083958edae67093f016
> > > > >
> > > > > With BlueZ remembering the last used endpoint (aptX) it seems the
> > > > > policy ignores that and reverts to highest priority (SBC UHQ),
> > >
> > > Relevant lines:
> > >
> > > D: [lt-pulseaudio] bluez5-util.c: Transport /org/bluez/hci0/dev_94_20_53_2E_08_CE/sep5/fd26 available for profile a2dp_sink_aptx
> > > ...
> > > D: [lt-pulseaudio] card.c: a2dp_sink_aptx availability unknown
> > > ...
> > > D: [lt-pulseaudio] card.c: off availability yes
> > > I: [lt-pulseaudio] card.c: bluez_card.94_20_53_2E_08_CE: active_profile: a2dp_sink_sbc_uhq2
> > > D: [lt-pulseaudio] module-bluetooth-policy.c: Looking for A2DP profile activated by bluez for card bluez_card.94_20_53_2E_08_CE
> > > I: [lt-pulseaudio] card.c: Created 5 "bluez_card.94_20_53_2E_08_CE"
> > >
> > > We got information that sep5 is activated with fd26 and it corespondent
> > > to profile a2dp_sink_aptx. And on next lines we see that profile has
> > > unknown availability -- which means that it is possible to switch to
> > > that codec/profile, but it is not activated yet. On next lines we see
> > > that module-bluetooth-policy is trying to find "a2dp_*" which has
> > > availability "on", but there is no one. So initial profile stay
> > > a2dp_sink_sbc_uhq2 which was chosen as default by card.c.
> > >
> > > So problem is why a2dp_sink_aptx profile has unknown availability even
> > > it is activated? It should have "on" availability. And then policy
> > > choose it as initial.
> >
> > Right, looks like the state is not correct since it has a fd already
> > it should have been marked available.
> 
> Problem seems to be that we need to set the transport state to playing
> since we introduce the following code:
> 
>     if (cp->available == PA_AVAILABLE_NO &&
> u->support_a2dp_codec_switch && pa_bluetooth_profile_is_a2dp(profile))
>         cp->available = PA_AVAILABLE_UNKNOWN;
> 
> That means every A2DP profile will be set to unknown including even if
> they have no transport yet

That is truth. But if there is a transport then availability is YES.

Availability NO is used when it is not possible to activate transport
because it is unsupported (e.g. A2DP not connected or when bluez does
not support profile switching).

> so now we have to set the initial transport to playing

How it should help? I do not see reason now...

Anyway, I was not able to reproduce your problem, basically I always had
availability for activated profile set to YES.

> which hopefully it is just a matter doing the
> following changes (not tested):
> 
> diff --git a/src/modules/bluetooth/bluez5-util.c
> b/src/modules/bluetooth/bluez5-util.c
> index 4e4ab0cb8..429914328 100644
> --- a/src/modules/bluetooth/bluez5-util.c
> +++ b/src/modules/bluetooth/bluez5-util.c
> @@ -1837,6 +1837,7 @@ static DBusMessage
> *endpoint_set_configuration(DBusConnection *conn, DBusMessage
>      t->acquire = bluez5_transport_acquire_cb;
>      t->release = bluez5_transport_release_cb;
>      pa_bluetooth_transport_put(t);
> +    pa_bluetooth_transport_set_state(t, PA_BLUETOOTH_TRANSPORT_STATE_PLAYING);
> 
>      pa_log_debug("Transport %s available for profile %s", t->path,
> pa_bluetooth_profile_to_string(t->profile));
> 
> 

-- 
Pali Rohár
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20190425/c3b8cef2/attachment.sig>


More information about the pulseaudio-discuss mailing list