From 9ebf1265da2c23ec86201d7f521a9352e0762944 Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Fri, 23 Oct 2015 17:45:31 +0200 Subject: [PATCH] AVFoundation: don't automatically rotate camera captures. We shouldn't do this automatically, as different kind of orientations might be wanted (sensor, device, UI). The default should be sensor orientation (no rotation applied). We should add an API to QCamera to enable automatic orientation of captured images. Change-Id: I56fff7f0c4aaaee37eb6ae2628e27073b4946b66 Reviewed-by: Christian Stromme --- .../avfoundation/camera/avfimagecapturecontrol.h | 4 +--- .../avfoundation/camera/avfimagecapturecontrol.mm | 12 +++--------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/src/plugins/avfoundation/camera/avfimagecapturecontrol.h b/src/plugins/avfoundation/camera/avfimagecapturecontrol.h index 1fee8164..dd5e8e8b 100644 --- a/src/plugins/avfoundation/camera/avfimagecapturecontrol.h +++ b/src/plugins/avfoundation/camera/avfimagecapturecontrol.h @@ -39,7 +39,6 @@ #include #include #include -#include #include "avfcamerasession.h" #include "avfstoragelocation.h" @@ -72,7 +71,7 @@ private Q_SLOTS: void onNewViewfinderFrame(const QVideoFrame &frame); private: - void makeCapturePreview(CaptureRequest request, const QVideoFrame &frame, AVFCameraInfo cameraInfo, int screenOrientation); + void makeCapturePreview(CaptureRequest request, const QVideoFrame &frame, int rotation); AVFCameraSession *m_session; AVFCameraControl *m_cameraControl; @@ -81,7 +80,6 @@ private: AVCaptureStillImageOutput *m_stillImageOutput; AVCaptureConnection *m_videoConnection; AVFStorageLocation m_storageLocation; - QVideoOutputOrientationHandler m_orientationHandler; QMutex m_requestsMutex; QQueue m_captureRequests; diff --git a/src/plugins/avfoundation/camera/avfimagecapturecontrol.mm b/src/plugins/avfoundation/camera/avfimagecapturecontrol.mm index 4703f872..edaaf8ce 100644 --- a/src/plugins/avfoundation/camera/avfimagecapturecontrol.mm +++ b/src/plugins/avfoundation/camera/avfimagecapturecontrol.mm @@ -180,21 +180,15 @@ void AVFImageCaptureControl::onNewViewfinderFrame(const QVideoFrame &frame) QtConcurrent::run(this, &AVFImageCaptureControl::makeCapturePreview, request, frame, - m_session->activeCameraInfo(), - m_orientationHandler.currentOrientation()); + 0 /* rotation */); } void AVFImageCaptureControl::makeCapturePreview(CaptureRequest request, const QVideoFrame &frame, - AVFCameraInfo cameraInfo, - int screenOrientation) + int rotation) { QTransform transform; - screenOrientation = 360 - screenOrientation; - if (cameraInfo.position == QCamera::FrontFace) - transform.rotate((screenOrientation + cameraInfo.orientation) % 360); - else - transform.rotate((screenOrientation + (360 - cameraInfo.orientation)) % 360); + transform.rotate(rotation); Q_EMIT imageCaptured(request.captureId, qt_imageFromVideoFrame(frame).transformed(transform));