Loading services/camera/libcameraservice/device3/Camera3Device.cpp +22 −24 Original line number Diff line number Diff line Loading @@ -306,9 +306,25 @@ status_t Camera3Device::initializeCommonLocked() { sessionParamKeys.insertArrayAt(sessionKeysEntry.data.i32, 0, sessionKeysEntry.count); } camera_metadata_entry_t availableTestPatternModes = mDeviceInfo.find( ANDROID_SENSOR_AVAILABLE_TEST_PATTERN_MODES); for (size_t i = 0; i < availableTestPatternModes.count; i++) { if (availableTestPatternModes.data.i32[i] == ANDROID_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR) { mSupportCameraMute = true; mSupportTestPatternSolidColor = true; break; } else if (availableTestPatternModes.data.i32[i] == ANDROID_SENSOR_TEST_PATTERN_MODE_BLACK) { mSupportCameraMute = true; mSupportTestPatternSolidColor = false; } } /** Start up request queue thread */ mRequestThread = new RequestThread( this, mStatusTracker, mInterface, sessionParamKeys, mUseHalBufManager); this, mStatusTracker, mInterface, sessionParamKeys, mUseHalBufManager, mSupportCameraMute); res = mRequestThread->run(String8::format("C3Dev-%s-ReqQueue", mId.string()).string()); if (res != OK) { SET_ERR_L("Unable to start request queue thread: %s (%d)", Loading Loading @@ -364,21 +380,6 @@ status_t Camera3Device::initializeCommonLocked() { mRotateAndCropMappers.emplace(mId.c_str(), &mDeviceInfo); } camera_metadata_entry_t availableTestPatternModes = mDeviceInfo.find( ANDROID_SENSOR_AVAILABLE_TEST_PATTERN_MODES); for (size_t i = 0; i < availableTestPatternModes.count; i++) { if (availableTestPatternModes.data.i32[i] == ANDROID_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR) { mSupportCameraMute = true; mSupportTestPatternSolidColor = true; break; } else if (availableTestPatternModes.data.i32[i] == ANDROID_SENSOR_TEST_PATTERN_MODE_BLACK) { mSupportCameraMute = true; mSupportTestPatternSolidColor = false; } } mInjectionMethods = new Camera3DeviceInjectionMethods(this); return OK; Loading Loading @@ -4155,7 +4156,8 @@ void Camera3Device::HalInterface::onStreamReConfigured(int streamId) { Camera3Device::RequestThread::RequestThread(wp<Camera3Device> parent, sp<StatusTracker> statusTracker, sp<HalInterface> interface, const Vector<int32_t>& sessionParamKeys, bool useHalBufManager) : bool useHalBufManager, bool supportCameraMute) : Thread(/*canCallJava*/false), mParent(parent), mStatusTracker(statusTracker), Loading @@ -4181,7 +4183,8 @@ Camera3Device::RequestThread::RequestThread(wp<Camera3Device> parent, mRequestLatency(kRequestLatencyBinSize), mSessionParamKeys(sessionParamKeys), mLatestSessionParams(sessionParamKeys.size()), mUseHalBufManager(useHalBufManager) { mUseHalBufManager(useHalBufManager), mSupportCameraMute(supportCameraMute){ mStatusId = statusTracker->addComponent("RequestThread"); } Loading Loading @@ -5862,12 +5865,7 @@ bool Camera3Device::RequestThread::overrideTestPattern( const sp<CaptureRequest> &request) { ATRACE_CALL(); { sp<Camera3Device> parent = mParent.promote(); if (parent != nullptr) { if (!parent->supportsCameraMute()) return false; } } if (!mSupportCameraMute) return false; Mutex::Autolock l(mTriggerMutex); Loading services/camera/libcameraservice/device3/Camera3Device.h +3 −1 Original line number Diff line number Diff line Loading @@ -813,7 +813,8 @@ class Camera3Device : sp<camera3::StatusTracker> statusTracker, sp<HalInterface> interface, const Vector<int32_t>& sessionParamKeys, bool useHalBufManager); bool useHalBufManager, bool supportCameraMute); ~RequestThread(); void setNotificationListener(wp<NotificationListener> listener); Loading Loading @@ -1086,6 +1087,7 @@ class Camera3Device : std::map<int32_t, std::set<String8>> mGroupIdPhysicalCameraMap; const bool mUseHalBufManager; const bool mSupportCameraMute; }; sp<RequestThread> mRequestThread; Loading Loading
services/camera/libcameraservice/device3/Camera3Device.cpp +22 −24 Original line number Diff line number Diff line Loading @@ -306,9 +306,25 @@ status_t Camera3Device::initializeCommonLocked() { sessionParamKeys.insertArrayAt(sessionKeysEntry.data.i32, 0, sessionKeysEntry.count); } camera_metadata_entry_t availableTestPatternModes = mDeviceInfo.find( ANDROID_SENSOR_AVAILABLE_TEST_PATTERN_MODES); for (size_t i = 0; i < availableTestPatternModes.count; i++) { if (availableTestPatternModes.data.i32[i] == ANDROID_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR) { mSupportCameraMute = true; mSupportTestPatternSolidColor = true; break; } else if (availableTestPatternModes.data.i32[i] == ANDROID_SENSOR_TEST_PATTERN_MODE_BLACK) { mSupportCameraMute = true; mSupportTestPatternSolidColor = false; } } /** Start up request queue thread */ mRequestThread = new RequestThread( this, mStatusTracker, mInterface, sessionParamKeys, mUseHalBufManager); this, mStatusTracker, mInterface, sessionParamKeys, mUseHalBufManager, mSupportCameraMute); res = mRequestThread->run(String8::format("C3Dev-%s-ReqQueue", mId.string()).string()); if (res != OK) { SET_ERR_L("Unable to start request queue thread: %s (%d)", Loading Loading @@ -364,21 +380,6 @@ status_t Camera3Device::initializeCommonLocked() { mRotateAndCropMappers.emplace(mId.c_str(), &mDeviceInfo); } camera_metadata_entry_t availableTestPatternModes = mDeviceInfo.find( ANDROID_SENSOR_AVAILABLE_TEST_PATTERN_MODES); for (size_t i = 0; i < availableTestPatternModes.count; i++) { if (availableTestPatternModes.data.i32[i] == ANDROID_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR) { mSupportCameraMute = true; mSupportTestPatternSolidColor = true; break; } else if (availableTestPatternModes.data.i32[i] == ANDROID_SENSOR_TEST_PATTERN_MODE_BLACK) { mSupportCameraMute = true; mSupportTestPatternSolidColor = false; } } mInjectionMethods = new Camera3DeviceInjectionMethods(this); return OK; Loading Loading @@ -4155,7 +4156,8 @@ void Camera3Device::HalInterface::onStreamReConfigured(int streamId) { Camera3Device::RequestThread::RequestThread(wp<Camera3Device> parent, sp<StatusTracker> statusTracker, sp<HalInterface> interface, const Vector<int32_t>& sessionParamKeys, bool useHalBufManager) : bool useHalBufManager, bool supportCameraMute) : Thread(/*canCallJava*/false), mParent(parent), mStatusTracker(statusTracker), Loading @@ -4181,7 +4183,8 @@ Camera3Device::RequestThread::RequestThread(wp<Camera3Device> parent, mRequestLatency(kRequestLatencyBinSize), mSessionParamKeys(sessionParamKeys), mLatestSessionParams(sessionParamKeys.size()), mUseHalBufManager(useHalBufManager) { mUseHalBufManager(useHalBufManager), mSupportCameraMute(supportCameraMute){ mStatusId = statusTracker->addComponent("RequestThread"); } Loading Loading @@ -5862,12 +5865,7 @@ bool Camera3Device::RequestThread::overrideTestPattern( const sp<CaptureRequest> &request) { ATRACE_CALL(); { sp<Camera3Device> parent = mParent.promote(); if (parent != nullptr) { if (!parent->supportsCameraMute()) return false; } } if (!mSupportCameraMute) return false; Mutex::Autolock l(mTriggerMutex); Loading
services/camera/libcameraservice/device3/Camera3Device.h +3 −1 Original line number Diff line number Diff line Loading @@ -813,7 +813,8 @@ class Camera3Device : sp<camera3::StatusTracker> statusTracker, sp<HalInterface> interface, const Vector<int32_t>& sessionParamKeys, bool useHalBufManager); bool useHalBufManager, bool supportCameraMute); ~RequestThread(); void setNotificationListener(wp<NotificationListener> listener); Loading Loading @@ -1086,6 +1087,7 @@ class Camera3Device : std::map<int32_t, std::set<String8>> mGroupIdPhysicalCameraMap; const bool mUseHalBufManager; const bool mSupportCameraMute; }; sp<RequestThread> mRequestThread; Loading