summaryrefslogtreecommitdiff
path: root/src/libcamera/v4l2_videodevice.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libcamera/v4l2_videodevice.cpp')
-rw-r--r--src/libcamera/v4l2_videodevice.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp
index b20c8c77..b778181a 100644
--- a/src/libcamera/v4l2_videodevice.cpp
+++ b/src/libcamera/v4l2_videodevice.cpp
@@ -1636,8 +1636,14 @@ PixelFormat V4L2VideoDevice::toPixelFormat(V4L2PixelFormat v4l2Fourcc)
return PixelFormat(DRM_FORMAT_BGR888);
case V4L2_PIX_FMT_BGR24:
return PixelFormat(DRM_FORMAT_RGB888);
+ case V4L2_PIX_FMT_RGBA32:
+ return PixelFormat(DRM_FORMAT_ABGR8888);
+ case V4L2_PIX_FMT_ABGR32:
+ return PixelFormat(DRM_FORMAT_ARGB8888);
case V4L2_PIX_FMT_ARGB32:
return PixelFormat(DRM_FORMAT_BGRA8888);
+ case V4L2_PIX_FMT_BGRA32:
+ return PixelFormat(DRM_FORMAT_RGBA8888);
/* YUV packed formats. */
case V4L2_PIX_FMT_YUYV:
@@ -1720,8 +1726,14 @@ V4L2PixelFormat V4L2VideoDevice::toV4L2PixelFormat(const PixelFormat &pixelForma
return V4L2PixelFormat(V4L2_PIX_FMT_RGB24);
case DRM_FORMAT_RGB888:
return V4L2PixelFormat(V4L2_PIX_FMT_BGR24);
+ case DRM_FORMAT_ABGR8888:
+ return V4L2PixelFormat(V4L2_PIX_FMT_RGBA32);
+ case DRM_FORMAT_ARGB8888:
+ return V4L2PixelFormat(V4L2_PIX_FMT_ABGR32);
case DRM_FORMAT_BGRA8888:
return V4L2PixelFormat(V4L2_PIX_FMT_ARGB32);
+ case DRM_FORMAT_RGBA8888:
+ return V4L2PixelFormat(V4L2_PIX_FMT_BGRA32);
/* YUV packed formats. */
case DRM_FORMAT_YUYV:
>timeout.connect(this, &TimeoutHandler::timeoutHandler); timer_.start(100); } void restart() { timeout_ = false; timer_.start(100); } bool timeout() const { return timeout_; } private: void timeoutHandler(Timer *timer) { timeout_ = true; } Timer timer_; bool timeout_; }; class TimerThreadTest : public Test { protected: int init() { thread_.start(); timeout_.moveToThread(&thread_); return TestPass; } int run() { /* * Test that the timer expires and emits the timeout signal in * the thread it belongs to. */ this_thread::sleep_for(chrono::milliseconds(200)); if (!timeout_.timeout()) { cout << "Timer expiration test failed" << endl; return TestFail; } /* * Test that starting the timer from another thread fails. We * need to interrupt the event dispatcher to make sure we don't * succeed simply because the event dispatcher hasn't noticed * the timer restart. */ timeout_.restart(); thread_.eventDispatcher()->interrupt(); this_thread::sleep_for(chrono::milliseconds(200)); if (timeout_.timeout()) { cout << "Timer restart test failed" << endl; return TestFail; } return TestPass; } void cleanup() { /* Must stop thread before destroying timeout. */ thread_.exit(0); thread_.wait(); } private: TimeoutHandler timeout_; Thread thread_; }; TEST_REGISTER(TimerThreadTest)