mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-01-27 14:23:34 +00:00
interfaces: bluetooth: Restore LC3 codec support for A2DP
* LC3 codec support removed in commit "Add Opus to BT Audio HAL and update version to V2"
* Add back support for it to properly handle the case
that device only supports LC3 and etc. but not OPUS.
Ref:
a2587da5b2
Change-Id: If779b175c95698b096cc38ece54cddd659b338f7
Signed-off-by: someone5678 <someone5678@users.noreply.github.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
This commit is contained in:
@@ -85,6 +85,11 @@ static const AptxCapabilities kDefaultOffloadAptxHdCapability = {
|
||||
.bitsPerSample = {16, 24},
|
||||
};
|
||||
|
||||
static const Lc3Capabilities kDefaultA2dpOffloadLc3Capability = {
|
||||
.samplingFrequencyHz = {44100, 48000},
|
||||
.frameDurationUs = {7500, 10000},
|
||||
};
|
||||
|
||||
static const OpusCapabilities kDefaultOffloadOpusCapability = {
|
||||
.samplingFrequencyHz = {48000},
|
||||
.frameDurationUs = {10000, 20000},
|
||||
@@ -97,6 +102,7 @@ const std::vector<CodecCapabilities> kDefaultOffloadA2dpCodecCapabilities = {
|
||||
{.codecType = CodecType::LDAC, .capabilities = {}},
|
||||
{.codecType = CodecType::APTX, .capabilities = {}},
|
||||
{.codecType = CodecType::APTX_HD, .capabilities = {}},
|
||||
{.codecType = CodecType::LC3, .capabilities = {}},
|
||||
{.codecType = CodecType::OPUS, .capabilities = {}}};
|
||||
|
||||
std::vector<LeAudioCodecCapabilitiesSetting> kDefaultOffloadLeAudioCapabilities;
|
||||
@@ -243,6 +249,30 @@ bool BluetoothAudioCodecs::IsOffloadAptxHdConfigurationValid(
|
||||
return false;
|
||||
}
|
||||
|
||||
bool BluetoothAudioCodecs::IsOffloadLc3ConfigurationValid(
|
||||
const CodecConfiguration::CodecSpecific& codec_specific) {
|
||||
if (codec_specific.getTag() !=
|
||||
CodecConfiguration::CodecSpecific::lc3Config) {
|
||||
LOG(WARNING) << __func__
|
||||
<< ": Invalid CodecSpecific=" << codec_specific.toString();
|
||||
return false;
|
||||
}
|
||||
const Lc3Configuration lc3_data =
|
||||
codec_specific.get<CodecConfiguration::CodecSpecific::lc3Config>();
|
||||
|
||||
if (ContainedInVector(kDefaultA2dpOffloadLc3Capability.samplingFrequencyHz,
|
||||
lc3_data.samplingFrequencyHz) &&
|
||||
ContainedInVector(kDefaultA2dpOffloadLc3Capability.frameDurationUs,
|
||||
lc3_data.frameDurationUs) &&
|
||||
ContainedInVector(kDefaultA2dpOffloadLc3Capability.channelMode,
|
||||
lc3_data.channelMode)) {
|
||||
return true;
|
||||
}
|
||||
LOG(WARNING) << __func__
|
||||
<< ": Unsupported CodecSpecific=" << codec_specific.toString();
|
||||
return false;
|
||||
}
|
||||
|
||||
bool BluetoothAudioCodecs::IsOffloadOpusConfigurationValid(
|
||||
const CodecConfiguration::CodecSpecific& codec_specific) {
|
||||
if (codec_specific.getTag() !=
|
||||
@@ -314,9 +344,13 @@ BluetoothAudioCodecs::GetA2dpOffloadCodecCapabilities(
|
||||
.set<CodecCapabilities::Capabilities::opusCapabilities>(
|
||||
kDefaultOffloadOpusCapability);
|
||||
break;
|
||||
case CodecType::LC3:
|
||||
codec_capability.capabilities
|
||||
.set<CodecCapabilities::Capabilities::lc3Capabilities>(
|
||||
kDefaultA2dpOffloadLc3Capability);
|
||||
break;
|
||||
case CodecType::UNKNOWN:
|
||||
case CodecType::VENDOR:
|
||||
case CodecType::LC3:
|
||||
case CodecType::APTX_ADAPTIVE:
|
||||
case CodecType::APTX_ADAPTIVE_LE:
|
||||
case CodecType::APTX_ADAPTIVE_LEX:
|
||||
@@ -379,6 +413,11 @@ bool BluetoothAudioCodecs::IsOffloadCodecConfigurationValid(
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case CodecType::LC3:
|
||||
if (IsOffloadLc3ConfigurationValid(codec_specific)) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case CodecType::OPUS:
|
||||
if (IsOffloadOpusConfigurationValid(codec_specific)) {
|
||||
return true;
|
||||
@@ -387,7 +426,6 @@ bool BluetoothAudioCodecs::IsOffloadCodecConfigurationValid(
|
||||
case CodecType::APTX_ADAPTIVE:
|
||||
case CodecType::APTX_ADAPTIVE_LE:
|
||||
case CodecType::APTX_ADAPTIVE_LEX:
|
||||
case CodecType::LC3:
|
||||
case CodecType::UNKNOWN:
|
||||
case CodecType::VENDOR:
|
||||
break;
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
|
||||
#include <aidl/android/hardware/bluetooth/audio/CodecCapabilities.h>
|
||||
#include <aidl/android/hardware/bluetooth/audio/CodecConfiguration.h>
|
||||
#include <aidl/android/hardware/bluetooth/audio/Lc3Configuration.h>
|
||||
#include <aidl/android/hardware/bluetooth/audio/CodecInfo.h>
|
||||
#include <aidl/android/hardware/bluetooth/audio/IBluetoothAudioProvider.h>
|
||||
#include <aidl/android/hardware/bluetooth/audio/LeAudioCodecCapabilitiesSetting.h>
|
||||
@@ -80,6 +81,8 @@ class BluetoothAudioCodecs {
|
||||
const CodecConfiguration::CodecSpecific& codec_specific);
|
||||
static bool IsOffloadAptxHdConfigurationValid(
|
||||
const CodecConfiguration::CodecSpecific& codec_specific);
|
||||
static bool IsOffloadLc3ConfigurationValid(
|
||||
const CodecConfiguration::CodecSpecific& codec_specific);
|
||||
static bool IsOffloadOpusConfigurationValid(
|
||||
const CodecConfiguration::CodecSpecific& codec_specific);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user