1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00
qTox/src/videosource.h

58 lines
995 B
C
Raw Normal View History

2014-10-07 22:59:21 +08:00
#ifndef VIDEOSOURCE_H
#define VIDEOSOURCE_H
2014-10-08 20:25:32 +08:00
#include <QObject>
2014-10-07 22:59:21 +08:00
#include <QSize>
#include <QRgb>
2014-10-07 22:59:21 +08:00
struct VideoFrame
2014-10-07 22:59:21 +08:00
{
enum ColorFormat
{
BGR,
YUV,
};
QByteArray data;
QSize resolution;
ColorFormat format;
void setNull()
{
data = QByteArray();
}
bool isNull()
{
return data.isEmpty();
}
// assumes format is BGR
QRgb getPixel(int x, int y)
{
char b = data.data()[resolution.width() * 3 * y + x * 3 + 0];
char g = data.data()[resolution.width() * 3 * y + x * 3 + 1];
char r = data.data()[resolution.width() * 3 * y + x * 3 + 2];
return qRgb(r, g, b);
}
};
2014-10-08 20:25:32 +08:00
Q_DECLARE_METATYPE(VideoFrame)
2014-10-08 20:25:32 +08:00
class VideoSource : public QObject
{
Q_OBJECT
2014-10-08 20:25:32 +08:00
public:
2014-10-07 22:59:21 +08:00
virtual void subscribe() = 0;
virtual void unsubscribe() = 0;
virtual VideoFrame::ColorFormat getColorFormat() = 0;
2014-10-08 20:25:32 +08:00
signals:
void frameAvailable(const VideoFrame frame);
2014-10-08 20:25:32 +08:00
2014-10-07 22:59:21 +08:00
};
#endif // VIDEOSOURCE_H