aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/core
diff options
context:
space:
mode:
Diffstat (limited to 'src-qt5/core')
-rw-r--r--src-qt5/core/libLumina/LVideoSurface.cpp32
-rw-r--r--src-qt5/core/libLumina/LVideoSurface.h20
-rw-r--r--src-qt5/core/libLumina/LVideoSurface.pri9
3 files changed, 61 insertions, 0 deletions
diff --git a/src-qt5/core/libLumina/LVideoSurface.cpp b/src-qt5/core/libLumina/LVideoSurface.cpp
new file mode 100644
index 00000000..6adec5d2
--- /dev/null
+++ b/src-qt5/core/libLumina/LVideoSurface.cpp
@@ -0,0 +1,32 @@
+#include "LVideoSurface.h"
+#include <QDebug>
+
+LVideoSurface::LVideoSurface() : QAbstractVideoSurface() {
+ recording = 0;
+ frameImage = QImage();
+}
+
+QImage LVideoSurface::currentFrame() {
+ return frameImage;
+}
+
+bool LVideoSurface::present(const QVideoFrame &frame) {
+ if(frame.isValid()) {
+ qDebug() << "Recording Frame" << frame.pixelFormat();
+ QVideoFrame icon(frame);
+ icon.map(QAbstractVideoBuffer::ReadOnly);
+ frameImage = QImage(icon.bits(), icon.width(), icon.height(), icon.bytesPerLine(), QImage::Format_ARGB32_Premultiplied);
+ icon.unmap();
+ emit frameReceived(frameImage);
+ if(recording++ == 2) ready = true;
+ return true;
+ }
+ ready = false;
+ return false;
+}
+
+QList<QVideoFrame::PixelFormat> LVideoSurface::supportedPixelFormats(QAbstractVideoBuffer::HandleType type = QAbstractVideoBuffer::NoHandle) const {
+ Q_UNUSED(type);
+ return QList<QVideoFrame::PixelFormat>() << QVideoFrame::Format_ARGB32 << QVideoFrame::Format_RGB32 << QVideoFrame::Format_RGB24
+ << QVideoFrame::Format_RGB565 << QVideoFrame::Format_RGB555 << QVideoFrame::Format_BGRA32 << QVideoFrame::Format_BGR32;
+}
diff --git a/src-qt5/core/libLumina/LVideoSurface.h b/src-qt5/core/libLumina/LVideoSurface.h
new file mode 100644
index 00000000..adb4611d
--- /dev/null
+++ b/src-qt5/core/libLumina/LVideoSurface.h
@@ -0,0 +1,20 @@
+#include <QAbstractVideoSurface>
+#include <QVideoSurfaceFormat>
+#include <QDebug>
+
+class LVideoSurface : public QAbstractVideoSurface {
+ Q_OBJECT
+
+ public:
+ LVideoSurface();
+ virtual bool present(const QVideoFrame&);
+ virtual QList<QVideoFrame::PixelFormat> supportedPixelFormats(QAbstractVideoBuffer::HandleType) const;
+ QImage currentFrame();
+ bool frameReady();
+ signals:
+ void frameReceived(QImage);
+ private:
+ int recording;
+ QImage frameImage;
+ bool ready;
+};
diff --git a/src-qt5/core/libLumina/LVideoSurface.pri b/src-qt5/core/libLumina/LVideoSurface.pri
new file mode 100644
index 00000000..469b8c93
--- /dev/null
+++ b/src-qt5/core/libLumina/LVideoSurface.pri
@@ -0,0 +1,9 @@
+QT *= multimedia
+
+HEADERS *= $${PWD}/LVideoSurface.h
+SOURCES *= $${PWD}/LVideoSurface.cpp
+
+INCLUDEPATH *= ${PWD}
+
+#Now the other dependendies of it
+#include(LUtils.pri)
bgstack15