diff options
Diffstat (limited to 'src/plugins/avfoundation/camera/avfimagecapturecontrol.h')
-rw-r--r-- | src/plugins/avfoundation/camera/avfimagecapturecontrol.h | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/plugins/avfoundation/camera/avfimagecapturecontrol.h b/src/plugins/avfoundation/camera/avfimagecapturecontrol.h index 993725653..dd5e8e8bb 100644 --- a/src/plugins/avfoundation/camera/avfimagecapturecontrol.h +++ b/src/plugins/avfoundation/camera/avfimagecapturecontrol.h @@ -36,19 +36,23 @@ #import <AVFoundation/AVFoundation.h> +#include <QtCore/qqueue.h> +#include <QtCore/qsemaphore.h> #include <QtMultimedia/qcameraimagecapturecontrol.h> +#include "avfcamerasession.h" #include "avfstoragelocation.h" QT_BEGIN_NAMESPACE -class AVFCameraSession; -class AVFCameraService; -class AVFCameraControl; - class AVFImageCaptureControl : public QCameraImageCaptureControl { Q_OBJECT public: + struct CaptureRequest { + int captureId; + QSemaphore *previewReady; + }; + AVFImageCaptureControl(AVFCameraService *service, QObject *parent = 0); ~AVFImageCaptureControl(); @@ -64,8 +68,11 @@ public: private Q_SLOTS: void updateCaptureConnection(); void updateReadyStatus(); + void onNewViewfinderFrame(const QVideoFrame &frame); private: + void makeCapturePreview(CaptureRequest request, const QVideoFrame &frame, int rotation); + AVFCameraSession *m_session; AVFCameraControl *m_cameraControl; bool m_ready; @@ -73,8 +80,13 @@ private: AVCaptureStillImageOutput *m_stillImageOutput; AVCaptureConnection *m_videoConnection; AVFStorageLocation m_storageLocation; + + QMutex m_requestsMutex; + QQueue<CaptureRequest> m_captureRequests; }; +Q_DECLARE_TYPEINFO(AVFImageCaptureControl::CaptureRequest, Q_PRIMITIVE_TYPE); + QT_END_NAMESPACE #endif |