PylonRecorder/imagebuffer.h
2024-03-08 16:06:23 +01:00

45 lines
813 B
C++

#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* 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<MyImage*> buffer;
std::vector<size_t> 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