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