summaryrefslogtreecommitdiffstats
path: root/tests/auto/qvideoframe/tst_qvideoframe.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qvideoframe/tst_qvideoframe.cpp')
-rw-r--r--tests/auto/qvideoframe/tst_qvideoframe.cpp115
1 files changed, 113 insertions, 2 deletions
diff --git a/tests/auto/qvideoframe/tst_qvideoframe.cpp b/tests/auto/qvideoframe/tst_qvideoframe.cpp
index 58640b71a..37f7dc440 100644
--- a/tests/auto/qvideoframe/tst_qvideoframe.cpp
+++ b/tests/auto/qvideoframe/tst_qvideoframe.cpp
@@ -83,6 +83,10 @@ private slots:
void imageDetach();
void formatConversion_data();
void formatConversion();
+
+ void isMapped();
+ void isReadable();
+ void isWritable();
};
Q_DECLARE_METATYPE(QImage::Format)
@@ -344,6 +348,27 @@ void tst_QVideoFrame::copy_data()
<< QVideoFrame::TopField
<< qint64(63641740)
<< qint64(63641954);
+ QTest::newRow("64x64 ARGB32")
+ << QAbstractVideoBuffer::GLTextureHandle
+ << QSize(64, 64)
+ << QVideoFrame::Format_ARGB32
+ << QVideoFrame::BottomField
+ << qint64(63641740)
+ << qint64(63641954);
+ QTest::newRow("32x256 YUV420P")
+ << QAbstractVideoBuffer::UserHandle
+ << QSize(32, 256)
+ << QVideoFrame::Format_YUV420P
+ << QVideoFrame::InterlacedFrame
+ << qint64(12345)
+ << qint64(12389);
+ QTest::newRow("1052x756 ARGB32")
+ << QAbstractVideoBuffer::NoHandle
+ << QSize(1052, 756)
+ << QVideoFrame::Format_ARGB32
+ << QVideoFrame::ProgressiveFrame
+ << qint64(12345)
+ << qint64(12389);
QTest::newRow("32x256 YUV420P")
<< QAbstractVideoBuffer::UserHandle
<< QSize(32, 256)
@@ -399,7 +424,7 @@ void tst_QVideoFrame::copy()
QVERIFY(!buffer.isNull());
- QVERIFY(otherFrame.isValid());
+ QVERIFY(otherFrame.isValid());
QCOMPARE(otherFrame.handleType(), handleType);
QCOMPARE(otherFrame.pixelFormat(), pixelFormat);
QCOMPARE(otherFrame.size(), size);
@@ -782,12 +807,98 @@ void tst_QVideoFrame::formatConversion()
QFETCH(QVideoFrame::PixelFormat, pixelFormat);
QCOMPARE(QVideoFrame::pixelFormatFromImageFormat(imageFormat) == pixelFormat,
- imageFormat != QImage::Format_Invalid);
+ imageFormat != QImage::Format_Invalid);
QCOMPARE(QVideoFrame::imageFormatFromPixelFormat(pixelFormat) == imageFormat,
pixelFormat != QVideoFrame::Format_Invalid);
}
+#define TEST_MAPPED(frame, mode) \
+do { \
+ QVERIFY(frame.bits()); \
+ QVERIFY(frame.isMapped()); \
+ QCOMPARE(frame.mappedBytes(), 16384); \
+ QCOMPARE(frame.bytesPerLine(), 256); \
+ QCOMPARE(frame.mapMode(), mode); \
+} while (0)
+
+#define TEST_UNMAPPED(frame) \
+do { \
+ QVERIFY(!frame.bits()); \
+ QVERIFY(!frame.isMapped()); \
+ QCOMPARE(frame.mappedBytes(), 0); \
+ QCOMPARE(frame.bytesPerLine(), 0); \
+ QCOMPARE(frame.mapMode(), QAbstractVideoBuffer::NotMapped); \
+} while (0)
+
+void tst_QVideoFrame::isMapped()
+{
+ QVideoFrame frame(16384, QSize(64, 64), 256, QVideoFrame::Format_ARGB32);
+ TEST_UNMAPPED(frame);
+
+ QVERIFY(frame.map(QAbstractVideoBuffer::ReadOnly));
+ TEST_MAPPED(frame, QAbstractVideoBuffer::ReadOnly);
+ frame.unmap();
+ TEST_UNMAPPED(frame);
+
+ QVERIFY(frame.map(QAbstractVideoBuffer::WriteOnly));
+ TEST_MAPPED(frame, QAbstractVideoBuffer::WriteOnly);
+ frame.unmap();
+ TEST_UNMAPPED(frame);
+
+ QVERIFY(frame.map(QAbstractVideoBuffer::ReadWrite));
+ TEST_MAPPED(frame, QAbstractVideoBuffer::ReadWrite);
+ frame.unmap();
+ TEST_UNMAPPED(frame);
+}
+
+void tst_QVideoFrame::isReadable()
+{
+ QVideoFrame frame(16384, QSize(64, 64), 256, QVideoFrame::Format_ARGB32);
+
+ QVERIFY(!frame.isMapped());
+ QVERIFY(!frame.isReadable());
+
+ QVERIFY(frame.map(QAbstractVideoBuffer::ReadOnly));
+ QVERIFY(frame.isMapped());
+ QVERIFY(frame.isReadable());
+ frame.unmap();
+
+ QVERIFY(frame.map(QAbstractVideoBuffer::WriteOnly));
+ QVERIFY(frame.isMapped());
+ QVERIFY(!frame.isReadable());
+ frame.unmap();
+
+ QVERIFY(frame.map(QAbstractVideoBuffer::ReadWrite));
+ QVERIFY(frame.isMapped());
+ QVERIFY(frame.isReadable());
+ frame.unmap();
+}
+
+void tst_QVideoFrame::isWritable()
+{
+ QVideoFrame frame(16384, QSize(64, 64), 256, QVideoFrame::Format_ARGB32);
+
+ QVERIFY(!frame.isMapped());
+ QVERIFY(!frame.isWritable());
+
+ QVERIFY(frame.map(QAbstractVideoBuffer::ReadOnly));
+ QVERIFY(frame.isMapped());
+ QVERIFY(!frame.isWritable());
+ frame.unmap();
+
+ QVERIFY(frame.map(QAbstractVideoBuffer::WriteOnly));
+ QVERIFY(frame.isMapped());
+ QVERIFY(frame.isWritable());
+ frame.unmap();
+
+ QVERIFY(frame.map(QAbstractVideoBuffer::ReadWrite));
+ QVERIFY(frame.isMapped());
+ QVERIFY(frame.isWritable());
+ frame.unmap();
+}
+
+
QTEST_MAIN(tst_QVideoFrame)
#include "tst_qvideoframe.moc"