131

GitHub - EHfive/pulseaudio-modules-bt: Adds Sony LDAC, aptX, aptX HD, AAC codecs...

 5 years ago
source link: https://github.com/EHfive/pulseaudio-modules-bt
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

README.md

pulseaudio-modules-bt

this repo is a fork of pulseaudio bluetooth modules

and adds LDAC, APTX, APTX-HD, AAC support

Added Codecs

Codec Encoding(source role) Decoding(sink role) Sample format(s) Sample frequnecies AAC ✔ ✔ s16 8, 11.025, 12,16, 22.05, 24, 32, 44.1, 48, 64, 88.2, 96 khz APTX ✔ ✔ s16 16, 32, 44.1, 48 khz APTX HD ✔ ✔ s24

LDAC ✔ ✘ s16,s24,s32,f32 44.1, 48, 88.2, 96 khz

APTX/APTX_HD sample format fixed to s32 in PA. (ffmpeg do the sample format transformation)

Usage

Packages

wiki/Packages

also check issue#3

Configure modules

See bottom.

General Installation

Make Dependencies

  • pulseaudio,libpulse>=11.59.1
  • bluez-libs/libbluetooth~=5.0
  • libdbus
  • ffmpeg(libavcodec>=58, libavutil>=56) >= 4.0
  • libsbc
  • libfdk-aac>=0.1.5
  • libtool
  • cmake
  • pkg-config

Runtime Dependencies

  • pulseaudio
  • bluez
  • dbus
  • sbc
  • libfdk-aac
  • [Optional] ffmpeg(libavcodec.so, libavutil.so) --- APTX, APTX-HD support
  • [Optional] ldacBT/libldac (libldacBT_enc.so, libldacBT_abr.so) --- LDAC encoding support, LDAC ABR support

Note: CMakeLists.txt check if ldacBT installed; If not, it will build libldac and installing libldac to PA modules dir. See cmake option FORCE_BUILD_LDAC or FORCE_NOT_BUILD_LDAC .

Build

backup original pulseaudio bt modules

MODDIR=`pkg-config --variable=modlibexecdir libpulse`

sudo find $MODDIR -regex ".*\(bluez5\|bluetooth\).*\.so" -exec cp {} {}.bak \;

pull sources

git clone https://github.com/EHfive/pulseaudio-modules-bt.git
cd pulseaudio-modules-bt
git submodule update --init

install

A. build for PulseAudio releases (e.g., v12.0, v12.2, etc.)

git -C pa/ checkout v`pkg-config libpulse --modversion|sed 's/[^0-9.]*\([0-9.]*\).*/\1/'`

mkdir build && cd build
cmake ..
make
sudo make install

B. or build for PulseAudio git master

mkdir build && cd build
cmake -DFORCE_LARGEST_PA_VERSION=ON ..
make
sudo make install

Load Modules

pulseaudio -k

# if pulseaudio not restart automatically, run
pulseaudio --start

Connect device

Then connect your bluetooth device and switch audio profile to 'A2DP Sink';

If there is only profile 'HSP/HFP' and 'off', disconnect and reconnect your device.

The issue has been fixed in latest bluez git master, see https://github.com/EHfive/pulseaudio-modules-bt/issues/14#issuecomment-462039332.

As an alternative, you can fix it with this udev script.

Run pactl list | grep a2dp_codec to see which codec device are using.

Module Aruguments

module-bluez5-discover arg:a2dp_config

Encoders configurations

Key Value Desc Default ldac_eqmid hq LDAC High Quality auto

sq LDAC Standard Quality

mq LDAC Mobile use Quality

auto /abr LDAC Adaptive Bit Rate

ldac_fmt s16 16-bit signed (little endian) auto

s24 24-bit signed

s32 32-bit signed

f32 32-bit float

auto Ref default-sample-format

aac_bitrate_mode [1, 5] Variable Bitrate (VBR) 5

0 Constant Bitrate (CBR)

aac_afterburner (which was "aac_after_buffer" before 359ab0 <on/off> Enable/Disable AAC encoder afterburner feature off aac_fmt s16 16-bit signed (little endian) auto

s32 32-bit signed

auto Ref default-sample-format

Configure

edit /etc/pulse/default.pa

append arguments to 'load-module module-bluetooth-discover'

(module-bluetooth-discover pass all arguments to module-bluez5-discover)

# LDAC Standard Quality
load-module module-bluetooth-discover a2dp_config="ldac_eqmid=sq"

# LDAC High Quality; Force LDAC/PA PCM sample format as Float32LE
#load-module module-bluetooth-discover a2dp_config="ldac_eqmid=hq ldac_fmt=f32"

equivalent to commands below if you do not use 'module-bluetooth-discover'

load-module module-bluez5-discover a2dp_config="ldac_eqmid=sq"

#load-module module-bluez5-discover a2dp_config="ldac_eqmid=hq ldac_fmt=f32"

Others

see Wiki

TODO

add ldac abr (Adaptive Bit Rate) supprot

add APTX , APTX HD Codec support using ffmpeg

add AAC support using Fraunhofer FDK AAC codec library

add codec switching support using latest blueZ's experimental feature


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK