PylonRecorder/imagebuffer.h

43 lines
737 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* pop();
MyImage* readLast();
size_t capacity();
double bufferPressure();
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