#ifndef RECORDINGCONTROLLER_HPP #define RECORDINGCONTROLLER_HPP #include "recordingpreview.hpp" #include #include #include #include #include #include #include #include struct RecordingContext { QImage::Format format; std::function consumer; std::function validator; std::function finalizer; std::function postUploadTask; QString anotherFormat; }; struct _QueueContext { QByteArray arr; QString format; std::function postUploadTask; }; class RecordingController : public QObject { Q_OBJECT public: RecordingController(); bool isRunning(); public slots: // Returns false if isRunning bool start(RecordingContext *context); // Returns false if not running bool end(); void queue(_QueueContext arr); private slots: void timeout(); void startWithArea(QRect newArea); private: QMutex lock; QMutex timerl; QQueue<_QueueContext> uploadQueue; QRect area; RecordingContext *_context = 0; QTimer timer; RecordingPreview *preview = nullptr; unsigned int frame = 0; unsigned int time = 0; }; #endif // RECORDINGCONTROLLER_HPP