Re: [PATCH v3 1/9] doc/media-api: Enable MediaEndpoint to expose remote SEP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Saturday 20 April 2019 09:43:17 Luiz Augusto von Dentz wrote:
> Hi Pali,
> 
> On Fri, Apr 19, 2019 at 3:04 PM Pali Rohár <pali.rohar@xxxxxxxxx> wrote:
> >
> > On Friday 19 April 2019 14:48:38 Luiz Augusto von Dentz wrote:
> > > Hi Pali,
> > >
> > > On Fri, Apr 19, 2019 at 2:02 PM Pali Rohár <pali.rohar@xxxxxxxxx> wrote:
> > > >
> > > > On Friday 19 April 2019 13:04:01 Luiz Augusto von Dentz wrote:
> > > > > Hi Pali,
> > > > >
> > > > > On Fri, Apr 19, 2019 at 11:03 AM Pali Rohár <pali.rohar@xxxxxxxxx> wrote:
> > > > > >
> > > > > > On Wednesday 27 March 2019 12:14:30 Pali Rohár wrote:
> > > > > > > On Sunday 27 January 2019 03:00:38 Pali Rohár wrote:
> > > > > > > > On Wednesday 23 January 2019 13:24:22 Luiz Augusto von Dentz wrote:
> > > > > > > > > Hi Pali,
> > > > > > > > > On Tue, Jan 22, 2019 at 7:56 PM Pali Rohár <pali.rohar@xxxxxxxxx> wrote:
> > > > > > > > > >
> > > > > > > > > > On Tuesday 22 January 2019 16:20:12 Luiz Augusto von Dentz wrote:
> > > > > > > > > > > Hi Pali,
> > > > > > > > > > > On Tue, Jan 22, 2019 at 3:45 PM Luiz Augusto von Dentz
> > > > > > > > > > > <luiz.dentz@xxxxxxxxx> wrote:
> > > > > > > > > > > >
> > > > > > > > > > > > From: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx>
> > > > > > > > > > > >
> > > > > > > > > > > > This adds the possibility to expose remote SEP using MediaEndpoint
> > > > > > > > > > > > interface to allow setting a configuration.
> > > > > > > > > > > > ---
> > > > > > > > > > > >  doc/media-api.txt | 27 +++++++++++++++++++++++++--
> > > > > > > > > > > >  1 file changed, 25 insertions(+), 2 deletions(-)
> > > > > > > > > > > >
> > > > > > > > > > > > diff --git a/doc/media-api.txt b/doc/media-api.txt
> > > > > > > > > > > > index b5ad2db12..af9485342 100644
> > > > > > > > > > > > --- a/doc/media-api.txt
> > > > > > > > > > > > +++ b/doc/media-api.txt
> > > > > > > > > > > > @@ -500,14 +500,23 @@ Properties        object Player [readonly]
> > > > > > > > > > > >  MediaEndpoint1 hierarchy
> > > > > > > > > > > >  ========================
> > > > > > > > > > > >
> > > > > > > > > > > > -Service                unique name
> > > > > > > > > > > > +Service                unique name (Server role)
> > > > > > > > > > > > +               org.bluez (Client role)
> > > > > > > > > > > >  Interface      org.bluez.MediaEndpoint1
> > > > > > > > > > > > -Object path    freely definable
> > > > > > > > > > > > +Object path    freely definable (Server role)
> > > > > > > > > > > > +               [variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/sepX
> > > > > > > > > > > > +               (Client role)
> > > > > > > > > > > >
> > > > > > > > > > > >  Methods                void SetConfiguration(object transport, dict properties)
> > > > > > > > > > > >
> > > > > > > > > > > >                         Set configuration for the transport.
> > > > > > > > > > > >
> > > > > > > > > > > > +                       For client role transport must be set with a server
> > > > > > > > > > > > +                       endpoint oject which will be configured and the
> > > > > > > > > > > > +                       properties must contain the following properties:
> > > > > > > > > > > > +
> > > > > > > > > > > > +                               array{byte} Capabilities
> > > > > > > > > > > > +
> > > > > > > > > > > >                 array{byte} SelectConfiguration(array{byte} capabilities)
> > > > > > > > > > > >
> > > > > > > > > > > >                         Select preferable configuration from the supported
> > > > > > > > > > > > @@ -532,6 +541,20 @@ Methods            void SetConfiguration(object transport, dict properties)
> > > > > > > > > > > >                         endpoint, because when this method gets called it has
> > > > > > > > > > > >                         already been unregistered.
> > > > > > > > > > > >
> > > > > > > > > > > > +Properties     string UUID [readonly, optional]:
> > > > > > > > > > > > +
> > > > > > > > > > > > +                       UUID of the profile which the endpoint is for.
> > > > > > > > > > > > +
> > > > > > > > > > > > +               byte Codec [readonly, optional]:
> > > > > > > > > > > > +
> > > > > > > > > > > > +                       Assigned number of codec that the endpoint implements.
> > > > > > > > > > > > +                       The values should match the profile specification which
> > > > > > > > > > > > +                       is indicated by the UUID.
> > > > > > > > > > > > +
> > > > > > > > > > > > +               array{byte} Capabilities [readonly, optional]:
> > > > > > > > > > > > +
> > > > > > > > > > > > +                       Capabilities blob, it is used as it is so the size and
> > > > > > > > > > > > +                       byte order must match.
> > > > > > > > > > > >
> > > > > > > > > > > >  MediaTransport1 hierarchy
> > > > > > > > > > > >  =========================
> > > > > > > > > > > > --
> > > > > > > > > > > > 2.17.2
> > > > > > > > > > >
> > > > > > > > > > > Can you try this set?
> > > > > > > > > >
> > > > > > > > > > Hi! In V3 you added only "a2dp: Add reverse discovery" patch right?
> > > > > > > > > > I tested my setup also with this patch and there is no difference,
> > > > > > > > > > pulseaudio is working fine :-)
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > > Applied.
> > > > > > > >
> > > > > > > > Hi! I have one bug report for these patches.
> > > > > > > >
> > > > > > > > When I manually disconnect A2DP profile, but let HFP active then all SEP
> > > > > > > > paths on D-Bus disappear.
> > > > > > > >
> > > > > > > >   qdbus --system org.bluez /org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX org.bluez.Device1.DisconnectProfile 0000110b-0000-1000-8000-00805f9b34fb
> > > > > > > >
> > > > > > > > So pulseaudio would still see bluetooth device as active (because HFP is
> > > > > > > > in use), but does not see any A2DP codec as all remote SEPs from DBus
> > > > > > > > were removed.
> > > > > > > >
> > > > > > > > It is possible to not remove remote SEPs when A2DP sink profile is
> > > > > > > > manually disconnected?
> > > > > > >
> > > > > > > Hi Luiz! Have you looked at above problem?
> > > > > >
> > > > > > Hi! This one problem is still there.
> > > > >
> > > > > This should have been fixed:
> > > > >
> > > > > https://git.kernel.org/pub/scm/bluetooth/bluez.git/commit/?id=9f7659a44601e043bdb6724b0ab4f3f59c46e9fe
> > > >
> > > > Hi! It is still not fixed. I have that commit applied (it is in master
> > > > branch), but SEPs still disappears from dbus after calling
> > > > DisconnectProfile 0000110b-0000-1000-8000-00805f9b34fb as described
> > > > above; even HFP/HSP is still active.
> > > >
> > > > Can you reproduce that problem?
> > >
> > > We remove the objects when we disconnect AVDTP, this is working as
> > > intended as we don't want to initiate the connection directly from the
> > > endpoint as those may have disappeared or changed to some other codec
> > > while disconnected.
> >
> > That is a bit problematic. Pulseaudio see device as active when either
> > A2DP or HFP/HSP profile is connected. It makes sense. But when A2DP is
> > disconnected then bluez remove SEP from dbus which says to pulseaudio
> > that all codecs (as they belongs to SEPs) are unsupported. Which leads
> > to situation that pulseaudio has no idea which codecs are supported nor
> > if A2DP is supported at all.
> 
> Usually, all audio profiles are connected simultaneously, we even have
> a policy plugin to enforce this. Also keep in mind that we never
> intend to PulseAudio to trigger connections, for that you use the
> Bluetooth system settings.

Look, I'm able to achieve state when A2DP is not connected and HFP/HSP
is. Only via public dbus API. So such thing is possible and it could be
available in the future in some program (command line or bluetooth gui).

And as this state is not only possible, but also valid then pulseaudio
needs to deal with it.

And as you wrote that pulseaudio should not trigger connection, how it
should know list of available codecs?

> > So if bluez remove all SEPs from dbus, how can pulseaudio again activate
> > A2DP connection with codec X? It is impossible as SEP endpoint exported
> > by dbus does not exist anymore.
> 
> It doesn't, if you want to reconnect that should be triggered via
> Device.Connect, the daemon will remember the last connected SEP and do
> the right thing, if the user wants to later overwrite the default it
> is free to do so by selecting a different SEP.

A2DP is connected, HSP is. Currently HSP audio output is used in
pulseaudio and user want to switch it to codec X. bluez has remembered
codec Y (but this information is not available to pulseaudio).

How should now pulseaudio activate A2DP with codec X?

> So, in short, it is a
> design choice not to support connecting directly from SEP, anyway in
> most cases that would not even be possible since the device should not
> be connected PA would not list any audio device for it.

If device is not connected then pulseaudio does not list audio device.

But if HSP is connected and A2DP not, then pulseaudio show that
bluetooth audio device.

-- 
Pali Rohár
pali.rohar@xxxxxxxxx

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux