DivestOS/Patches/LineageOS-17.1/android_packages_apps_Bluetooth/272652.patch
Tad b5bc269743
SBC dualchannel picks
Signed-off-by: Tad <tad@spotco.us>
2022-12-18 21:47:22 -05:00

49 lines
2.6 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: ValdikSS <iam@valdikss.org.ru>
Date: Mon, 10 Sep 2018 02:02:50 +0300
Subject: [PATCH] SBC Dual Channel (SBC HD Audio) support
"HD Audio" checkbox is not checked for SBC by default.
Change-Id: Id45c48aeaa2eb86f3dffa0cc825d1e09f1c00187
---
src/com/android/bluetooth/a2dp/A2dpCodecConfig.java | 8 ++++++++
src/com/android/bluetooth/a2dp/A2dpService.java | 5 ++++-
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/src/com/android/bluetooth/a2dp/A2dpCodecConfig.java b/src/com/android/bluetooth/a2dp/A2dpCodecConfig.java
index 8127e766b..890f4c188 100644
--- a/src/com/android/bluetooth/a2dp/A2dpCodecConfig.java
+++ b/src/com/android/bluetooth/a2dp/A2dpCodecConfig.java
@@ -109,6 +109,14 @@ class A2dpCodecConfig {
BluetoothCodecConfig codecConfig = codecConfigArray[i];
if (!codecConfig.isMandatoryCodec()) {
codecConfigArray[i] = null;
+ } else {
+ // Rebuild SBC selectable codec with Dual Channel (SBC HD audio)
+ codecConfigArray[i] = new BluetoothCodecConfig(
+ BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC, mA2dpSourceCodecPrioritySbc,
+ BluetoothCodecConfig.SAMPLE_RATE_NONE,
+ BluetoothCodecConfig.BITS_PER_SAMPLE_NONE,
+ BluetoothCodecConfig.CHANNEL_MODE_DUAL_CHANNEL, 0 /* codecSpecific1 */,
+ 0 /* codecSpecific2 */, 0 /* codecSpecific3 */, 0 /* codecSpecific4 */);
}
}
diff --git a/src/com/android/bluetooth/a2dp/A2dpService.java b/src/com/android/bluetooth/a2dp/A2dpService.java
index f9d0501c2..18a00646a 100644
--- a/src/com/android/bluetooth/a2dp/A2dpService.java
+++ b/src/com/android/bluetooth/a2dp/A2dpService.java
@@ -1039,7 +1039,10 @@ public class A2dpService extends ProfileService {
BluetoothCodecStatus codecStatus = sm.getCodecStatus();
if (codecStatus != null) {
for (BluetoothCodecConfig config : codecStatus.getCodecsSelectableCapabilities()) {
- if (config.isMandatoryCodec()) {
+ boolean isMandatoryCodecWithDualChannel = (config.isMandatoryCodec()
+ && (config.getChannelMode() & config.CHANNEL_MODE_DUAL_CHANNEL)
+ == config.CHANNEL_MODE_DUAL_CHANNEL);
+ if (config.isMandatoryCodec() || !isMandatoryCodecWithDualChannel) {
hasMandatoryCodec = true;
} else {
supportsOptional = true;