diff options
Diffstat (limited to 'bluetooth/audio/2.2/default/BluetoothAudioProvidersFactory.cpp')
-rw-r--r-- | bluetooth/audio/2.2/default/BluetoothAudioProvidersFactory.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/bluetooth/audio/2.2/default/BluetoothAudioProvidersFactory.cpp b/bluetooth/audio/2.2/default/BluetoothAudioProvidersFactory.cpp index 51ee422845..2fe31d5246 100644 --- a/bluetooth/audio/2.2/default/BluetoothAudioProvidersFactory.cpp +++ b/bluetooth/audio/2.2/default/BluetoothAudioProvidersFactory.cpp @@ -221,6 +221,47 @@ Return<void> BluetoothAudioProvidersFactory::getProviderCapabilities_2_1( return Void(); } +Return<void> BluetoothAudioProvidersFactory::getProviderCapabilities_2_2( + const V2_1::SessionType sessionType, + getProviderCapabilities_2_2_cb _hidl_cb) { + hidl_vec<V2_2::AudioCapabilities> audio_capabilities = + hidl_vec<V2_2::AudioCapabilities>(0); + if (sessionType == V2_1::SessionType::A2DP_HARDWARE_OFFLOAD_DATAPATH) { + std::vector<CodecCapabilities> db_codec_capabilities = + android::bluetooth::audio::GetOffloadCodecCapabilities(sessionType); + if (db_codec_capabilities.size()) { + audio_capabilities.resize(db_codec_capabilities.size()); + for (int i = 0; i < db_codec_capabilities.size(); ++i) { + audio_capabilities[i].codecCapabilities(db_codec_capabilities[i]); + } + } + } else if (sessionType == V2_1::SessionType:: + LE_AUDIO_HARDWARE_OFFLOAD_ENCODING_DATAPATH || + sessionType == V2_1::SessionType:: + LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH) { + std::vector<LeAudioCodecCapabilitiesPair> db_codec_capabilities = + android::bluetooth::audio::GetLeAudioOffloadCodecCapabilities( + sessionType); + if (db_codec_capabilities.size()) { + audio_capabilities.resize(db_codec_capabilities.size()); + for (int i = 0; i < db_codec_capabilities.size(); ++i) { + audio_capabilities[i].leAudioCapabilities(db_codec_capabilities[i]); + } + } + } else if (sessionType != V2_1::SessionType::UNKNOWN) { + std::vector<V2_1::PcmParameters> db_pcm_capabilities = + android::bluetooth::audio::GetSoftwarePcmCapabilities_2_1(); + if (db_pcm_capabilities.size() == 1) { + audio_capabilities.resize(1); + audio_capabilities[0].pcmCapabilities(db_pcm_capabilities[0]); + } + } + LOG(INFO) << __func__ << " - SessionType=" << toString(sessionType) + << " supports " << audio_capabilities.size() << " codecs"; + _hidl_cb(audio_capabilities); + return Void(); +} + IBluetoothAudioProvidersFactory* HIDL_FETCH_IBluetoothAudioProvidersFactory( const char* /* name */) { return new BluetoothAudioProvidersFactory(); |