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 Sat, Apr 20, 2019 at 10:01 AM Pali Rohár <pali.rohar@xxxxxxxxx> wrote:
>
> 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?

User just have to connect A2DP, Bluetooth settings should know it is
not connected, it is a user action after all.

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

User has to connect A2DP and then he has to option to switch to
whatever codec that has been discovered, as I said this is a design
choice, we don't want to duplicate controls.

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