Merge "Spatializer: Workaround for Head Tracking on BT AAC" into tm-qpr-dev am: 49db442b04
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/20261474
Change-Id: I9917fc9c91d72d633b5b6b34481d03051d1fe58a
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/services/audiopolicy/service/Spatializer.cpp b/services/audiopolicy/service/Spatializer.cpp
index be95d58..38ad494 100644
--- a/services/audiopolicy/service/Spatializer.cpp
+++ b/services/audiopolicy/service/Spatializer.cpp
@@ -935,12 +935,15 @@
void Spatializer::checkSensorsState_l() {
audio_latency_mode_t requestedLatencyMode = AUDIO_LATENCY_MODE_FREE;
- bool lowLatencySupported = mSupportedLatencyModes.empty()
- || (std::find(mSupportedLatencyModes.begin(), mSupportedLatencyModes.end(),
- AUDIO_LATENCY_MODE_LOW) != mSupportedLatencyModes.end());
+ const bool supportsSetLatencyMode = !mSupportedLatencyModes.empty();
+ const bool supportsLowLatencyMode = supportsSetLatencyMode && std::find(
+ mSupportedLatencyModes.begin(), mSupportedLatencyModes.end(),
+ AUDIO_LATENCY_MODE_LOW) != mSupportedLatencyModes.end();
if (mSupportsHeadTracking) {
if (mPoseController != nullptr) {
- if (lowLatencySupported && mNumActiveTracks > 0 && mLevel != SpatializationLevel::NONE
+ // TODO(b/253297301, b/255433067) reenable low latency condition check
+ // for Head Tracking after Bluetooth HAL supports it correctly.
+ if (mNumActiveTracks > 0 && mLevel != SpatializationLevel::NONE
&& mDesiredHeadTrackingMode != HeadTrackingMode::STATIC
&& mHeadSensor != SpatializerPoseController::INVALID_SENSOR) {
if (mEngine != nullptr) {
@@ -949,7 +952,7 @@
}
mPoseController->setHeadSensor(mHeadSensor);
mPoseController->setScreenSensor(mScreenSensor);
- requestedLatencyMode = AUDIO_LATENCY_MODE_LOW;
+ if (supportsLowLatencyMode) requestedLatencyMode = AUDIO_LATENCY_MODE_LOW;
} else {
mPoseController->setHeadSensor(SpatializerPoseController::INVALID_SENSOR);
mPoseController->setScreenSensor(SpatializerPoseController::INVALID_SENSOR);
@@ -959,7 +962,7 @@
resetEngineHeadPose_l();
}
}
- if (mOutput != AUDIO_IO_HANDLE_NONE) {
+ if (mOutput != AUDIO_IO_HANDLE_NONE && supportsSetLatencyMode) {
AudioSystem::setRequestedLatencyMode(mOutput, requestedLatencyMode);
}
}