summaryrefslogtreecommitdiff
path: root/test/v4l2_videodevice
diff options
context:
space:
mode:
Diffstat (limited to 'test/v4l2_videodevice')
-rw-r--r--test/v4l2_videodevice/v4l2_videodevice_test.cpp26
-rw-r--r--test/v4l2_videodevice/v4l2_videodevice_test.h7
2 files changed, 32 insertions, 1 deletions
diff --git a/test/v4l2_videodevice/v4l2_videodevice_test.cpp b/test/v4l2_videodevice/v4l2_videodevice_test.cpp
index b26d06ad..a0d269fe 100644
--- a/test/v4l2_videodevice/v4l2_videodevice_test.cpp
+++ b/test/v4l2_videodevice/v4l2_videodevice_test.cpp
@@ -8,6 +8,8 @@
#include <iostream>
#include <sys/stat.h>
+#include <linux/media-bus-format.h>
+
#include "v4l2_videodevice_test.h"
#include "device_enumerator.h"
@@ -69,6 +71,28 @@ int V4L2VideoDeviceTest::init()
if (capture_->getFormat(&format))
return TestFail;
+ if (driver_ == "vimc") {
+ sensor_ = new CameraSensor(media_->getEntityByName("Sensor A"));
+ if (sensor_->init())
+ return TestFail;
+
+ debayer_ = new V4L2Subdevice(media_->getEntityByName("Debayer A"));
+ if (debayer_->open())
+ return TestFail;
+
+ format.fourcc = V4L2_PIX_FMT_SBGGR8;
+
+ V4L2SubdeviceFormat subformat = {};
+ subformat.mbus_code = MEDIA_BUS_FMT_SBGGR8_1X8;
+ subformat.size = format.size;
+
+ if (sensor_->setFormat(&subformat))
+ return TestFail;
+
+ if (debayer_->setFormat(0, &subformat))
+ return TestFail;
+ }
+
format.size.width = 640;
format.size.height = 480;
if (capture_->setFormat(&format))
@@ -83,5 +107,7 @@ void V4L2VideoDeviceTest::cleanup()
capture_->releaseBuffers();
capture_->close();
+ delete debayer_;
+ delete sensor_;
delete capture_;
};
diff --git a/test/v4l2_videodevice/v4l2_videodevice_test.h b/test/v4l2_videodevice/v4l2_videodevice_test.h
index 3321b5a4..34dd231c 100644
--- a/test/v4l2_videodevice/v4l2_videodevice_test.h
+++ b/test/v4l2_videodevice/v4l2_videodevice_test.h
@@ -13,8 +13,10 @@
#include "test.h"
+#include "camera_sensor.h"
#include "device_enumerator.h"
#include "media_device.h"
+#include "v4l2_subdevice.h"
#include "v4l2_videodevice.h"
using namespace libcamera;
@@ -23,7 +25,8 @@ class V4L2VideoDeviceTest : public Test
{
public:
V4L2VideoDeviceTest(const char *driver, const char *entity)
- : driver_(driver), entity_(entity), capture_(nullptr)
+ : driver_(driver), entity_(entity), sensor_(nullptr),
+ debayer_(nullptr), capture_(nullptr)
{
}
@@ -35,6 +38,8 @@ protected:
std::string entity_;
std::unique_ptr<DeviceEnumerator> enumerator_;
std::shared_ptr<MediaDevice> media_;
+ CameraSensor *sensor_;
+ V4L2Subdevice *debayer_;
V4L2VideoDevice *capture_;
BufferPool pool_;
};