#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); ~ImageBuffer(); void clear(); void resize(size_t new_size); void push(MyImage *img); MyImage* read(size_t &framecount); MyImage* readLast(size_t &framecount); size_t capacity(); double bufferPressure(); size_t bufferLoad(); bool bufferNotEmpty(); private: QMutex mutex; int numUsedBytes = 0; std::vector buffer; std::vector framecounts; size_t head_idx = 0; size_t read_idx = 0; size_t load = 0; size_t buffer_size; size_t framecount = 0; signals: public slots: }; #endif // IMAGEBUFFER_H