new file mode 100644
@@ -0,0 +1,51 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (C) 2019, Google Inc.
+ *
+ * libcamera V4L2 API tests
+ */
+
+#include "v4l2_device_test.h"
+
+class CaptureFrames : public V4L2DeviceTest
+{
+protected:
+ int run()
+ {
+ int ret;
+
+ BufferPool *pool = dev_->requestBuffers(8);
+ if (!pool)
+ return TestFail;
+
+ ret = dev_->streamOn();
+ if (ret)
+ return ret;
+
+ /*
+ * With no dispatcher loop, the internal asynchronous buffer
+ * retrieval will not operate.
+ *
+ * We can manually validate the dequeueBuffer() and
+ * queueBuffer() calls directly here.
+ *
+ * The application should not use these calls directly if it
+ * makes any calls to:
+ * dispatcher->processEvents();
+ */
+ for (unsigned int i; i < 30; ++i) {
+ auto buffer = dev_->dequeueBuffer();
+
+ /* Check buffer */
+ if (!buffer)
+ return TestFail;
+
+ if (dev_->queueBuffer(buffer))
+ return TestFail;
+ }
+
+ return dev_->streamOff();
+ }
+};
+
+TEST_REGISTER(CaptureFrames);
@@ -4,6 +4,7 @@ v4l2_device_tests = [
[ 'double_open', 'double_open.cpp' ],
[ 'request_buffers', 'request_buffers.cpp' ],
[ 'stream_on_off', 'stream_on_off.cpp' ],
+ [ 'capture_frames', 'capture_frames.cpp' ],
]
foreach t : v4l2_device_tests
We now have enough infrastructure to be able to capture frames from a basic UVC device. Provide a test loop which captures frames, and returns them back to the kernel. Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> --- test/v4l2_device/capture_frames.cpp | 51 +++++++++++++++++++++++++++++ test/v4l2_device/meson.build | 1 + 2 files changed, 52 insertions(+) create mode 100644 test/v4l2_device/capture_frames.cpp