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

Commit 5b18b370 authored by Jayant Chowdhary's avatar Jayant Chowdhary Committed by Android (Google) Code Review
Browse files

Merge "camera: Let SurfaceView transform preview only when rotation override...

Merge "camera: Let SurfaceView transform preview only when rotation override isn't rotation only" into main
parents 5073202a fa982f3d
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ namespace android {
const char *kCameraServiceDisabledProperty = "config.disable_cameraservice";

status_t CameraUtils::getRotationTransform(const CameraMetadata& staticInfo,
        int mirrorMode, /*out*/int32_t* transform) {
        int mirrorMode,  bool enableTransformInverseDisplay, /*out*/int32_t* transform) {
    ALOGV("%s", __FUNCTION__);

    if (transform == NULL) {
@@ -128,7 +128,9 @@ status_t CameraUtils::getRotationTransform(const CameraMetadata& staticInfo,
     * aspect ratio, or the preview will end up looking non-uniformly
     * stretched.
     */
    if (enableTransformInverseDisplay) {
        flags |= NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY;
    }

    ALOGV("%s: final transform = 0x%x", __FUNCTION__, flags);

+1 −1
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@ class CameraUtils {
         * Returns OK on success, or a negative error code.
         */
        static status_t getRotationTransform(const CameraMetadata& staticInfo,
                int mirrorMode, /*out*/int32_t* transform);
                int mirrorMode, bool enableTransformInverseDisplay, /*out*/int32_t* transform);

        /**
         * Check if the image data is VideoNativeHandleMetadata, that contains a native handle.
+1 −0
Original line number Diff line number Diff line
@@ -75,6 +75,7 @@ void CameraUtilsFuzzer::invokeCameraUtils() {

                    CameraUtils::getRotationTransform(
                            staticMetadata, mFDP->ConsumeIntegral<int32_t>() /* mirrorMode */,
                            true /*enableTransformInverseDisplay*/,
                            &transform /*out*/);
                },
                [&]() { CameraUtils::isCameraServiceDisabled(); },
+8 −1
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@
#include <camera/CameraUtils.h>
#include <camera/StringUtils.h>
#include <com_android_internal_camera_flags.h>
#include <com_android_window_flags.h>
#include <cutils/properties.h>
#include <gui/Surface.h>
#include <gui/view/Surface.h>
@@ -53,6 +54,7 @@ namespace android {
using namespace camera2;

namespace flags = com::android::internal::camera::flags;
namespace wm_flags = com::android::window::flags;

// Interface used by CameraService

@@ -134,8 +136,13 @@ status_t Camera2Client::initializeImpl(TProviderPtr providerPtr, const std::stri
    // The 'mRotateAndCropMode' value only accounts for the necessary adjustment
    // when the display rotates. The sensor orientation still needs to be calculated
    // and applied similar to the Camera2 path.
    using hardware::BnCameraService::ROTATION_OVERRIDE_ROTATION_ONLY;
    bool enableTransformInverseDisplay = true;
    if (wm_flags::enable_camera_compat_for_desktop_windowing()) {
        enableTransformInverseDisplay = (mRotationOverride != ROTATION_OVERRIDE_ROTATION_ONLY);
    }
    CameraUtils::getRotationTransform(staticInfo, OutputConfiguration::MIRROR_MODE_AUTO,
            &mRotateAndCropPreviewTransform);
            enableTransformInverseDisplay, &mRotateAndCropPreviewTransform);

    mStreamingProcessor = new StreamingProcessor(this);

+10 −1
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@
#include <android/hardware/camera/device/3.7/ICameraInjectionSession.h>
#include <android/hardware/camera2/ICameraDeviceUser.h>
#include <com_android_internal_camera_flags.h>
#include <com_android_window_flags.h>

#include "CameraService.h"
#include "aidl/android/hardware/graphics/common/Dataspace.h"
@@ -83,6 +84,8 @@ using namespace android::hardware::camera;
using namespace android::hardware::cameraservice::utils::conversion::aidl;

namespace flags = com::android::internal::camera::flags;
namespace wm_flags = com::android::window::flags;

namespace android {

Camera3Device::Camera3Device(std::shared_ptr<CameraServiceProxyWrapper>& cameraServiceProxyWrapper,
@@ -5820,7 +5823,13 @@ void Camera3Device::overrideStreamUseCaseLocked() {
status_t Camera3Device::deriveAndSetTransformLocked(
        Camera3OutputStreamInterface& stream, int mirrorMode, int surfaceId) {
    int transform = -1;
    int res = CameraUtils::getRotationTransform(mDeviceInfo, mirrorMode, &transform);
    bool enableTransformInverseDisplay = true;
    using hardware::ICameraService::ROTATION_OVERRIDE_ROTATION_ONLY;
    if (wm_flags::enable_camera_compat_for_desktop_windowing()) {
        enableTransformInverseDisplay = (mRotationOverride != ROTATION_OVERRIDE_ROTATION_ONLY);
    }
    int res = CameraUtils::getRotationTransform(mDeviceInfo, mirrorMode,
            enableTransformInverseDisplay, &transform);
    if (res != OK) {
        return res;
    }
Loading