diff options
author | Omer Osman <omerosman@google.com> | 2022-05-01 03:54:11 +0000 |
---|---|---|
committer | Omer Osman <omerosman@google.com> | 2022-05-12 05:56:08 +0000 |
commit | a2587da5b2cc401f522fb9d3652b9ac42fa4fa15 (patch) | |
tree | d14fde01948039fcdc2ad36512045983e6400b79 /bluetooth/audio/utils/aidl_session/BluetoothAudioCodecs.cpp | |
parent | dc48405431b431d01a0d8aa8db3f363feb54e9fe (diff) |
Add Opus to BT Audio HAL and update version to V2
This CL adds Opus as a supported A2DP codec to the BT Audio HAL and
updates HAL compatibility matrix.
Bug: 226441860
Test: A2DP sink device using bds-dev
Change-Id: I21249e3e7e76412af7ed62a3fc9ec133434cf963
Diffstat (limited to 'bluetooth/audio/utils/aidl_session/BluetoothAudioCodecs.cpp')
-rw-r--r-- | bluetooth/audio/utils/aidl_session/BluetoothAudioCodecs.cpp | 46 |
1 files changed, 26 insertions, 20 deletions
diff --git a/bluetooth/audio/utils/aidl_session/BluetoothAudioCodecs.cpp b/bluetooth/audio/utils/aidl_session/BluetoothAudioCodecs.cpp index f3ca279867..7debfab73f 100644 --- a/bluetooth/audio/utils/aidl_session/BluetoothAudioCodecs.cpp +++ b/bluetooth/audio/utils/aidl_session/BluetoothAudioCodecs.cpp @@ -26,6 +26,8 @@ #include <aidl/android/hardware/bluetooth/audio/LdacChannelMode.h> #include <aidl/android/hardware/bluetooth/audio/LdacQualityIndex.h> #include <aidl/android/hardware/bluetooth/audio/LeAudioConfiguration.h> +#include <aidl/android/hardware/bluetooth/audio/OpusCapabilities.h> +#include <aidl/android/hardware/bluetooth/audio/OpusConfiguration.h> #include <aidl/android/hardware/bluetooth/audio/SbcCapabilities.h> #include <aidl/android/hardware/bluetooth/audio/SbcChannelMode.h> #include <android-base/logging.h> @@ -78,9 +80,9 @@ static const AptxCapabilities kDefaultOffloadAptxHdCapability = { .bitsPerSample = {24}, }; -static const Lc3Capabilities kDefaultA2dpOffloadLc3Capability = { - .samplingFrequencyHz = {44100, 48000}, - .frameDurationUs = {7500, 10000}, +static const OpusCapabilities kDefaultOffloadOpusCapability = { + .samplingFrequencyHz = {48000}, + .frameDurationUs = {10000, 20000}, .channelMode = {ChannelMode::MONO, ChannelMode::STEREO}, }; @@ -90,7 +92,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; @@ -294,22 +296,24 @@ bool BluetoothAudioCodecs::IsOffloadAptxHdConfigurationValid( return false; } -bool BluetoothAudioCodecs::IsOffloadLc3ConfigurationValid( +bool BluetoothAudioCodecs::IsOffloadOpusConfigurationValid( const CodecConfiguration::CodecSpecific& codec_specific) { - if (codec_specific.getTag() != CodecConfiguration::CodecSpecific::lc3Config) { + if (codec_specific.getTag() != + CodecConfiguration::CodecSpecific::opusConfig) { 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)) { + std::optional<OpusConfiguration> opus_data = + codec_specific.get<CodecConfiguration::CodecSpecific::opusConfig>(); + + if (opus_data.has_value() && + ContainedInVector(kDefaultOffloadOpusCapability.samplingFrequencyHz, + opus_data->samplingFrequencyHz) && + ContainedInVector(kDefaultOffloadOpusCapability.frameDurationUs, + opus_data->frameDurationUs) && + ContainedInVector(kDefaultOffloadOpusCapability.channelMode, + opus_data->channelMode)) { return true; } LOG(WARNING) << __func__ @@ -371,13 +375,14 @@ BluetoothAudioCodecs::GetA2dpOffloadCodecCapabilities( .set<CodecCapabilities::Capabilities::aptxCapabilities>( kDefaultOffloadAptxHdCapability); break; - case CodecType::LC3: + case CodecType::OPUS: codec_capability.capabilities - .set<CodecCapabilities::Capabilities::lc3Capabilities>( - kDefaultA2dpOffloadLc3Capability); + .set<CodecCapabilities::Capabilities::opusCapabilities>( + kDefaultOffloadOpusCapability); break; case CodecType::UNKNOWN: case CodecType::VENDOR: + case CodecType::LC3: case CodecType::APTX_ADAPTIVE: break; } @@ -438,12 +443,13 @@ bool BluetoothAudioCodecs::IsOffloadCodecConfigurationValid( return true; } break; - case CodecType::LC3: - if (IsOffloadLc3ConfigurationValid(codec_specific)) { + case CodecType::OPUS: + if (IsOffloadOpusConfigurationValid(codec_specific)) { return true; } break; case CodecType::APTX_ADAPTIVE: + case CodecType::LC3: case CodecType::UNKNOWN: case CodecType::VENDOR: break; |