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]

 



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.

> 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. 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.


-- 
Luiz Augusto von Dentz




[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