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

Commit bb08b4be authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Camera: Check for rotate and crop support during connect" into main

parents a188d5ae 6d45db87
Loading
Loading
Loading
Loading
+55 −29
Original line number Original line Diff line number Diff line
@@ -2256,6 +2256,22 @@ Status CameraService::connectHelper(const sp<CALLBACK>& cameraCb, const std::str
        // Enable/disable camera service watchdog
        // Enable/disable camera service watchdog
        client->setCameraServiceWatchdog(mCameraServiceWatchdogEnabled);
        client->setCameraServiceWatchdog(mCameraServiceWatchdogEnabled);


        CameraMetadata chars;
        bool rotateAndCropSupported = true;
        err = mCameraProviderManager->getCameraCharacteristics(cameraId, overrideForPerfClass,
                &chars, overrideToPortrait);
        if (err == OK) {
            auto availableRotateCropEntry = chars.find(
                    ANDROID_SCALER_AVAILABLE_ROTATE_AND_CROP_MODES);
            if (availableRotateCropEntry.count <= 1) {
                rotateAndCropSupported = false;
            }
        } else {
            ALOGE("%s: Unable to query static metadata for camera %s: %s (%d)", __FUNCTION__,
                    cameraId.c_str(), strerror(-err), err);
        }

        if (rotateAndCropSupported) {
            // Set rotate-and-crop override behavior
            // Set rotate-and-crop override behavior
            if (mOverrideRotateAndCropMode != ANDROID_SCALER_ROTATE_AND_CROP_AUTO) {
            if (mOverrideRotateAndCropMode != ANDROID_SCALER_ROTATE_AND_CROP_AUTO) {
                client->setRotateAndCropOverride(mOverrideRotateAndCropMode);
                client->setRotateAndCropOverride(mOverrideRotateAndCropMode);
@@ -2281,7 +2297,16 @@ Status CameraService::connectHelper(const sp<CALLBACK>& cameraCb, const std::str
                    mCameraServiceProxyWrapper->getRotateAndCropOverride(
                    mCameraServiceProxyWrapper->getRotateAndCropOverride(
                        clientPackageName, facing, multiuser_get_user_id(clientUid)));
                        clientPackageName, facing, multiuser_get_user_id(clientUid)));
            }
            }
        }

        bool autoframingSupported = true;
        auto availableAutoframingEntry = chars.find(ANDROID_CONTROL_AUTOFRAMING_AVAILABLE);
        if ((availableAutoframingEntry.count == 1) && (availableAutoframingEntry.data.u8[0] ==
                    ANDROID_CONTROL_AUTOFRAMING_AVAILABLE_FALSE)) {
            autoframingSupported = false;
        }


        if (autoframingSupported) {
            // Set autoframing override behaviour
            // Set autoframing override behaviour
            if (mOverrideAutoframingMode != ANDROID_CONTROL_AUTOFRAMING_AUTO) {
            if (mOverrideAutoframingMode != ANDROID_CONTROL_AUTOFRAMING_AUTO) {
                client->setAutoframingOverride(mOverrideAutoframingMode);
                client->setAutoframingOverride(mOverrideAutoframingMode);
@@ -2290,6 +2315,7 @@ Status CameraService::connectHelper(const sp<CALLBACK>& cameraCb, const std::str
                    mCameraServiceProxyWrapper->getAutoframingOverride(
                    mCameraServiceProxyWrapper->getAutoframingOverride(
                        clientPackageName));
                        clientPackageName));
            }
            }
        }


        // Set camera muting behavior
        // Set camera muting behavior
        bool isCameraPrivacyEnabled =
        bool isCameraPrivacyEnabled =