libaudiohal: implement supportsBluetoothVariableLatency for HIDL
Implement supportsBluetoothVariableLatency for HIDL by way of
getParameters API.
Bug: 287695426
Test: verify that low latency mode is requested when TalkBack is playing
Change-Id: Ibacbdf6cefbcb96b6ac3cfd82b6d26a0e36c8a08
Merged-In: Ibacbdf6cefbcb96b6ac3cfd82b6d26a0e36c8a08
(cherry picked from commit 321b5c9d45a1d15bb289dcd139e43287185dbd36)
diff --git a/media/libaudiohal/impl/DeviceHalAidl.cpp b/media/libaudiohal/impl/DeviceHalAidl.cpp
index b18e64b..72fe32b 100644
--- a/media/libaudiohal/impl/DeviceHalAidl.cpp
+++ b/media/libaudiohal/impl/DeviceHalAidl.cpp
@@ -1010,7 +1010,7 @@
return mModule->dump(fd, Args(args).args(), args.size());
}
-int32_t DeviceHalAidl::supportsBluetoothVariableLatency(bool* supports) {
+status_t DeviceHalAidl::supportsBluetoothVariableLatency(bool* supports) {
TIME_CHECK();
if (!mModule) return NO_INIT;
if (supports == nullptr) {
diff --git a/media/libaudiohal/impl/DeviceHalAidl.h b/media/libaudiohal/impl/DeviceHalAidl.h
index 20cf88c..6f45f1f 100644
--- a/media/libaudiohal/impl/DeviceHalAidl.h
+++ b/media/libaudiohal/impl/DeviceHalAidl.h
@@ -165,7 +165,7 @@
error::Result<audio_hw_sync_t> getHwAvSync() override;
- int32_t supportsBluetoothVariableLatency(bool* supports __unused) override;
+ status_t supportsBluetoothVariableLatency(bool* supports __unused) override;
status_t getSoundDoseInterface(const std::string& module,
::ndk::SpAIBinder* soundDoseBinder) override;
diff --git a/media/libaudiohal/impl/DeviceHalHidl.cpp b/media/libaudiohal/impl/DeviceHalHidl.cpp
index f96d419..0d71fd3 100644
--- a/media/libaudiohal/impl/DeviceHalHidl.cpp
+++ b/media/libaudiohal/impl/DeviceHalHidl.cpp
@@ -684,4 +684,26 @@
}
#endif
+status_t DeviceHalHidl::supportsBluetoothVariableLatency(bool* supports) {
+ if (supports == nullptr) {
+ return BAD_VALUE;
+ }
+ *supports = false;
+
+ String8 reply;
+ status_t status = getParameters(
+ String8(AUDIO_PARAMETER_BT_VARIABLE_LATENCY_SUPPORTED), &reply);
+ if (status != NO_ERROR) {
+ return status;
+ }
+ AudioParameter replyParams(reply);
+ String8 trueOrFalse;
+ status = replyParams.get(
+ String8(AUDIO_PARAMETER_BT_VARIABLE_LATENCY_SUPPORTED), trueOrFalse);
+ if (status != NO_ERROR) {
+ return status;
+ }
+ *supports = trueOrFalse == AudioParameter::valueTrue;
+ return NO_ERROR;
+}
} // namespace android
diff --git a/media/libaudiohal/impl/DeviceHalHidl.h b/media/libaudiohal/impl/DeviceHalHidl.h
index 989c1f5..1a1db33 100644
--- a/media/libaudiohal/impl/DeviceHalHidl.h
+++ b/media/libaudiohal/impl/DeviceHalHidl.h
@@ -127,10 +127,7 @@
return INVALID_OPERATION;
}
- int32_t supportsBluetoothVariableLatency(bool* supports __unused) override {
- // TODO: Implement the HAL query when moving to AIDL HAL.
- return INVALID_OPERATION;
- }
+ status_t supportsBluetoothVariableLatency(bool* supports) override;
status_t setConnectedState(const struct audio_port_v7 *port, bool connected) override;