Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 359f2ef0 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Camera: Support TEST_PATTERN_MODE_BLACK for camera muting" into sc-dev

parents d828b8f1 11afe4f2
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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>
+18 −8
Original line number Diff line number Diff line
@@ -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;
        }
    }

@@ -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),
@@ -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;
@@ -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;
@@ -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,
+4 −2
Original line number Diff line number Diff line
@@ -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);

@@ -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;
@@ -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 {