summaryrefslogtreecommitdiffstats
path: root/tests/auto/unit/mockbackend/qmockvideobuffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/unit/mockbackend/qmockvideobuffer.h')
-rw-r--r--tests/auto/unit/mockbackend/qmockvideobuffer.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/auto/unit/mockbackend/qmockvideobuffer.h b/tests/auto/unit/mockbackend/qmockvideobuffer.h
new file mode 100644
index 000000000..d09f93391
--- /dev/null
+++ b/tests/auto/unit/mockbackend/qmockvideobuffer.h
@@ -0,0 +1,38 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#ifndef QMOCKVIDEOBUFFER_H
+#define QMOCKVIDEOBUFFER_H
+
+#include "qimage.h"
+#include "private/qabstractvideobuffer_p.h"
+
+class QMockVideoBuffer : public QAbstractVideoBuffer
+{
+public:
+ QMockVideoBuffer(QImage image) : QAbstractVideoBuffer(QVideoFrame::NoHandle), m_image(image) { }
+
+ MapData map(QVideoFrame::MapMode mode) override
+ {
+ MapData mapData;
+ if (m_mapMode == QVideoFrame::NotMapped && !m_image.isNull()
+ && mode != QVideoFrame::NotMapped) {
+ m_mapMode = mode;
+
+ mapData.nPlanes = 1;
+ mapData.bytesPerLine[0] = m_image.bytesPerLine();
+ mapData.data[0] = m_image.bits();
+ mapData.size[0] = m_image.sizeInBytes();
+ }
+
+ return mapData;
+ }
+
+ void unmap() override { m_mapMode = QVideoFrame::NotMapped; }
+
+private:
+ QVideoFrame::MapMode m_mapMode = QVideoFrame::NotMapped;
+ QImage m_image;
+};
+
+#endif // QMOCKVIDEOBUFFER_H