[pulseaudio-discuss] SBC XQ for PA 13.0

Hyperion h1p8r10n at yandex.com
Tue Sep 17 07:34:34 UTC 2019


btw here's the updated V12-12 patch in Pali's latest rel95 patchset that applies to PA 13.0.

 http://download.zenwalk.org/x86_64/testing/v12-12-13-zen-bluetooth-Implement-A2DP-codec-switching-and-backchannel-support-.patch

JP


16.09.2019, 09:32, "Hyperion" <h1p8r10n at yandex.com>:
> Hi,
>
> Following what has already be done in some Android derivatives, here's a simple patch that extend SBP bitpool negociation to XQ quality.
>
> According to :
> --> http://soundexpert.org/articles/-/blogs/audio-quality-of-sbc-xq-bluetooth-audio-codec
> --> https://lineageos.org/engineering/Bluetooth-SBC-XQ/ ,
> --> and confirmed by my own experimentation on more than 10 different devices,
>
> here are the features of the (very simple and non intrusive) patch :
> - allow to use bitpool 76 on devices that support it, aka SBC XQ
> - harmless for devices limited to bitpool 53
> - deprecates the need for APTX & APTX HD support, which are not better than SBC XQ, are not Open Source, and less supported by devices
>
> This patch will be superseded by multi-profiles Pali Rohar A2DP stack implementation, when it's ready for production. Thanks to Pali for the help testing many codec parameters.
>
> Let me know if I have to clone the git to push my patch, or if a regular PA dev could do it.
>
> All the best
> JP
>
> diff -rNaud pulseaudio-13.0/src/modules/bluetooth/a2dp-codec-sbc.c pulseaudio-13.0-new/src/modules/bluetooth/a2dp-codec-sbc.c
> --- pulseaudio-13.0/src/modules/bluetooth/a2dp-codec-sbc.c 2019-09-13 15:20:03.000000000 +0200
> +++ pulseaudio-13.0-new/src/modules/bluetooth/a2dp-codec-sbc.c 2019-09-16 08:57:50.363122019 +0200
> @@ -290,10 +290,10 @@
>          return 0;
>      }
>
> - if (capabilities->allocation_method & SBC_ALLOCATION_LOUDNESS)
> - config->allocation_method = SBC_ALLOCATION_LOUDNESS;
> - else if (capabilities->allocation_method & SBC_ALLOCATION_SNR)
> + if (capabilities->allocation_method & SBC_ALLOCATION_SNR)
>          config->allocation_method = SBC_ALLOCATION_SNR;
> + else if (capabilities->allocation_method & SBC_ALLOCATION_LOUDNESS)
> + config->allocation_method = SBC_ALLOCATION_LOUDNESS;
>      else {
>          pa_log_error("No supported allocation method");
>          return 0;
> diff -rNaud pulseaudio-13.0/src/modules/bluetooth/a2dp-codecs.h pulseaudio-13.0-new/src/modules/bluetooth/a2dp-codecs.h
> --- pulseaudio-13.0/src/modules/bluetooth/a2dp-codecs.h 2019-09-13 15:20:03.000000000 +0200
> +++ pulseaudio-13.0-new/src/modules/bluetooth/a2dp-codecs.h 2019-09-16 08:44:20.382086305 +0200
> @@ -61,14 +61,11 @@
>   * Allocation method = Loudness
>   * Subbands = 8
>   */
> -#define SBC_BITPOOL_MQ_MONO_44100 19
> -#define SBC_BITPOOL_MQ_MONO_48000 18
> -#define SBC_BITPOOL_MQ_JOINT_STEREO_44100 35
> -#define SBC_BITPOOL_MQ_JOINT_STEREO_48000 33
> -#define SBC_BITPOOL_HQ_MONO_44100 31
> -#define SBC_BITPOOL_HQ_MONO_48000 29
> -#define SBC_BITPOOL_HQ_JOINT_STEREO_44100 53
> -#define SBC_BITPOOL_HQ_JOINT_STEREO_48000 51
> +
> +#define SBC_BITPOOL_HQ_MONO_44100 38
> +#define SBC_BITPOOL_HQ_MONO_48000 38
> +#define SBC_BITPOOL_HQ_JOINT_STEREO_44100 76
> +#define SBC_BITPOOL_HQ_JOINT_STEREO_48000 76
>
>  #define MPEG_CHANNEL_MODE_MONO (1 << 3)
>  #define MPEG_CHANNEL_MODE_DUAL_CHANNEL (1 << 2)
>
> _______________________________________________
> pulseaudio-discuss mailing list
> pulseaudio-discuss at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss


More information about the pulseaudio-discuss mailing list