diff options
Diffstat (limited to 'test/v4l2_videodevice')
-rw-r--r-- | test/v4l2_videodevice/v4l2_videodevice_test.cpp | 26 | ||||
-rw-r--r-- | test/v4l2_videodevice/v4l2_videodevice_test.h | 7 |
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_; }; |