Loading services/audiopolicy/service/Spatializer.cpp +36 −13 Original line number Diff line number Diff line Loading @@ -741,6 +741,17 @@ void Spatializer::onHeadToStagePose(const Pose3f& headToStage) { msg->post(); } void Spatializer::resetEngineHeadPose_l() { ALOGV("%s mEngine %p", __func__, mEngine.get()); if (mEngine == nullptr) { return; } const std::vector<float> headToStage(6, 0.0); setEffectParameter_l(SPATIALIZER_PARAM_HEAD_TO_STAGE, headToStage); setEffectParameter_l(SPATIALIZER_PARAM_HEADTRACKING_MODE, std::vector<SpatializerHeadTrackingMode>{SpatializerHeadTrackingMode::DISABLED}); } void Spatializer::onHeadToStagePoseMsg(const std::vector<float>& headToStage) { ALOGV("%s", __func__); sp<media::ISpatializerHeadTrackingCallback> callback; Loading Loading @@ -792,9 +803,13 @@ void Spatializer::onActualModeChangeMsg(HeadTrackingMode mode) { } mActualHeadTrackingMode = spatializerMode; if (mEngine != nullptr) { if (spatializerMode == SpatializerHeadTrackingMode::DISABLED) { resetEngineHeadPose_l(); } else { setEffectParameter_l(SPATIALIZER_PARAM_HEADTRACKING_MODE, std::vector<SpatializerHeadTrackingMode>{spatializerMode}); } } callback = mHeadTrackingCallback; mLocalLog.log("%s: %s, spatializerMode %s", __func__, media::toString(mode).c_str(), media::toString(spatializerMode).c_str()); Loading Loading @@ -923,16 +938,25 @@ void Spatializer::checkSensorsState_l() { bool lowLatencySupported = mSupportedLatencyModes.empty() || (std::find(mSupportedLatencyModes.begin(), mSupportedLatencyModes.end(), AUDIO_LATENCY_MODE_LOW) != mSupportedLatencyModes.end()); if (mSupportsHeadTracking && mPoseController != nullptr) { if (mSupportsHeadTracking) { if (mPoseController != nullptr) { if (lowLatencySupported && mNumActiveTracks > 0 && mLevel != SpatializationLevel::NONE && mDesiredHeadTrackingMode != HeadTrackingMode::STATIC && mHeadSensor != SpatializerPoseController::INVALID_SENSOR) { if (mEngine != nullptr) { setEffectParameter_l(SPATIALIZER_PARAM_HEADTRACKING_MODE, std::vector<SpatializerHeadTrackingMode>{mActualHeadTrackingMode}); } mPoseController->setHeadSensor(mHeadSensor); mPoseController->setScreenSensor(mScreenSensor); requestedLatencyMode = AUDIO_LATENCY_MODE_LOW; } else { mPoseController->setHeadSensor(SpatializerPoseController::INVALID_SENSOR); mPoseController->setScreenSensor(SpatializerPoseController::INVALID_SENSOR); resetEngineHeadPose_l(); } } else { resetEngineHeadPose_l(); } } if (mOutput != AUDIO_IO_HANDLE_NONE) { Loading @@ -946,8 +970,6 @@ void Spatializer::checkEngineState_l() { mEngine->setEnabled(true); setEffectParameter_l(SPATIALIZER_PARAM_LEVEL, std::vector<SpatializationLevel>{mLevel}); setEffectParameter_l(SPATIALIZER_PARAM_HEADTRACKING_MODE, std::vector<SpatializerHeadTrackingMode>{mActualHeadTrackingMode}); } else { setEffectParameter_l(SPATIALIZER_PARAM_LEVEL, std::vector<SpatializationLevel>{SpatializationLevel::NONE}); Loading @@ -969,6 +991,7 @@ void Spatializer::checkPoseController_l() { mPoseController->setDisplayOrientation(mDisplayOrientation); } else if (!isControllerNeeded && mPoseController != nullptr) { mPoseController.reset(); resetEngineHeadPose_l(); } if (mPoseController != nullptr) { mPoseController->setDesiredMode(mDesiredHeadTrackingMode); Loading services/audiopolicy/service/Spatializer.h +6 −0 Original line number Diff line number Diff line Loading @@ -350,6 +350,12 @@ private: */ void checkEngineState_l() REQUIRES(mLock); /** * Reset head tracking mode and recenter pose in engine: Called when the head tracking * is disabled. */ void resetEngineHeadPose_l() REQUIRES(mLock); /** Effect engine descriptor */ const effect_descriptor_t mEngineDescriptor; /** Callback interface to parent audio policy service */ Loading Loading
services/audiopolicy/service/Spatializer.cpp +36 −13 Original line number Diff line number Diff line Loading @@ -741,6 +741,17 @@ void Spatializer::onHeadToStagePose(const Pose3f& headToStage) { msg->post(); } void Spatializer::resetEngineHeadPose_l() { ALOGV("%s mEngine %p", __func__, mEngine.get()); if (mEngine == nullptr) { return; } const std::vector<float> headToStage(6, 0.0); setEffectParameter_l(SPATIALIZER_PARAM_HEAD_TO_STAGE, headToStage); setEffectParameter_l(SPATIALIZER_PARAM_HEADTRACKING_MODE, std::vector<SpatializerHeadTrackingMode>{SpatializerHeadTrackingMode::DISABLED}); } void Spatializer::onHeadToStagePoseMsg(const std::vector<float>& headToStage) { ALOGV("%s", __func__); sp<media::ISpatializerHeadTrackingCallback> callback; Loading Loading @@ -792,9 +803,13 @@ void Spatializer::onActualModeChangeMsg(HeadTrackingMode mode) { } mActualHeadTrackingMode = spatializerMode; if (mEngine != nullptr) { if (spatializerMode == SpatializerHeadTrackingMode::DISABLED) { resetEngineHeadPose_l(); } else { setEffectParameter_l(SPATIALIZER_PARAM_HEADTRACKING_MODE, std::vector<SpatializerHeadTrackingMode>{spatializerMode}); } } callback = mHeadTrackingCallback; mLocalLog.log("%s: %s, spatializerMode %s", __func__, media::toString(mode).c_str(), media::toString(spatializerMode).c_str()); Loading Loading @@ -923,16 +938,25 @@ void Spatializer::checkSensorsState_l() { bool lowLatencySupported = mSupportedLatencyModes.empty() || (std::find(mSupportedLatencyModes.begin(), mSupportedLatencyModes.end(), AUDIO_LATENCY_MODE_LOW) != mSupportedLatencyModes.end()); if (mSupportsHeadTracking && mPoseController != nullptr) { if (mSupportsHeadTracking) { if (mPoseController != nullptr) { if (lowLatencySupported && mNumActiveTracks > 0 && mLevel != SpatializationLevel::NONE && mDesiredHeadTrackingMode != HeadTrackingMode::STATIC && mHeadSensor != SpatializerPoseController::INVALID_SENSOR) { if (mEngine != nullptr) { setEffectParameter_l(SPATIALIZER_PARAM_HEADTRACKING_MODE, std::vector<SpatializerHeadTrackingMode>{mActualHeadTrackingMode}); } mPoseController->setHeadSensor(mHeadSensor); mPoseController->setScreenSensor(mScreenSensor); requestedLatencyMode = AUDIO_LATENCY_MODE_LOW; } else { mPoseController->setHeadSensor(SpatializerPoseController::INVALID_SENSOR); mPoseController->setScreenSensor(SpatializerPoseController::INVALID_SENSOR); resetEngineHeadPose_l(); } } else { resetEngineHeadPose_l(); } } if (mOutput != AUDIO_IO_HANDLE_NONE) { Loading @@ -946,8 +970,6 @@ void Spatializer::checkEngineState_l() { mEngine->setEnabled(true); setEffectParameter_l(SPATIALIZER_PARAM_LEVEL, std::vector<SpatializationLevel>{mLevel}); setEffectParameter_l(SPATIALIZER_PARAM_HEADTRACKING_MODE, std::vector<SpatializerHeadTrackingMode>{mActualHeadTrackingMode}); } else { setEffectParameter_l(SPATIALIZER_PARAM_LEVEL, std::vector<SpatializationLevel>{SpatializationLevel::NONE}); Loading @@ -969,6 +991,7 @@ void Spatializer::checkPoseController_l() { mPoseController->setDisplayOrientation(mDisplayOrientation); } else if (!isControllerNeeded && mPoseController != nullptr) { mPoseController.reset(); resetEngineHeadPose_l(); } if (mPoseController != nullptr) { mPoseController->setDesiredMode(mDesiredHeadTrackingMode); Loading
services/audiopolicy/service/Spatializer.h +6 −0 Original line number Diff line number Diff line Loading @@ -350,6 +350,12 @@ private: */ void checkEngineState_l() REQUIRES(mLock); /** * Reset head tracking mode and recenter pose in engine: Called when the head tracking * is disabled. */ void resetEngineHeadPose_l() REQUIRES(mLock); /** Effect engine descriptor */ const effect_descriptor_t mEngineDescriptor; /** Callback interface to parent audio policy service */ Loading