summaryrefslogtreecommitdiff
path: root/system/audio_hal_interface/aidl/client_interface.cc
diff options
context:
space:
mode:
Diffstat (limited to 'system/audio_hal_interface/aidl/client_interface.cc')
-rw-r--r--system/audio_hal_interface/aidl/client_interface.cc25
1 files changed, 23 insertions, 2 deletions
diff --git a/system/audio_hal_interface/aidl/client_interface.cc b/system/audio_hal_interface/aidl/client_interface.cc
index 9626ecdb40..6bf3bd7db2 100644
--- a/system/audio_hal_interface/aidl/client_interface.cc
+++ b/system/audio_hal_interface/aidl/client_interface.cc
@@ -232,6 +232,24 @@ bool BluetoothAudioClientInterface::UpdateAudioConfig(
return true;
}
+bool BluetoothAudioClientInterface::SetLowLatencyModeAllowed(bool allowed) {
+ is_low_latency_allowed_ = allowed;
+ if (provider_ == nullptr) {
+ LOG(INFO) << __func__
+ << ": BluetoothAudioHal nullptr";
+ return false;
+ }
+
+ auto aidl_retval = provider_->setLowLatencyModeAllowed(allowed);
+ if (!aidl_retval.isOk()) {
+ LOG(ERROR) << __func__ << ": BluetoothAudioHal failure: "
+ << aidl_retval.getDescription();
+ return false;
+ }
+ return true;
+}
+
+
int BluetoothAudioClientInterface::StartSession() {
std::lock_guard<std::mutex> guard(internal_mutex_);
if (provider_ == nullptr) {
@@ -249,9 +267,12 @@ int BluetoothAudioClientInterface::StartSession() {
std::unique_ptr<DataMQ> data_mq;
DataMQDesc mq_desc;
-
+ std::vector<LatencyMode> latency_modes = {LatencyMode::FREE};
+ if (is_low_latency_allowed_) {
+ latency_modes.push_back(LatencyMode::LOW_LATENCY);
+ }
auto aidl_retval = provider_->startSession(
- stack_if, transport_->GetAudioConfiguration(), &mq_desc);
+ stack_if, transport_->GetAudioConfiguration(), latency_modes, &mq_desc);
if (!aidl_retval.isOk()) {
LOG(FATAL) << __func__ << ": BluetoothAudioHal failure: "
<< aidl_retval.getDescription();