Loading camera/ndk/include/camera/NdkCameraMetadataTags.h +2 −2 Original line number Diff line number Diff line Loading @@ -9224,10 +9224,10 @@ typedef enum acamera_metadata_enum_acamera_sensor_test_pattern_mode { * respective color channel provided in * ACAMERA_SENSOR_TEST_PATTERN_DATA.</p> * <p>For example:</p> * <pre><code>android.control.testPatternData = [0, 0xFFFFFFFF, 0xFFFFFFFF, 0] * <pre><code>ACAMERA_SENSOR_TEST_PATTERN_DATA = [0, 0xFFFFFFFF, 0xFFFFFFFF, 0] * </code></pre> * <p>All green pixels are 100% green. All red/blue pixels are black.</p> * <pre><code>android.control.testPatternData = [0xFFFFFFFF, 0, 0xFFFFFFFF, 0] * <pre><code>ACAMERA_SENSOR_TEST_PATTERN_DATA = [0xFFFFFFFF, 0, 0xFFFFFFFF, 0] * </code></pre> * <p>All red pixels are 100% red. Only the odd green pixels * are 100% green. All blue pixels are 100% black.</p> Loading services/camera/libcameraservice/device3/Camera3Device.cpp +18 −8 Original line number Diff line number Diff line Loading @@ -353,9 +353,15 @@ status_t Camera3Device::initializeCommonLocked() { 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) { 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; } } Loading Loading @@ -4163,7 +4169,7 @@ Camera3Device::RequestThread::RequestThread(wp<Camera3Device> parent, mCurrentAfTriggerId(0), mCurrentPreCaptureTriggerId(0), mRotateAndCropOverride(ANDROID_SCALER_ROTATE_AND_CROP_NONE), mCameraMute(false), mCameraMute(ANDROID_SENSOR_TEST_PATTERN_MODE_OFF), mCameraMuteChanged(false), mRepeatingLastFrameNumber( hardware::camera2::ICameraDeviceUser::NO_IN_FLIGHT_REPEATING_FRAMES), Loading Loading @@ -5265,11 +5271,11 @@ status_t Camera3Device::RequestThread::setRotateAndCropAutoBehavior( return OK; } status_t Camera3Device::RequestThread::setCameraMute(bool enabled) { status_t Camera3Device::RequestThread::setCameraMute(int32_t muteMode) { ATRACE_CALL(); Mutex::Autolock l(mTriggerMutex); if (enabled != mCameraMute) { mCameraMute = enabled; if (muteMode != mCameraMute) { mCameraMute = muteMode; mCameraMuteChanged = true; } return OK; Loading Loading @@ -5844,8 +5850,8 @@ bool Camera3Device::RequestThread::overrideTestPattern( request->mOriginalTestPatternData[3] }; if (mCameraMute) { testPatternMode = ANDROID_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR; if (mCameraMute != ANDROID_SENSOR_TEST_PATTERN_MODE_OFF) { testPatternMode = mCameraMute; testPatternData[0] = 0; testPatternData[1] = 0; testPatternData[2] = 0; Loading Loading @@ -6535,7 +6541,11 @@ status_t Camera3Device::setCameraMute(bool enabled) { if (mRequestThread == nullptr || !mSupportCameraMute) { return INVALID_OPERATION; } return mRequestThread->setCameraMute(enabled); int32_t muteMode = !enabled ? ANDROID_SENSOR_TEST_PATTERN_MODE_OFF : mSupportTestPatternSolidColor ? ANDROID_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR : ANDROID_SENSOR_TEST_PATTERN_MODE_BLACK; return mRequestThread->setCameraMute(muteMode); } status_t Camera3Device::injectCamera(const String8& injectedCamId, Loading services/camera/libcameraservice/device3/Camera3Device.h +4 −2 Original line number Diff line number Diff line Loading @@ -918,7 +918,7 @@ class Camera3Device : status_t setRotateAndCropAutoBehavior( camera_metadata_enum_android_scaler_rotate_and_crop_t rotateAndCropValue); status_t setCameraMute(bool enabled); status_t setCameraMute(int32_t muteMode); status_t setHalInterface(sp<HalInterface> newHalInterface); Loading Loading @@ -1069,7 +1069,7 @@ class Camera3Device : uint32_t mCurrentAfTriggerId; uint32_t mCurrentPreCaptureTriggerId; camera_metadata_enum_android_scaler_rotate_and_crop_t mRotateAndCropOverride; bool mCameraMute; int32_t mCameraMute; // 0 = no mute, otherwise the TEST_PATTERN_MODE to use bool mCameraMuteChanged; int64_t mRepeatingLastFrameNumber; Loading Loading @@ -1342,6 +1342,8 @@ class Camera3Device : // Whether the HAL supports camera muting via test pattern bool mSupportCameraMute = false; // Whether the HAL supports SOLID_COLOR or BLACK if mSupportCameraMute is true bool mSupportTestPatternSolidColor = false; // Injection camera related methods. class Camera3DeviceInjectionMethods : public virtual RefBase { Loading Loading
camera/ndk/include/camera/NdkCameraMetadataTags.h +2 −2 Original line number Diff line number Diff line Loading @@ -9224,10 +9224,10 @@ typedef enum acamera_metadata_enum_acamera_sensor_test_pattern_mode { * respective color channel provided in * ACAMERA_SENSOR_TEST_PATTERN_DATA.</p> * <p>For example:</p> * <pre><code>android.control.testPatternData = [0, 0xFFFFFFFF, 0xFFFFFFFF, 0] * <pre><code>ACAMERA_SENSOR_TEST_PATTERN_DATA = [0, 0xFFFFFFFF, 0xFFFFFFFF, 0] * </code></pre> * <p>All green pixels are 100% green. All red/blue pixels are black.</p> * <pre><code>android.control.testPatternData = [0xFFFFFFFF, 0, 0xFFFFFFFF, 0] * <pre><code>ACAMERA_SENSOR_TEST_PATTERN_DATA = [0xFFFFFFFF, 0, 0xFFFFFFFF, 0] * </code></pre> * <p>All red pixels are 100% red. Only the odd green pixels * are 100% green. All blue pixels are 100% black.</p> Loading
services/camera/libcameraservice/device3/Camera3Device.cpp +18 −8 Original line number Diff line number Diff line Loading @@ -353,9 +353,15 @@ status_t Camera3Device::initializeCommonLocked() { 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) { 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; } } Loading Loading @@ -4163,7 +4169,7 @@ Camera3Device::RequestThread::RequestThread(wp<Camera3Device> parent, mCurrentAfTriggerId(0), mCurrentPreCaptureTriggerId(0), mRotateAndCropOverride(ANDROID_SCALER_ROTATE_AND_CROP_NONE), mCameraMute(false), mCameraMute(ANDROID_SENSOR_TEST_PATTERN_MODE_OFF), mCameraMuteChanged(false), mRepeatingLastFrameNumber( hardware::camera2::ICameraDeviceUser::NO_IN_FLIGHT_REPEATING_FRAMES), Loading Loading @@ -5265,11 +5271,11 @@ status_t Camera3Device::RequestThread::setRotateAndCropAutoBehavior( return OK; } status_t Camera3Device::RequestThread::setCameraMute(bool enabled) { status_t Camera3Device::RequestThread::setCameraMute(int32_t muteMode) { ATRACE_CALL(); Mutex::Autolock l(mTriggerMutex); if (enabled != mCameraMute) { mCameraMute = enabled; if (muteMode != mCameraMute) { mCameraMute = muteMode; mCameraMuteChanged = true; } return OK; Loading Loading @@ -5844,8 +5850,8 @@ bool Camera3Device::RequestThread::overrideTestPattern( request->mOriginalTestPatternData[3] }; if (mCameraMute) { testPatternMode = ANDROID_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR; if (mCameraMute != ANDROID_SENSOR_TEST_PATTERN_MODE_OFF) { testPatternMode = mCameraMute; testPatternData[0] = 0; testPatternData[1] = 0; testPatternData[2] = 0; Loading Loading @@ -6535,7 +6541,11 @@ status_t Camera3Device::setCameraMute(bool enabled) { if (mRequestThread == nullptr || !mSupportCameraMute) { return INVALID_OPERATION; } return mRequestThread->setCameraMute(enabled); int32_t muteMode = !enabled ? ANDROID_SENSOR_TEST_PATTERN_MODE_OFF : mSupportTestPatternSolidColor ? ANDROID_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR : ANDROID_SENSOR_TEST_PATTERN_MODE_BLACK; return mRequestThread->setCameraMute(muteMode); } status_t Camera3Device::injectCamera(const String8& injectedCamId, Loading
services/camera/libcameraservice/device3/Camera3Device.h +4 −2 Original line number Diff line number Diff line Loading @@ -918,7 +918,7 @@ class Camera3Device : status_t setRotateAndCropAutoBehavior( camera_metadata_enum_android_scaler_rotate_and_crop_t rotateAndCropValue); status_t setCameraMute(bool enabled); status_t setCameraMute(int32_t muteMode); status_t setHalInterface(sp<HalInterface> newHalInterface); Loading Loading @@ -1069,7 +1069,7 @@ class Camera3Device : uint32_t mCurrentAfTriggerId; uint32_t mCurrentPreCaptureTriggerId; camera_metadata_enum_android_scaler_rotate_and_crop_t mRotateAndCropOverride; bool mCameraMute; int32_t mCameraMute; // 0 = no mute, otherwise the TEST_PATTERN_MODE to use bool mCameraMuteChanged; int64_t mRepeatingLastFrameNumber; Loading Loading @@ -1342,6 +1342,8 @@ class Camera3Device : // Whether the HAL supports camera muting via test pattern bool mSupportCameraMute = false; // Whether the HAL supports SOLID_COLOR or BLACK if mSupportCameraMute is true bool mSupportTestPatternSolidColor = false; // Injection camera related methods. class Camera3DeviceInjectionMethods : public virtual RefBase { Loading