@@ -424,11 +424,12 @@ int V4L2Device::setFrameStartEnabled(bool enable)
if (frameStartEnabled_ == enable)
return 0;
- struct v4l2_event_subscription event{};
+ struct v4l2_event_subscription event {
+ };
event.type = V4L2_EVENT_FRAME_SYNC;
unsigned long request = enable ? VIDIOC_SUBSCRIBE_EVENT
- : VIDIOC_UNSUBSCRIBE_EVENT;
+ : VIDIOC_UNSUBSCRIBE_EVENT;
int ret = ioctl(request, &event);
if (enable && ret)
return ret;
@@ -744,7 +745,8 @@ void V4L2Device::updateControls(ControlList *ctrls,
*/
void V4L2Device::eventAvailable()
{
- struct v4l2_event event{};
+ struct v4l2_event event {
+ };
int ret = ioctl(VIDIOC_DQEVENT, &event);
if (ret < 0) {
LOG(V4L2, Error)
@@ -766,11 +768,10 @@ void V4L2Device::eventAvailable()
static const std::map<uint32_t, ColorSpace> v4l2ToColorSpace = {
{ V4L2_COLORSPACE_RAW, ColorSpace::Raw },
- { V4L2_COLORSPACE_SRGB, {
- ColorSpace::Primaries::Rec709,
- ColorSpace::TransferFunction::Srgb,
- ColorSpace::YcbcrEncoding::Rec601,
- ColorSpace::Range::Limited } },
+ { V4L2_COLORSPACE_SRGB,
+ { ColorSpace::Primaries::Rec709,
+ ColorSpace::TransferFunction::Srgb,
+ ColorSpace::YcbcrEncoding::Rec601, ColorSpace::Range::Limited } },
{ V4L2_COLORSPACE_JPEG, ColorSpace::Sycc },
{ V4L2_COLORSPACE_SMPTE170M, ColorSpace::Smpte170m },
{ V4L2_COLORSPACE_REC709, ColorSpace::Rec709 },
@@ -17,11 +17,11 @@
#include <linux/media-bus-format.h>
#include <linux/v4l2-subdev.h>
-#include <libcamera/geometry.h>
-
#include <libcamera/base/log.h>
#include <libcamera/base/utils.h>
+#include <libcamera/geometry.h>
+
#include "libcamera/internal/formats.h"
#include "libcamera/internal/media_device.h"
#include "libcamera/internal/media_object.h"
@@ -606,13 +606,13 @@ int V4L2VideoDevice::open()
if (caps_.isVideoCapture()) {
notifierType = EventNotifier::Read;
bufferType_ = caps_.isMultiplanar()
- ? V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
- : V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ ? V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+ : V4L2_BUF_TYPE_VIDEO_CAPTURE;
} else if (caps_.isVideoOutput()) {
notifierType = EventNotifier::Write;
bufferType_ = caps_.isMultiplanar()
- ? V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE
- : V4L2_BUF_TYPE_VIDEO_OUTPUT;
+ ? V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE
+ : V4L2_BUF_TYPE_VIDEO_OUTPUT;
} else if (caps_.isMetaCapture()) {
notifierType = EventNotifier::Read;
bufferType_ = V4L2_BUF_TYPE_META_CAPTURE;
@@ -699,14 +699,14 @@ int V4L2VideoDevice::open(SharedFD handle, enum v4l2_buf_type type)
case V4L2_BUF_TYPE_VIDEO_OUTPUT:
notifierType = EventNotifier::Write;
bufferType_ = caps_.isMultiplanar()
- ? V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE
- : V4L2_BUF_TYPE_VIDEO_OUTPUT;
+ ? V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE
+ : V4L2_BUF_TYPE_VIDEO_OUTPUT;
break;
case V4L2_BUF_TYPE_VIDEO_CAPTURE:
notifierType = EventNotifier::Read;
bufferType_ = caps_.isMultiplanar()
- ? V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
- : V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ ? V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+ : V4L2_BUF_TYPE_VIDEO_CAPTURE;
break;
default:
LOG(V4L2, Error) << "Unsupported buffer type";
@@ -792,7 +792,7 @@ void V4L2VideoDevice::close()
std::string V4L2VideoDevice::logPrefix() const
{
return deviceNode() + "[" + std::to_string(fd()) +
- (V4L2_TYPE_IS_OUTPUT(bufferType_) ? ":out]" : ":cap]");
+ (V4L2_TYPE_IS_OUTPUT(bufferType_) ? ":out]" : ":cap]");
}
/**
@@ -1133,7 +1133,7 @@ std::vector<V4L2PixelFormat> V4L2VideoDevice::enumPixelformats(uint32_t code)
return {};
}
- for (unsigned int index = 0; ; index++) {
+ for (unsigned int index = 0;; index++) {
struct v4l2_fmtdesc pixelformatEnum = {};
pixelformatEnum.index = index;
pixelformatEnum.type = bufferType_;
@@ -1472,9 +1472,9 @@ std::unique_ptr<FrameBuffer> V4L2VideoDevice::createBuffer(unsigned int index)
* account, which is equal to the bytesPerGroup ratio of
* the planes.
*/
- unsigned int stride = format_.planes[0].bpl
- * formatInfo_->planes[i].bytesPerGroup
- / formatInfo_->planes[0].bytesPerGroup;
+ unsigned int stride =
+ format_.planes[0].bpl * formatInfo_->planes[i].bytesPerGroup /
+ formatInfo_->planes[0].bytesPerGroup;
plane.fd = fd;
plane.offset = offset;
@@ -1827,11 +1827,11 @@ FrameBuffer *V4L2VideoDevice::dequeueBuffer()
FrameMetadata &metadata = buffer->_d()->metadata();
metadata.status = buf.flags & V4L2_BUF_FLAG_ERROR
- ? FrameMetadata::FrameError
- : FrameMetadata::FrameSuccess;
+ ? FrameMetadata::FrameError
+ : FrameMetadata::FrameSuccess;
metadata.sequence = buf.sequence;
- metadata.timestamp = buf.timestamp.tv_sec * 1000000000ULL
- + buf.timestamp.tv_usec * 1000ULL;
+ metadata.timestamp =
+ buf.timestamp.tv_sec * 1000000000ULL + buf.timestamp.tv_usec * 1000ULL;
if (V4L2_TYPE_IS_OUTPUT(buf.type))
return buffer;
@@ -1875,7 +1875,7 @@ FrameBuffer *V4L2VideoDevice::dequeueBuffer()
* API.
*/
unsigned int bytesused = multiPlanar ? planes[0].bytesused
- : buf.bytesused;
+ : buf.bytesused;
unsigned int remaining = bytesused;
for (auto [i, plane] : utils::enumerate(buffer->planes())) {
@@ -179,17 +179,17 @@ void V4L2CameraProxy::setFmtFromConfig(const StreamConfiguration &streamConfig)
{
const Size &size = streamConfig.size;
- v4l2PixFormat_.width = size.width;
- v4l2PixFormat_.height = size.height;
- v4l2PixFormat_.pixelformat = V4L2PixelFormat::fromPixelFormat(streamConfig.pixelFormat)[0];
- v4l2PixFormat_.field = V4L2_FIELD_NONE;
+ v4l2PixFormat_.width = size.width;
+ v4l2PixFormat_.height = size.height;
+ v4l2PixFormat_.pixelformat = V4L2PixelFormat::fromPixelFormat(streamConfig.pixelFormat)[0];
+ v4l2PixFormat_.field = V4L2_FIELD_NONE;
v4l2PixFormat_.bytesperline = streamConfig.stride;
- v4l2PixFormat_.sizeimage = streamConfig.frameSize;
- v4l2PixFormat_.colorspace = V4L2_COLORSPACE_SRGB;
- v4l2PixFormat_.priv = V4L2_PIX_FMT_PRIV_MAGIC;
- v4l2PixFormat_.ycbcr_enc = V4L2_YCBCR_ENC_DEFAULT;
+ v4l2PixFormat_.sizeimage = streamConfig.frameSize;
+ v4l2PixFormat_.colorspace = V4L2_COLORSPACE_SRGB;
+ v4l2PixFormat_.priv = V4L2_PIX_FMT_PRIV_MAGIC;
+ v4l2PixFormat_.ycbcr_enc = V4L2_YCBCR_ENC_DEFAULT;
v4l2PixFormat_.quantization = V4L2_QUANTIZATION_DEFAULT;
- v4l2PixFormat_.xfer_func = V4L2_XFER_FUNC_DEFAULT;
+ v4l2PixFormat_.xfer_func = V4L2_XFER_FUNC_DEFAULT;
sizeimage_ = streamConfig.frameSize;
}
@@ -207,11 +207,8 @@ void V4L2CameraProxy::querycap(std::shared_ptr<Camera> camera)
sizeof(capabilities_.bus_info));
/* \todo Put this in a header/config somewhere. */
capabilities_.version = KERNEL_VERSION(5, 2, 0);
- capabilities_.device_caps = V4L2_CAP_VIDEO_CAPTURE
- | V4L2_CAP_STREAMING
- | V4L2_CAP_EXT_PIX_FORMAT;
- capabilities_.capabilities = capabilities_.device_caps
- | V4L2_CAP_DEVICE_CAPS;
+ capabilities_.device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING | V4L2_CAP_EXT_PIX_FORMAT;
+ capabilities_.capabilities = capabilities_.device_caps | V4L2_CAP_DEVICE_CAPS;
memset(capabilities_.reserved, 0, sizeof(capabilities_.reserved));
}
@@ -330,17 +327,17 @@ int V4L2CameraProxy::tryFormat(struct v4l2_format *arg)
return -EINVAL;
}
- arg->fmt.pix.width = config.size.width;
- arg->fmt.pix.height = config.size.height;
- arg->fmt.pix.pixelformat = V4L2PixelFormat::fromPixelFormat(config.pixelFormat)[0];
- arg->fmt.pix.field = V4L2_FIELD_NONE;
+ arg->fmt.pix.width = config.size.width;
+ arg->fmt.pix.height = config.size.height;
+ arg->fmt.pix.pixelformat = V4L2PixelFormat::fromPixelFormat(config.pixelFormat)[0];
+ arg->fmt.pix.field = V4L2_FIELD_NONE;
arg->fmt.pix.bytesperline = config.stride;
- arg->fmt.pix.sizeimage = config.frameSize;
- arg->fmt.pix.colorspace = V4L2_COLORSPACE_SRGB;
- arg->fmt.pix.priv = V4L2_PIX_FMT_PRIV_MAGIC;
- arg->fmt.pix.ycbcr_enc = V4L2_YCBCR_ENC_DEFAULT;
+ arg->fmt.pix.sizeimage = config.frameSize;
+ arg->fmt.pix.colorspace = V4L2_COLORSPACE_SRGB;
+ arg->fmt.pix.priv = V4L2_PIX_FMT_PRIV_MAGIC;
+ arg->fmt.pix.ycbcr_enc = V4L2_YCBCR_ENC_DEFAULT;
arg->fmt.pix.quantization = V4L2_QUANTIZATION_DEFAULT;
- arg->fmt.pix.xfer_func = V4L2_XFER_FUNC_DEFAULT;
+ arg->fmt.pix.xfer_func = V4L2_XFER_FUNC_DEFAULT;
return 0;
}
@@ -5,8 +5,6 @@
* V4L2 compatibility layer
*/
-#include "v4l2_compat_manager.h"
-
#include <assert.h>
#include <fcntl.h>
#include <stdarg.h>
@@ -18,17 +16,19 @@
#include <libcamera/base/utils.h>
+#include "v4l2_compat_manager.h"
+
#define LIBCAMERA_PUBLIC __attribute__((visibility("default")))
using namespace libcamera;
-#define extract_va_arg(type, arg, last) \
-{ \
- va_list ap; \
- va_start(ap, last); \
- arg = va_arg(ap, type); \
- va_end(ap); \
-}
+#define extract_va_arg(type, arg, last) \
+ { \
+ va_list ap; \
+ va_start(ap, last); \
+ arg = va_arg(ap, type); \
+ va_end(ap); \
+ }
namespace {
@@ -164,5 +164,4 @@ LIBCAMERA_PUBLIC int ioctl(int fd, unsigned long request, ...)
return V4L2CompatManager::instance()->ioctl(fd, request, arg);
}
-
}
@@ -171,8 +171,8 @@ int V4L2CompatManager::openat(int dirfd, const char *path, int oflag, mode_t mod
fops_.close(fd);
int efd = eventfd(0, EFD_SEMAPHORE |
- ((oflag & O_CLOEXEC) ? EFD_CLOEXEC : 0) |
- ((oflag & O_NONBLOCK) ? EFD_NONBLOCK : 0));
+ ((oflag & O_CLOEXEC) ? EFD_CLOEXEC : 0) |
+ ((oflag & O_NONBLOCK) ? EFD_NONBLOCK : 0));
if (efd < 0)
return efd;
The LSP autoformatter doesn't like some of the current formatting, let's make it happy. Signed-off-by: Milan Zamazal <mzamazal@redhat.com> --- src/libcamera/v4l2_device.cpp | 17 ++++++------ src/libcamera/v4l2_subdevice.cpp | 4 +-- src/libcamera/v4l2_videodevice.cpp | 36 ++++++++++++------------- src/v4l2/v4l2_camera_proxy.cpp | 43 ++++++++++++++---------------- src/v4l2/v4l2_compat.cpp | 19 +++++++------ src/v4l2/v4l2_compat_manager.cpp | 4 +-- 6 files changed, 60 insertions(+), 63 deletions(-)