#ifndef RECORDINGCONTROLLER_HPP #define RECORDINGCONTROLLER_HPP #include "recordingpreview.hpp" #include #include #include #include #include #include #include class RecordingContext { public: QImage::Format format; std::function consumer; std::function validator; std::function finalizer; }; 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(); private slots: void timeout(); void startWithArea(QRect newArea); private: QMutex lock; QQueue uploadQueue; QRect area; RecordingContext *_context = 0; QTimer timer; RecordingPreview *preview = nullptr; unsigned int frame = 0; unsigned int time = 0; }; #endif // RECORDINGCONTROLLER_HPP