summaryrefslogtreecommitdiff
path: root/bluetooth/audio/utils/aidl_session/BluetoothLeAudioCodecsProvider.h
diff options
context:
space:
mode:
authorshihchienc <shihchienc@google.com>2022-09-06 08:44:44 +0000
committershihchienc <shihchienc@google.com>2022-09-14 04:05:16 +0000
commitdb060b4f8f1ae2d3407b0f2eba9631466917d84d (patch)
tree483cfc750844e285d84e787c0fd977a2472770f4 /bluetooth/audio/utils/aidl_session/BluetoothLeAudioCodecsProvider.h
parent8e3480edfe9933306f82c1656deb8e6b7090273c (diff)
Expose different offload audio capabilities by project
The current LE audio offload capabilities is hardcode in the Bluetooth audio HAL. It has the limitation that all the project would expose the same capabilities. As the newer project comes, if the ADSP or the controller could handle more configuration with higher quality or higher bandwidth. It would impact older project may not work on it. So we plan the feature to make the le audio offload support to be more flexible. Bug: 238983662 Test: 1. atest VtsHalBluetoothAudioTargetTest 2. make sure offload capabilities can be supported with those devices having config XML file Change-Id: Id82581fdcd22e38108f17c7942bca997b53bab35 Merged-In: Id82581fdcd22e38108f17c7942bca997b53bab35 (cherry picked from commit 8ed901a977a9180b8edc79cd291be054c6e228b0)
Diffstat (limited to 'bluetooth/audio/utils/aidl_session/BluetoothLeAudioCodecsProvider.h')
-rw-r--r--bluetooth/audio/utils/aidl_session/BluetoothLeAudioCodecsProvider.h87
1 files changed, 87 insertions, 0 deletions
diff --git a/bluetooth/audio/utils/aidl_session/BluetoothLeAudioCodecsProvider.h b/bluetooth/audio/utils/aidl_session/BluetoothLeAudioCodecsProvider.h
new file mode 100644
index 0000000000..402235f0cd
--- /dev/null
+++ b/bluetooth/audio/utils/aidl_session/BluetoothLeAudioCodecsProvider.h
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include <aidl/android/hardware/bluetooth/audio/LeAudioCodecCapabilitiesSetting.h>
+#include <android-base/logging.h>
+
+#include <unordered_map>
+
+#include "aidl_android_hardware_bluetooth_audio_setting.h"
+
+namespace aidl {
+namespace android {
+namespace hardware {
+namespace bluetooth {
+namespace audio {
+
+class BluetoothLeAudioCodecsProvider {
+ public:
+ static std::vector<LeAudioCodecCapabilitiesSetting>
+ GetLeAudioCodecCapabilities();
+
+ private:
+ static inline std::unordered_map<std::string, setting::Configuration>
+ configuration_map_;
+ static inline std::unordered_map<std::string, setting::CodecConfiguration>
+ codec_configuration_map_;
+ static inline std::unordered_map<std::string, setting::StrategyConfiguration>
+ strategy_configuration_map_;
+
+ static std::vector<setting::Scenario> GetScenarios(
+ const std::optional<setting::LeAudioOffloadSetting>&
+ le_audio_offload_setting);
+ static void UpdateConfigurationsToMap(
+ const std::optional<setting::LeAudioOffloadSetting>&
+ le_audio_offload_setting);
+ static void UpdateCodecConfigurationsToMap(
+ const std::optional<setting::LeAudioOffloadSetting>&
+ le_audio_offload_setting);
+ static void UpdateStrategyConfigurationsToMap(
+ const std::optional<setting::LeAudioOffloadSetting>&
+ le_audio_offload_setting);
+
+ static std::vector<LeAudioCodecCapabilitiesSetting>
+ ComposeLeAudioCodecCapabilities(
+ const std::vector<setting::Scenario>& supported_scenarios);
+
+ static UnicastCapability GetUnicastCapability(
+ const std::string& coding_direction);
+ template <class T>
+ static inline UnicastCapability ComposeUnicastCapability(
+ const CodecType& codec_type, const AudioLocation& audio_location,
+ const uint8_t& device_cnt, const uint8_t& channel_count,
+ const T& capability);
+
+ static inline Lc3Capabilities ComposeLc3Capability(
+ const setting::CodecConfiguration& codec_configuration);
+
+ static inline AudioLocation GetAudioLocation(
+ const setting::AudioLocation& audio_location);
+ static inline CodecType GetCodecType(const setting::CodecType& codec_type);
+
+ static inline bool IsValidCodecConfiguration(
+ const setting::CodecConfiguration& codec_configuration);
+ static inline bool IsValidStrategyConfiguration(
+ const setting::StrategyConfiguration& strategy_configuration);
+};
+
+} // namespace audio
+} // namespace bluetooth
+} // namespace hardware
+} // namespace android
+} // namespace aidl