audio spatializer: monitor screen sensor only when needed

Only monitor the screen sensor when the head sensor must also
be monitored:
    - spatialization is enabled
    - head tracking is requested
    - a head pose sensor is registered
    - tracks are active on the spatializer output

Also remove excessive verbose log.

Bug: 224623509
Test: boot and check sensors
Change-Id: Icf0e4f69d3d342048decb127c23bf79ff196b8d4
diff --git a/services/audiopolicy/service/Spatializer.cpp b/services/audiopolicy/service/Spatializer.cpp
index d9e89aa..579b852 100644
--- a/services/audiopolicy/service/Spatializer.cpp
+++ b/services/audiopolicy/service/Spatializer.cpp
@@ -300,7 +300,7 @@
         if (levelChanged && mEngine != nullptr) {
             setEffectParameter_l(SPATIALIZER_PARAM_LEVEL, std::vector<SpatializationLevel>{level});
         }
-        checkHeadSensor_l();
+        checkSensorsState_l();
     }
 
     if (levelChanged) {
@@ -375,7 +375,7 @@
 
     if (mPoseController != nullptr) {
         mPoseController->setDesiredMode(mDesiredHeadTrackingMode);
-        checkHeadSensor_l();
+        checkSensorsState_l();
     }
 
     return Status::ok();
@@ -449,9 +449,7 @@
     }
     std::lock_guard lock(mLock);
     mHeadSensor = sensorHandle;
-    if (mPoseController != nullptr) {
-        checkHeadSensor_l();
-    }
+    checkSensorsState_l();
     return Status::ok();
 }
 
@@ -462,9 +460,7 @@
     }
     std::lock_guard lock(mLock);
     mScreenSensor = sensorHandle;
-    if (mPoseController != nullptr) {
-        mPoseController->setScreenSensor(mScreenSensor);
-    }
+    checkSensorsState_l();
     return Status::ok();
 }
 
@@ -669,8 +665,7 @@
 
             mPoseController->setDesiredMode(mDesiredHeadTrackingMode);
             mNumActiveTracks = numActiveTracks;
-            checkHeadSensor_l();
-            mPoseController->setScreenSensor(mScreenSensor);
+            checkSensorsState_l();
             mPoseController->setDisplayOrientation(mDisplayOrientation);
             poseController = mPoseController;
         }
@@ -715,17 +710,19 @@
 void Spatializer::updateActiveTracks(size_t numActiveTracks) {
     std::lock_guard lock(mLock);
     mNumActiveTracks = numActiveTracks;
-    checkHeadSensor_l();
+    checkSensorsState_l();
 }
 
-void Spatializer::checkHeadSensor_l() {
+void Spatializer::checkSensorsState_l() {
     if (mSupportsHeadTracking && mPoseController != nullptr) {
-        if(mNumActiveTracks > 0 && mLevel != SpatializationLevel::NONE
+        if (mNumActiveTracks > 0 && mLevel != SpatializationLevel::NONE
             && mDesiredHeadTrackingMode != HeadTrackingMode::STATIC
             && mHeadSensor != SpatializerPoseController::INVALID_SENSOR) {
             mPoseController->setHeadSensor(mHeadSensor);
+            mPoseController->setScreenSensor(mScreenSensor);
         } else {
             mPoseController->setHeadSensor(SpatializerPoseController::INVALID_SENSOR);
+            mPoseController->setScreenSensor(SpatializerPoseController::INVALID_SENSOR);
         }
     }
 }
@@ -746,11 +743,11 @@
     switch (event) {
         case AudioEffect::EVENT_FRAMES_PROCESSED: {
             int frames = info == nullptr ? 0 : *(int*)info;
-            ALOGD("%s frames processed %d for me %p", __func__, frames, me);
+            ALOGV("%s frames processed %d for me %p", __func__, frames, me);
             me->postFramesProcessedMsg(frames);
         } break;
         default:
-            ALOGD("%s event %d", __func__, event);
+            ALOGV("%s event %d", __func__, event);
             break;
     }
 }