[libcamera-devel] [PATCH v2 7/8] libcamera: PixelFormat: Make constructor explicit
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Tue Mar 17 10:16:03 CET 2020
Hi Niklas,
Thank you for the patch.
On Tue, Mar 17, 2020 at 04:52:38AM +0100, Niklas Söderlund wrote:
> From: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
>
> To achieve the goal of preventing unwanted conversion between a DRM and
> a V4L2 FourCC, make the PixelFormat constructor that takes an integer
> value explicit. All users of V4L2 pixel formats flagged by the compiler
> are fixed.
>
> While at it make the compare operations part of PixelFormat class.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> [Niklas: Make the compare operations part of PixelFormat]
I'd move this to the patch that introduces the operators. When I
mentioned they can be made member functions because the constructor is
explicit, it wasn't that they couldn't with an implicit constructor, but
that it's a good practice to have non-member operators in that case to
avoid the two following operations to have different behaviours:
PixelFormat format;
uint32_t fourcc;
if (format == fourcc) { ... } /* Compiles */
if (fourcc == format) { ... } /* Doesn't compile */
Unless we have occurrences of the second in the code, I would make the
operators member functions in patch 6/8 to avoid the churn.
> Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> ---
> include/libcamera/pixelformats.h | 10 ++---
> src/gstreamer/gstlibcamera-utils.cpp | 4 +-
> src/libcamera/pipeline/ipu3/ipu3.cpp | 6 +--
> src/libcamera/pipeline/rkisp1/rkisp1.cpp | 20 ++++-----
> src/libcamera/pipeline/vimc.cpp | 12 ++---
> src/libcamera/pixelformats.cpp | 57 ++++++++++++------------
> src/libcamera/v4l2_videodevice.cpp | 26 +++++------
> src/v4l2/v4l2_camera_proxy.cpp | 28 ++++++------
> test/stream/stream_formats.cpp | 24 +++++-----
> test/v4l2_videodevice/buffer_cache.cpp | 2 +-
> 10 files changed, 94 insertions(+), 95 deletions(-)
>
> diff --git a/include/libcamera/pixelformats.h b/include/libcamera/pixelformats.h
> index 5ba1ba1b324272b9..3285941382ccdd96 100644
> --- a/include/libcamera/pixelformats.h
> +++ b/include/libcamera/pixelformats.h
> @@ -17,7 +17,11 @@ class PixelFormat
> {
> public:
> PixelFormat();
> - PixelFormat(uint32_t fourcc, const std::set<uint64_t> &modifiers = {});
> + explicit PixelFormat(uint32_t fourcc, const std::set<uint64_t> &modifiers = {});
> +
> + bool operator==(const PixelFormat &other) const;
> + bool operator!=(const PixelFormat &other) const;
> + bool operator<(const PixelFormat &other) const;
>
> uint32_t fourcc() const { return fourcc_; }
> const std::set<uint64_t> &modifiers() const { return modifiers_; }
> @@ -28,10 +32,6 @@ private:
> std::set<uint64_t> modifiers_;
> };
>
> -bool operator==(const PixelFormat &lhs, const PixelFormat &rhs);
> -bool operator!=(const PixelFormat &lhs, const PixelFormat &rhs);
> -bool operator<(const PixelFormat &lhs, const PixelFormat &rhs);
> -
> } /* namespace libcamera */
>
> #endif /* __LIBCAMERA_PIXEL_FORMATS_H__ */
> diff --git a/src/gstreamer/gstlibcamera-utils.cpp b/src/gstreamer/gstlibcamera-utils.cpp
> index f21e94c3eef92737..c13b0ca245386168 100644
> --- a/src/gstreamer/gstlibcamera-utils.cpp
> +++ b/src/gstreamer/gstlibcamera-utils.cpp
> @@ -154,9 +154,9 @@ gst_libcamera_configure_stream_from_caps(StreamConfiguration &stream_cfg,
> if (gst_structure_has_name(s, "video/x-raw")) {
> const gchar *format = gst_structure_get_string(s, "format");
> gst_format = gst_video_format_from_string(format);
> - stream_cfg.pixelFormat = gst_format_to_drm(gst_format);
> + stream_cfg.pixelFormat = PixelFormat(gst_format_to_drm(gst_format));
> } else if (gst_structure_has_name(s, "image/jpeg")) {
> - stream_cfg.pixelFormat = DRM_FORMAT_MJPEG;
> + stream_cfg.pixelFormat = PixelFormat(DRM_FORMAT_MJPEG);
> } else {
> g_critical("Unsupported media type: %s", gst_structure_get_name(s));
> }
> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
> index 0c2a217c9ea8f6ba..52b6d48aca4394c6 100644
> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp
> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
> @@ -246,7 +246,7 @@ IPU3CameraConfiguration::IPU3CameraConfiguration(Camera *camera,
> void IPU3CameraConfiguration::adjustStream(StreamConfiguration &cfg, bool scale)
> {
> /* The only pixel format the driver supports is NV12. */
> - cfg.pixelFormat = DRM_FORMAT_NV12;
> + cfg.pixelFormat = PixelFormat(DRM_FORMAT_NV12);
>
> if (scale) {
> /*
> @@ -401,7 +401,7 @@ CameraConfiguration *PipelineHandlerIPU3::generateConfiguration(Camera *camera,
> StreamConfiguration cfg = {};
> IPU3Stream *stream = nullptr;
>
> - cfg.pixelFormat = DRM_FORMAT_NV12;
> + cfg.pixelFormat = PixelFormat(DRM_FORMAT_NV12);
>
> switch (role) {
> case StreamRole::StillCapture:
> @@ -1079,7 +1079,7 @@ int ImgUDevice::configureOutput(ImgUOutput *output,
> return 0;
>
> V4L2DeviceFormat outputFormat = {};
> - outputFormat.fourcc = dev->toV4L2Fourcc(DRM_FORMAT_NV12);
> + outputFormat.fourcc = dev->toV4L2Fourcc(PixelFormat(DRM_FORMAT_NV12));
> outputFormat.size = cfg.size;
> outputFormat.planesCount = 2;
>
> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> index 8223b82c4a9c773c..3bbe73c3abd9d75e 100644
> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> @@ -431,14 +431,14 @@ RkISP1CameraConfiguration::RkISP1CameraConfiguration(Camera *camera,
>
> CameraConfiguration::Status RkISP1CameraConfiguration::validate()
> {
> - static const std::array<unsigned int, 8> formats{
> - DRM_FORMAT_YUYV,
> - DRM_FORMAT_YVYU,
> - DRM_FORMAT_VYUY,
> - DRM_FORMAT_NV16,
> - DRM_FORMAT_NV61,
> - DRM_FORMAT_NV21,
> - DRM_FORMAT_NV12,
> + static const std::array<PixelFormat, 8> formats{
> + PixelFormat(DRM_FORMAT_YUYV),
> + PixelFormat(DRM_FORMAT_YVYU),
> + PixelFormat(DRM_FORMAT_VYUY),
> + PixelFormat(DRM_FORMAT_NV16),
> + PixelFormat(DRM_FORMAT_NV61),
> + PixelFormat(DRM_FORMAT_NV21),
> + PixelFormat(DRM_FORMAT_NV12),
> /* \todo Add support for 8-bit greyscale to DRM formats */
> };
>
> @@ -460,7 +460,7 @@ CameraConfiguration::Status RkISP1CameraConfiguration::validate()
> if (std::find(formats.begin(), formats.end(), cfg.pixelFormat) ==
> formats.end()) {
> LOG(RkISP1, Debug) << "Adjusting format to NV12";
> - cfg.pixelFormat = DRM_FORMAT_NV12,
> + cfg.pixelFormat = PixelFormat(DRM_FORMAT_NV12),
> status = Adjusted;
> }
>
> @@ -539,7 +539,7 @@ CameraConfiguration *PipelineHandlerRkISP1::generateConfiguration(Camera *camera
> return config;
>
> StreamConfiguration cfg{};
> - cfg.pixelFormat = DRM_FORMAT_NV12;
> + cfg.pixelFormat = PixelFormat(DRM_FORMAT_NV12);
> cfg.size = data->sensor_->resolution();
>
> config->addConfiguration(cfg);
> diff --git a/src/libcamera/pipeline/vimc.cpp b/src/libcamera/pipeline/vimc.cpp
> index 72924bf2f55d0021..8dad2b40ed4fbb2c 100644
> --- a/src/libcamera/pipeline/vimc.cpp
> +++ b/src/libcamera/pipeline/vimc.cpp
> @@ -104,10 +104,10 @@ private:
>
> namespace {
>
> -constexpr std::array<unsigned int, 3> pixelformats{
> - DRM_FORMAT_RGB888,
> - DRM_FORMAT_BGR888,
> - DRM_FORMAT_BGRA8888,
> +const std::array<PixelFormat, 3> pixelformats{
> + PixelFormat(DRM_FORMAT_RGB888),
> + PixelFormat(DRM_FORMAT_BGR888),
> + PixelFormat(DRM_FORMAT_BGRA8888),
> };
>
> } /* namespace */
> @@ -136,7 +136,7 @@ CameraConfiguration::Status VimcCameraConfiguration::validate()
> if (std::find(pixelformats.begin(), pixelformats.end(), cfg.pixelFormat) ==
> pixelformats.end()) {
> LOG(VIMC, Debug) << "Adjusting format to RGB24";
> - cfg.pixelFormat = DRM_FORMAT_BGR888;
> + cfg.pixelFormat = PixelFormat(DRM_FORMAT_BGR888);
> status = Adjusted;
> }
>
> @@ -185,7 +185,7 @@ CameraConfiguration *PipelineHandlerVimc::generateConfiguration(Camera *camera,
>
> StreamConfiguration cfg(formats);
>
> - cfg.pixelFormat = DRM_FORMAT_BGR888;
> + cfg.pixelFormat = PixelFormat(DRM_FORMAT_BGR888);
> cfg.size = { 1920, 1080 };
> cfg.bufferCount = 4;
>
> diff --git a/src/libcamera/pixelformats.cpp b/src/libcamera/pixelformats.cpp
> index fe9a6a2576978647..1c559fe46d406826 100644
> --- a/src/libcamera/pixelformats.cpp
> +++ b/src/libcamera/pixelformats.cpp
> @@ -41,6 +41,34 @@ PixelFormat::PixelFormat(uint32_t fourcc, const std::set<uint64_t> &modifiers)
> {
> }
>
> +/**
> + * \brief Compare pixel formats for equality
> + * \return True if the two pixel formats are equal, false otherwise
> + */
> +bool PixelFormat::operator==(const PixelFormat &other) const
> +{
> + return fourcc_ == other.fourcc() && modifiers_ == other.modifiers_;
> +}
> +
> +/**
> + * \brief Compare pixel formats for inequality
> + * \return True if the two pixel formats are not equal, false otherwise
> + */
> +bool PixelFormat::operator!=(const PixelFormat &other) const
> +{
> + return !(*this == other);
> +}
> +
> +/**
> + * \brief Compare pixel formats for smaller than order
> + * \todo Take modifiers into account if FourCC are equal
> + * \return True if \a this is smaller than \a other, false otherwise
> + */
> +bool PixelFormat::operator<(const PixelFormat &other) const
> +{
> + return fourcc_ < other.fourcc_;
> +}
> +
> /**
> * \fn PixelFormat::fourcc() const
> * \brief Retrieve the pixel format FourCC
> @@ -64,33 +92,4 @@ std::string PixelFormat::toString() const
> return str;
> }
>
> -/**
> - * \brief Compare pixel formats for equality
> - * \return True if the two pixel formats are equal, false otherwise
> - */
> -bool operator==(const PixelFormat &lhs, const PixelFormat &rhs)
> -{
> - return lhs.fourcc() == rhs.fourcc() &&
> - lhs.modifiers() == rhs.modifiers();
> -}
> -
> -/**
> - * \brief Compare pixel formats for inequality
> - * \return True if the two pixel formats are not equal, false otherwise
> - */
> -bool operator!=(const PixelFormat &lhs, const PixelFormat &rhs)
> -{
> - return !(lhs == rhs);
> -}
> -
> -/**
> - * \brief Compare pixel formats for smaller than order
> - * \todo Take modifiers into account if \a lhs == \a rhs.
> - * \return True if \a lhs is smaller than \a rhs, false otherwise
> - */
> -bool operator<(const PixelFormat &lhs, const PixelFormat &rhs)
> -{
> - return lhs.fourcc() < rhs.fourcc();
> -}
> -
> } /* namespace libcamera */
> diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp
> index b5762a7eabcf4e25..d8d711a951d666e9 100644
> --- a/src/libcamera/v4l2_videodevice.cpp
> +++ b/src/libcamera/v4l2_videodevice.cpp
> @@ -1563,39 +1563,39 @@ PixelFormat V4L2VideoDevice::toPixelFormat(uint32_t v4l2Fourcc)
> switch (v4l2Fourcc) {
> /* RGB formats. */
> case V4L2_PIX_FMT_RGB24:
> - return DRM_FORMAT_BGR888;
> + return PixelFormat(DRM_FORMAT_BGR888);
> case V4L2_PIX_FMT_BGR24:
> - return DRM_FORMAT_RGB888;
> + return PixelFormat(DRM_FORMAT_RGB888);
> case V4L2_PIX_FMT_ARGB32:
> - return DRM_FORMAT_BGRA8888;
> + return PixelFormat(DRM_FORMAT_BGRA8888);
>
> /* YUV packed formats. */
> case V4L2_PIX_FMT_YUYV:
> - return DRM_FORMAT_YUYV;
> + return PixelFormat(DRM_FORMAT_YUYV);
> case V4L2_PIX_FMT_YVYU:
> - return DRM_FORMAT_YVYU;
> + return PixelFormat(DRM_FORMAT_YVYU);
> case V4L2_PIX_FMT_UYVY:
> - return DRM_FORMAT_UYVY;
> + return PixelFormat(DRM_FORMAT_UYVY);
> case V4L2_PIX_FMT_VYUY:
> - return DRM_FORMAT_VYUY;
> + return PixelFormat(DRM_FORMAT_VYUY);
>
> /* YUY planar formats. */
> case V4L2_PIX_FMT_NV16:
> case V4L2_PIX_FMT_NV16M:
> - return DRM_FORMAT_NV16;
> + return PixelFormat(DRM_FORMAT_NV16);
> case V4L2_PIX_FMT_NV61:
> case V4L2_PIX_FMT_NV61M:
> - return DRM_FORMAT_NV61;
> + return PixelFormat(DRM_FORMAT_NV61);
> case V4L2_PIX_FMT_NV12:
> case V4L2_PIX_FMT_NV12M:
> - return DRM_FORMAT_NV12;
> + return PixelFormat(DRM_FORMAT_NV12);
> case V4L2_PIX_FMT_NV21:
> case V4L2_PIX_FMT_NV21M:
> - return DRM_FORMAT_NV21;
> + return PixelFormat(DRM_FORMAT_NV21);
>
> /* Compressed formats. */
> case V4L2_PIX_FMT_MJPEG:
> - return DRM_FORMAT_MJPEG;
> + return PixelFormat(DRM_FORMAT_MJPEG);
>
> /* V4L2 formats not yet supported by DRM. */
> case V4L2_PIX_FMT_GREY:
> @@ -1608,7 +1608,7 @@ PixelFormat V4L2VideoDevice::toPixelFormat(uint32_t v4l2Fourcc)
> LogError).stream()
> << "Unsupported V4L2 pixel format "
> << utils::hex(v4l2Fourcc);
> - return 0;
> + return PixelFormat();
> }
> }
>
> diff --git a/src/v4l2/v4l2_camera_proxy.cpp b/src/v4l2/v4l2_camera_proxy.cpp
> index 3bbbbf79cdb475db..55dd69d37bd65897 100644
> --- a/src/v4l2/v4l2_camera_proxy.cpp
> +++ b/src/v4l2/v4l2_camera_proxy.cpp
> @@ -536,21 +536,21 @@ namespace {
>
> static const std::array<PixelFormatInfo, 13> pixelFormatInfo = {{
> /* RGB formats. */
> - { DRM_FORMAT_RGB888, V4L2_PIX_FMT_BGR24, 1, {{ { 24, 1, 1 }, { 0, 0, 0 }, { 0, 0, 0 } }} },
> - { DRM_FORMAT_BGR888, V4L2_PIX_FMT_RGB24, 1, {{ { 24, 1, 1 }, { 0, 0, 0 }, { 0, 0, 0 } }} },
> - { DRM_FORMAT_BGRA8888, V4L2_PIX_FMT_ARGB32, 1, {{ { 32, 1, 1 }, { 0, 0, 0 }, { 0, 0, 0 } }} },
> + { PixelFormat(DRM_FORMAT_RGB888), V4L2_PIX_FMT_BGR24, 1, {{ { 24, 1, 1 }, { 0, 0, 0 }, { 0, 0, 0 } }} },
> + { PixelFormat(DRM_FORMAT_BGR888), V4L2_PIX_FMT_RGB24, 1, {{ { 24, 1, 1 }, { 0, 0, 0 }, { 0, 0, 0 } }} },
> + { PixelFormat(DRM_FORMAT_BGRA8888), V4L2_PIX_FMT_ARGB32, 1, {{ { 32, 1, 1 }, { 0, 0, 0 }, { 0, 0, 0 } }} },
> /* YUV packed formats. */
> - { DRM_FORMAT_UYVY, V4L2_PIX_FMT_UYVY, 1, {{ { 16, 1, 1 }, { 0, 0, 0 }, { 0, 0, 0 } }} },
> - { DRM_FORMAT_VYUY, V4L2_PIX_FMT_VYUY, 1, {{ { 16, 1, 1 }, { 0, 0, 0 }, { 0, 0, 0 } }} },
> - { DRM_FORMAT_YUYV, V4L2_PIX_FMT_YUYV, 1, {{ { 16, 1, 1 }, { 0, 0, 0 }, { 0, 0, 0 } }} },
> - { DRM_FORMAT_YVYU, V4L2_PIX_FMT_YVYU, 1, {{ { 16, 1, 1 }, { 0, 0, 0 }, { 0, 0, 0 } }} },
> + { PixelFormat(DRM_FORMAT_UYVY), V4L2_PIX_FMT_UYVY, 1, {{ { 16, 1, 1 }, { 0, 0, 0 }, { 0, 0, 0 } }} },
> + { PixelFormat(DRM_FORMAT_VYUY), V4L2_PIX_FMT_VYUY, 1, {{ { 16, 1, 1 }, { 0, 0, 0 }, { 0, 0, 0 } }} },
> + { PixelFormat(DRM_FORMAT_YUYV), V4L2_PIX_FMT_YUYV, 1, {{ { 16, 1, 1 }, { 0, 0, 0 }, { 0, 0, 0 } }} },
> + { PixelFormat(DRM_FORMAT_YVYU), V4L2_PIX_FMT_YVYU, 1, {{ { 16, 1, 1 }, { 0, 0, 0 }, { 0, 0, 0 } }} },
> /* YUY planar formats. */
> - { DRM_FORMAT_NV12, V4L2_PIX_FMT_NV12, 2, {{ { 8, 1, 1 }, { 16, 2, 2 }, { 0, 0, 0 } }} },
> - { DRM_FORMAT_NV21, V4L2_PIX_FMT_NV21, 2, {{ { 8, 1, 1 }, { 16, 2, 2 }, { 0, 0, 0 } }} },
> - { DRM_FORMAT_NV16, V4L2_PIX_FMT_NV16, 2, {{ { 8, 1, 1 }, { 16, 2, 1 }, { 0, 0, 0 } }} },
> - { DRM_FORMAT_NV61, V4L2_PIX_FMT_NV61, 2, {{ { 8, 1, 1 }, { 16, 2, 1 }, { 0, 0, 0 } }} },
> - { DRM_FORMAT_NV24, V4L2_PIX_FMT_NV24, 2, {{ { 8, 1, 1 }, { 16, 2, 1 }, { 0, 0, 0 } }} },
> - { DRM_FORMAT_NV42, V4L2_PIX_FMT_NV42, 2, {{ { 8, 1, 1 }, { 16, 1, 1 }, { 0, 0, 0 } }} },
> + { PixelFormat(DRM_FORMAT_NV12), V4L2_PIX_FMT_NV12, 2, {{ { 8, 1, 1 }, { 16, 2, 2 }, { 0, 0, 0 } }} },
> + { PixelFormat(DRM_FORMAT_NV21), V4L2_PIX_FMT_NV21, 2, {{ { 8, 1, 1 }, { 16, 2, 2 }, { 0, 0, 0 } }} },
> + { PixelFormat(DRM_FORMAT_NV16), V4L2_PIX_FMT_NV16, 2, {{ { 8, 1, 1 }, { 16, 2, 1 }, { 0, 0, 0 } }} },
> + { PixelFormat(DRM_FORMAT_NV61), V4L2_PIX_FMT_NV61, 2, {{ { 8, 1, 1 }, { 16, 2, 1 }, { 0, 0, 0 } }} },
> + { PixelFormat(DRM_FORMAT_NV24), V4L2_PIX_FMT_NV24, 2, {{ { 8, 1, 1 }, { 16, 2, 1 }, { 0, 0, 0 } }} },
> + { PixelFormat(DRM_FORMAT_NV42), V4L2_PIX_FMT_NV42, 2, {{ { 8, 1, 1 }, { 16, 1, 1 }, { 0, 0, 0 } }} },
> }};
>
> } /* namespace */
> @@ -594,7 +594,7 @@ PixelFormat V4L2CameraProxy::v4l2ToDrm(uint32_t format)
> return info.v4l2Format == format;
> });
> if (info == pixelFormatInfo.end())
> - return format;
> + return PixelFormat();
>
> return info->format;
> }
> diff --git a/test/stream/stream_formats.cpp b/test/stream/stream_formats.cpp
> index a391f5cd087d3872..92f1574b8a0b315c 100644
> --- a/test/stream/stream_formats.cpp
> +++ b/test/stream/stream_formats.cpp
> @@ -55,40 +55,40 @@ protected:
> {
> /* Test discrete sizes */
> StreamFormats discrete({
> - { 1, { SizeRange(100, 100), SizeRange(200, 200) } },
> - { 2, { SizeRange(300, 300), SizeRange(400, 400) } },
> + { PixelFormat(1), { SizeRange(100, 100), SizeRange(200, 200) } },
> + { PixelFormat(2), { SizeRange(300, 300), SizeRange(400, 400) } },
> });
>
> - if (testSizes("discrete 1", discrete.sizes(1),
> + if (testSizes("discrete 1", discrete.sizes(PixelFormat(1)),
> { Size(100, 100), Size(200, 200) }))
> return TestFail;
> - if (testSizes("discrete 2", discrete.sizes(2),
> + if (testSizes("discrete 2", discrete.sizes(PixelFormat(2)),
> { Size(300, 300), Size(400, 400) }))
> return TestFail;
>
> /* Test range sizes */
> StreamFormats range({
> - { 1, { SizeRange(640, 480, 640, 480) } },
> - { 2, { SizeRange(640, 480, 800, 600, 8, 8) } },
> - { 3, { SizeRange(640, 480, 800, 600, 16, 16) } },
> - { 4, { SizeRange(128, 128, 4096, 4096, 128, 128) } },
> + { PixelFormat(1), { SizeRange(640, 480, 640, 480) } },
> + { PixelFormat(2), { SizeRange(640, 480, 800, 600, 8, 8) } },
> + { PixelFormat(3), { SizeRange(640, 480, 800, 600, 16, 16) } },
> + { PixelFormat(4), { SizeRange(128, 128, 4096, 4096, 128, 128) } },
> });
>
> - if (testSizes("range 1", range.sizes(1), { Size(640, 480) }))
> + if (testSizes("range 1", range.sizes(PixelFormat(1)), { Size(640, 480) }))
> return TestFail;
>
> - if (testSizes("range 2", range.sizes(2), {
> + if (testSizes("range 2", range.sizes(PixelFormat(2)), {
> Size(640, 480), Size(720, 480),
> Size(720, 576), Size(768, 480),
> Size(800, 600) }))
> return TestFail;
>
> - if (testSizes("range 3", range.sizes(3), {
> + if (testSizes("range 3", range.sizes(PixelFormat(3)), {
> Size(640, 480), Size(720, 480),
> Size(720, 576), Size(768, 480) }))
> return TestFail;
>
> - if (testSizes("range 4", range.sizes(4), {
> + if (testSizes("range 4", range.sizes(PixelFormat(4)), {
> Size(1024, 768), Size(1280, 1024),
> Size(2048, 1152), Size(2048, 1536),
> Size(2560, 2048), Size(3200, 2048), }))
> diff --git a/test/v4l2_videodevice/buffer_cache.cpp b/test/v4l2_videodevice/buffer_cache.cpp
> index c951bc9650dc4e0e..8921605030cfdefb 100644
> --- a/test/v4l2_videodevice/buffer_cache.cpp
> +++ b/test/v4l2_videodevice/buffer_cache.cpp
> @@ -144,7 +144,7 @@ public:
> const unsigned int numBuffers = 8;
>
> StreamConfiguration cfg;
> - cfg.pixelFormat = DRM_FORMAT_YUYV;
> + cfg.pixelFormat = PixelFormat(DRM_FORMAT_YUYV);
> cfg.size = Size(600, 800);
> cfg.bufferCount = numBuffers;
>
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list