[pulseaudio-discuss] [PATCH] bluetooth: Add support for automatic switch between hsp and a2dp profiles

Arun Raghavan arun at accosted.net
Fri Sep 26 02:39:50 PDT 2014


On 26 September 2014 14:59, Pali Rohár <pali.rohar at gmail.com> wrote:
> On Friday 26 September 2014 11:00:39 Arun Raghavan wrote:
>> On 26 Sep 2014 14:19, "Pali Rohár" <pali.rohar at gmail.com>
> wrote:
>> > On Friday 26 September 2014 06:55:38 Arun Raghavan wrote:
>> > > On 26 September 2014 03:06, Pali Rohár
>> > > <pali.rohar at gmail.com>
>> >
>> > wrote:
>> > > > On Wednesday 24 September 2014 19:08:55 Pali Rohár wrote:
>> > > >> With this patch module-bluetooth-policy automatically
>> > > >> switch from a2dp profile to hsp profile if some
>> > > >> application want to start recording.
>> > > >>
>> > > >> By default a2dp profile is used for listening music,
>> > > >> but for VOIP calls is needed profile with microphone
>> > > >> support (hsp). So this patch will switch to hsp
>> > > >> profile if some application want to use microphone and
>> > > >> after it release it profile is switched back to a2dp.
>> > > >> So this patch allows to use bluetooth microphone
>> > > >> automatically without need of user interaction.
>> > > >>
>> > > >> Signed-off-by: Pali Rohár <pali.rohar at gmail.com>
>> > > >> ---
>> > > >
>> > > > And with this patch a2dp profile could be preferred and
>> > > > has higher priority then hsp. Because a2dp has better
>> > > > audio quality and when recording is needed my patch for
>> > > > module-bluetooth-policy will switch to hsp. What do you
>> > > > think about it?
>> > >
>> > > I'm not in favour of an exception-list-based approach (too
>> > > much of a moving target). I'd written something similar in
>> > > the past based on the media role. I'd prefer something
>> > > like this since it allows us to take action based on what
>> > > the stream is meant to be doing, rather than having a
>> > > blanket policy that may or may not make sense.
>> > >
>> > > http://cgit.freedesktop.org/~arun/pulseaudio/tree/src/modu
>> > > les/ module-profile-switcher.c?h=bluetooth
>> > >
>> > > The intention when we last discussed on the list wast to
>> > > integrate this into module-bluetooth-policy (the patch
>> > > predates merge of m-b-p).
>> > >
>> > > -- Arun
>> >
>> > This approach depends on that output stream set by
>> > application will have correct PA_PROP_MEDIA_ROLE. So
>> > basically will not work with any existing application. So
>> > this is useless for me and for other people too.
>>
>> Why not fix said applications? Exposing this metadata
>> correctly allows several things, such a automatic routing,
>> echo cancellation/noise suppression, AGC.
>>
>> The fix can be made via code or starting the app with an
>> environment variable set.
>>
>> -- Arun
>
> Backward compatibility. There still will be non trivial set of
> applications without PA_PROP_MEDIA_ROLE. Plus there are more
> closed source applications which you cannot modify. And starting
> application with some special ENV does not change anything. Still

Does not change anything? You can set a property on all streams
created by an app using the environment variable.

> is needed user interaction and it is easier to switch a2dp
> profile to hsp as opening xterm, setting ENV and then starting
> application. Plus applications with using pulse-alsa wrapper will
> never set that PA_PROP_MEDIA_ROLE.

The solution above applies to the ALSA pulse plugin applications too.

> So I think exception list is only possible solution without
> modifying existing applications.
>
> Or do you want to modify *ALL* existing applications which
> exists?

All VoIP applications, yes.

As I mentioned before, there is good reason for applications to
provide metadata for the types of streams they are creating, and I'd
rather have a proper solution in place than an overreaching heuristic.

-- Arun


More information about the pulseaudio-discuss mailing list