notes/pulseaudio.md

83 lines
2.6 KiB
Markdown

---
title: Projects
---
### AAC observations
The following are the observations from the Wireshark capture traces regarding the issue observed while using AAC with SRS-XB33.
1. Android and SRS-XB33
- Remote sends `GetAllCapabilities` command and gets `SBC`, `MPEG-2/4 AAC` and `LDAC` as supported in the response.
- In case of `AAC`, the following flags are set on Android side
- MPEG-2 AAC LC
- Sampling rate of 44.1 KHz
- VBR supported
- 2 channels
- The `SetConfiguration` gets send with the following parameters set
- MPEG-2 AAC LC
- Sampling rate of 44.1 KHz
- VBR supported
- 2 channels
2. PulseAudio and SRS-XB33
1. Initial Connection
- The device sends a `Discover` request, followed by `GetAllCapabilities` and then `SetConfiguration`.
- For the `GetAllCapabilities`, `MPEG-2,4 AAC` and `SBC` are returned by bluez.
- The `GetAllCapabilities` command, seems to be send twice from the device and in both cases return the exact same capabilities. This happens for both `AAC` and `SBC`.
- The `SetConfiguration` command send is send by SRS-XB33 and has the following parameters set
- MPEG-4 AAC LC
- Sampling rate of 48 KHz
- 2 channels
- VBR not supported
2. Reconnection
In the reconnection case, the `SetConfiguration` command has the following parameters set.
- Sampling rate of 44.1 KHz
- MPEG-4 AAC LC
- 2 channels
- VBR not supported
### Codec switching
- Currently the following profiles exist
1. headset<sub>audiogateway</sub>
2. headset<sub>headunit</sub>
3. a2dp<sub>source</sub>
4. a2dp<sub>sink</sub>
- For backchannel, two additional profiles are needed
1. a2dp<sub>sourcewithbackchannel</sub>
2. a2dp<sub>sinkwithbackchannel</sub>
- Each profile has it's own codec. However, one problem to solve is, one codec for one direction and a different codec for the other direction. For eg. aptX-LL uses aptX for playback and SBC for recording. How to solve this? Is introducing the backchannel profiles, be sufficient to take care of this?
### Under the hood
- https://gavv.github.io/articles/pulseaudio-under-the-hood
### Bluetooth testing
``` bash
./simple-endpoint 2C:DB:07:58:F2:F9 ldacsource
./test-device connect 4C:BC:98:80:01:9B "0000110b-0000-1000-8000-00805f9b34fb"
env GST_DEBUG=3 gst-launch-1.0 audiotestsrc ! ldacenc ! a2dpsink transport=/org/bluez/hci0/dev_4C_BC_98_80_01_9B/sep10/fd0
```
## Module loop back
- https://endless.ersoft.org/pulseaudio-loopback/