/* * V I D E O F R A M E G R A B B E R . H * -------------------------------------- * * Module : Video screeen capture class. */ #pragma once #include #include #include // Library: #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) class QCameraInfo; class QCameraViewfinderSettings; #else class QVideoFrame; class QCameraDevice; class QCameraFormat; #endif class QCamera; #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) class UIVideoFrameGrabber { #else class UIVideoFrameGrabber : public QQuickItem { Q_OBJECT #endif public: static UIVideoFrameGrabber* Instance(); UIVideoFrameGrabber(); ~UIVideoFrameGrabber(); void OpenVideo(class QImage& Buffer, std::mutex& mutex); void CloseVideo(); bool IsOpen() const; bool StartVideo(); void StopVideo(); #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) private: void LogCameraDetails(const QCameraInfo* info, QCamera* camera); void LogSettings(const QCameraViewfinderSettings& settings); #else public slots: void onVideoFrameChanged(const QVideoFrame& frame); private: void SelectVideoFormat(QCamera* selectedCamera, const QCameraDevice* selectedCameraDevice); void LogCameraDetails(const QCameraDevice* device); void LogAllCameraFormats(const QCameraDevice* device); void LogCameraFormat(const QCameraFormat& cameraFormat); #endif void LogStatus(); static UIVideoFrameGrabber* _This; struct VideoContext* _VideoContext; };