Loading media/libmediaplayerservice/Android.bp +1 −3 Original line number Diff line number Diff line Loading @@ -72,6 +72,7 @@ cc_library { "media_plugin_headers", "libmediautils_headers", "libstagefright_rtsp_headers", "libstagefright_webm_headers", ], static_libs: [ Loading @@ -79,9 +80,6 @@ cc_library { "libstagefright_nuplayer", "libstagefright_rtsp", "libstagefright_timedtext", // this needs it, but it can get it transitively through libstagefright. // i'm going to leave it here. "libstagefright_webm", "framework-permission-aidl-cpp", ], Loading services/audiopolicy/service/AudioPolicyService.cpp +12 −5 Original line number Diff line number Diff line Loading @@ -563,14 +563,21 @@ void AudioPolicyService::onUpdateActiveSpatializerTracks_l() { } void AudioPolicyService::doOnUpdateActiveSpatializerTracks() { sp<Spatializer> spatializer; size_t activeClients; { Mutex::Autolock _l(mLock); if (mSpatializer == nullptr) { return; } mSpatializer->updateActiveTracks(countActiveClientsOnOutput_l(mSpatializer->getOutput())); spatializer = mSpatializer; activeClients = countActiveClientsOnOutput_l(mSpatializer->getOutput()); } if (spatializer != nullptr) { spatializer->updateActiveTracks(activeClients); } } status_t AudioPolicyService::clientCreateAudioPatch(const struct audio_patch *patch, audio_patch_handle_t *handle, Loading services/audiopolicy/service/Spatializer.cpp +31 −11 Original line number Diff line number Diff line Loading @@ -298,7 +298,7 @@ Status Spatializer::setLevel(SpatializationLevel level) { callback = mSpatializerCallback; if (levelChanged && mEngine != nullptr) { setEffectParameter_l(SPATIALIZER_PARAM_LEVEL, std::vector<SpatializationLevel>{level}); checkEngineState_l(); } checkSensorsState_l(); } Loading Loading @@ -594,6 +594,7 @@ void Spatializer::onActualModeChangeMsg(HeadTrackingMode mode) { ALOGV("%s(%d)", __func__, (int) mode); sp<media::ISpatializerHeadTrackingCallback> callback; SpatializerHeadTrackingMode spatializerMode; bool modeChanged = false; { std::lock_guard lock(mLock); if (!mSupportsHeadTracking) { Loading @@ -613,10 +614,15 @@ void Spatializer::onActualModeChangeMsg(HeadTrackingMode mode) { LOG_ALWAYS_FATAL("Unknown mode: %d", mode); } } modeChanged = mActualHeadTrackingMode != spatializerMode; mActualHeadTrackingMode = spatializerMode; if (modeChanged && mEngine != nullptr) { setEffectParameter_l(SPATIALIZER_PARAM_HEADTRACKING_MODE, std::vector<SpatializerHeadTrackingMode>{spatializerMode}); } callback = mHeadTrackingCallback; } if (callback != nullptr) { if (callback != nullptr && modeChanged) { callback->onHeadTrackingModeChanged(spatializerMode); } } Loading Loading @@ -648,18 +654,13 @@ status_t Spatializer::attachOutput(audio_io_handle_t output, size_t numActiveTra return status; } setEffectParameter_l(SPATIALIZER_PARAM_LEVEL, std::vector<SpatializationLevel>{mLevel}); setEffectParameter_l(SPATIALIZER_PARAM_HEADTRACKING_MODE, std::vector<SpatializerHeadTrackingMode>{mActualHeadTrackingMode}); mEngine->setEnabled(true); checkEngineState_l(); outputChanged = mOutput != output; mOutput = output; if (mSupportsHeadTracking) { mPoseController = std::make_shared<SpatializerPoseController>( static_cast<SpatializerPoseController::Listener*>(this), 10ms, 50ms); static_cast<SpatializerPoseController::Listener*>(this), 10ms, 1000ms); LOG_ALWAYS_FATAL_IF(mPoseController == nullptr, "%s could not allocate pose controller", __func__); Loading Loading @@ -709,9 +710,12 @@ audio_io_handle_t Spatializer::detachOutput() { void Spatializer::updateActiveTracks(size_t numActiveTracks) { std::lock_guard lock(mLock); if (mNumActiveTracks != numActiveTracks) { mNumActiveTracks = numActiveTracks; checkEngineState_l(); checkSensorsState_l(); } } void Spatializer::checkSensorsState_l() { if (mSupportsHeadTracking && mPoseController != nullptr) { Loading @@ -727,6 +731,22 @@ void Spatializer::checkSensorsState_l() { } } void Spatializer::checkEngineState_l() { if (mEngine != nullptr) { if (mLevel != SpatializationLevel::NONE && mNumActiveTracks > 0) { 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}); mEngine->setEnabled(false); } } } void Spatializer::calculateHeadPose() { ALOGV("%s", __func__); std::lock_guard lock(mLock); Loading services/audiopolicy/service/Spatializer.h +6 −0 Original line number Diff line number Diff line Loading @@ -283,6 +283,12 @@ private: */ void checkSensorsState_l() REQUIRES(mLock); /** * Checks if the spatializer effect should be enabled based on * playback activity and requested level. */ void checkEngineState_l() REQUIRES(mLock); /** Effect engine descriptor */ const effect_descriptor_t mEngineDescriptor; /** Callback interface to parent audio policy service */ Loading Loading
media/libmediaplayerservice/Android.bp +1 −3 Original line number Diff line number Diff line Loading @@ -72,6 +72,7 @@ cc_library { "media_plugin_headers", "libmediautils_headers", "libstagefright_rtsp_headers", "libstagefright_webm_headers", ], static_libs: [ Loading @@ -79,9 +80,6 @@ cc_library { "libstagefright_nuplayer", "libstagefright_rtsp", "libstagefright_timedtext", // this needs it, but it can get it transitively through libstagefright. // i'm going to leave it here. "libstagefright_webm", "framework-permission-aidl-cpp", ], Loading
services/audiopolicy/service/AudioPolicyService.cpp +12 −5 Original line number Diff line number Diff line Loading @@ -563,14 +563,21 @@ void AudioPolicyService::onUpdateActiveSpatializerTracks_l() { } void AudioPolicyService::doOnUpdateActiveSpatializerTracks() { sp<Spatializer> spatializer; size_t activeClients; { Mutex::Autolock _l(mLock); if (mSpatializer == nullptr) { return; } mSpatializer->updateActiveTracks(countActiveClientsOnOutput_l(mSpatializer->getOutput())); spatializer = mSpatializer; activeClients = countActiveClientsOnOutput_l(mSpatializer->getOutput()); } if (spatializer != nullptr) { spatializer->updateActiveTracks(activeClients); } } status_t AudioPolicyService::clientCreateAudioPatch(const struct audio_patch *patch, audio_patch_handle_t *handle, Loading
services/audiopolicy/service/Spatializer.cpp +31 −11 Original line number Diff line number Diff line Loading @@ -298,7 +298,7 @@ Status Spatializer::setLevel(SpatializationLevel level) { callback = mSpatializerCallback; if (levelChanged && mEngine != nullptr) { setEffectParameter_l(SPATIALIZER_PARAM_LEVEL, std::vector<SpatializationLevel>{level}); checkEngineState_l(); } checkSensorsState_l(); } Loading Loading @@ -594,6 +594,7 @@ void Spatializer::onActualModeChangeMsg(HeadTrackingMode mode) { ALOGV("%s(%d)", __func__, (int) mode); sp<media::ISpatializerHeadTrackingCallback> callback; SpatializerHeadTrackingMode spatializerMode; bool modeChanged = false; { std::lock_guard lock(mLock); if (!mSupportsHeadTracking) { Loading @@ -613,10 +614,15 @@ void Spatializer::onActualModeChangeMsg(HeadTrackingMode mode) { LOG_ALWAYS_FATAL("Unknown mode: %d", mode); } } modeChanged = mActualHeadTrackingMode != spatializerMode; mActualHeadTrackingMode = spatializerMode; if (modeChanged && mEngine != nullptr) { setEffectParameter_l(SPATIALIZER_PARAM_HEADTRACKING_MODE, std::vector<SpatializerHeadTrackingMode>{spatializerMode}); } callback = mHeadTrackingCallback; } if (callback != nullptr) { if (callback != nullptr && modeChanged) { callback->onHeadTrackingModeChanged(spatializerMode); } } Loading Loading @@ -648,18 +654,13 @@ status_t Spatializer::attachOutput(audio_io_handle_t output, size_t numActiveTra return status; } setEffectParameter_l(SPATIALIZER_PARAM_LEVEL, std::vector<SpatializationLevel>{mLevel}); setEffectParameter_l(SPATIALIZER_PARAM_HEADTRACKING_MODE, std::vector<SpatializerHeadTrackingMode>{mActualHeadTrackingMode}); mEngine->setEnabled(true); checkEngineState_l(); outputChanged = mOutput != output; mOutput = output; if (mSupportsHeadTracking) { mPoseController = std::make_shared<SpatializerPoseController>( static_cast<SpatializerPoseController::Listener*>(this), 10ms, 50ms); static_cast<SpatializerPoseController::Listener*>(this), 10ms, 1000ms); LOG_ALWAYS_FATAL_IF(mPoseController == nullptr, "%s could not allocate pose controller", __func__); Loading Loading @@ -709,9 +710,12 @@ audio_io_handle_t Spatializer::detachOutput() { void Spatializer::updateActiveTracks(size_t numActiveTracks) { std::lock_guard lock(mLock); if (mNumActiveTracks != numActiveTracks) { mNumActiveTracks = numActiveTracks; checkEngineState_l(); checkSensorsState_l(); } } void Spatializer::checkSensorsState_l() { if (mSupportsHeadTracking && mPoseController != nullptr) { Loading @@ -727,6 +731,22 @@ void Spatializer::checkSensorsState_l() { } } void Spatializer::checkEngineState_l() { if (mEngine != nullptr) { if (mLevel != SpatializationLevel::NONE && mNumActiveTracks > 0) { 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}); mEngine->setEnabled(false); } } } void Spatializer::calculateHeadPose() { ALOGV("%s", __func__); std::lock_guard lock(mLock); Loading
services/audiopolicy/service/Spatializer.h +6 −0 Original line number Diff line number Diff line Loading @@ -283,6 +283,12 @@ private: */ void checkSensorsState_l() REQUIRES(mLock); /** * Checks if the spatializer effect should be enabled based on * playback activity and requested level. */ void checkEngineState_l() REQUIRES(mLock); /** Effect engine descriptor */ const effect_descriptor_t mEngineDescriptor; /** Callback interface to parent audio policy service */ Loading