#ifndef IMAGEBUFFER_H #define IMAGEBUFFER_H #include <QMutex> #include <QObject> #include <QWaitCondition> #include <myimage.h> class ImageBuffer : public QObject { Q_OBJECT public: explicit ImageBuffer(size_t buffer_size=100, QObject *parent = nullptr); ~ImageBuffer(); void clear(); void resize(size_t new_size); void push(MyImage *img); MyImage* pop(); MyImage* readLast(); size_t capacity(); double bufferPreassure(); size_t bufferLoad(); bool bufferNotEmpty(); private: QMutex mutex; int numUsedBytes = 0; std::vector<MyImage*> buffer; size_t current_write_index = 0; size_t current_read_index = 0; size_t load = 0; size_t buffer_size; signals: public slots: }; #endif // IMAGEBUFFER_H