45 lines
813 B
C++
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
|