{"id":4012,"url":"https://patchwork.libcamera.org/api/patches/4012/?format=json","web_url":"https://patchwork.libcamera.org/patch/4012/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20200609232323.29628-8-laurent.pinchart@ideasonboard.com>","date":"2020-06-09T23:23:23","name":"[libcamera-devel,v2,7/7] libcamera: Replace explicit DRM FourCCs with libcamera formats","commit_ref":null,"pull_url":null,"state":"accepted","archived":false,"hash":"d94633cd2c5393d6adbaeafad81f366fee5820a7","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/?format=json","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/4012/mbox/","series":[{"id":982,"url":"https://patchwork.libcamera.org/api/series/982/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=982","date":"2020-06-09T23:23:16","name":"Introduce formats:: namespace for libcamera pixel formats","version":2,"mbox":"https://patchwork.libcamera.org/series/982/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/4012/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/4012/checks/","tags":{},"headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 7A21C63D19\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 10 Jun 2020 01:23:51 +0200 (CEST)","from pendragon.bb.dnainternet.fi (81-175-216-236.bb.dnainternet.fi\n\t[81.175.216.236])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 18D5531F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 10 Jun 2020 01:23:51 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"QxkXBaO1\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1591745031;\n\tbh=1/BjHMWvMoiHgp0bMXxzpi6ha9GVh3fYfmOQYwfIjQ4=;\n\th=From:To:Subject:Date:In-Reply-To:References:From;\n\tb=QxkXBaO1nwv8LEqX+OZ3xkgMwwAY6N/f2589TYsNccS8J68DxwrvVYnEwpwqw820O\n\trcNhOfQYPegE2kVfLn9MxozD8Y0BIYR5J2LhxLGvHgqlORLg0eNid/8Pmnc/Iu9kNo\n\tuMQHpvbMs6eLx6Gv9SKZ360ZQjTmYyJ55EcZxVzc=","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"libcamera-devel@lists.libcamera.org","Date":"Wed, 10 Jun 2020 02:23:23 +0300","Message-Id":"<20200609232323.29628-8-laurent.pinchart@ideasonboard.com>","X-Mailer":"git-send-email 2.27.0","In-Reply-To":"<20200609232323.29628-1-laurent.pinchart@ideasonboard.com>","References":"<20200609232323.29628-1-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH v2 7/7] libcamera: Replace explicit DRM\n\tFourCCs with libcamera formats","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Tue, 09 Jun 2020 23:23:52 -0000"},"content":"Use the new pixel format constants to replace usage of macros from\ndrm_fourcc.h.\n\nSigned-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n---\n include/libcamera/pixel_format.h   |   2 -\n src/android/camera_device.cpp      |   9 +-\n src/libcamera/formats.cpp          | 146 +++++++++++++++--------------\n src/libcamera/v4l2_pixelformat.cpp |  83 ++++++++--------\n 4 files changed, 116 insertions(+), 124 deletions(-)","diff":"diff --git a/include/libcamera/pixel_format.h b/include/libcamera/pixel_format.h\nindex 8dfeb8922418..6727315a11b1 100644\n--- a/include/libcamera/pixel_format.h\n+++ b/include/libcamera/pixel_format.h\n@@ -11,8 +11,6 @@\n #include <stdint.h>\n #include <string>\n \n-#include <linux/drm_fourcc.h>\n-\n namespace libcamera {\n \n class PixelFormat\ndiff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\nindex 7a0dc530e35b..0fc2fa37c3b8 100644\n--- a/src/android/camera_device.cpp\n+++ b/src/android/camera_device.cpp\n@@ -12,6 +12,7 @@\n #include <vector>\n \n #include <libcamera/controls.h>\n+#include <libcamera/formats.h>\n #include <libcamera/property_ids.h>\n \n #include \"libcamera/internal/log.h\"\n@@ -58,13 +59,13 @@ struct Camera3Format {\n const std::map<int, const Camera3Format> camera3FormatsMap = {\n \t{\n \t\tHAL_PIXEL_FORMAT_BLOB, {\n-\t\t\t{ PixelFormat(DRM_FORMAT_MJPEG) },\n+\t\t\t{ formats::MJPEG },\n \t\t\tANDROID_SCALER_AVAILABLE_FORMATS_BLOB,\n \t\t\t\"BLOB\"\n \t\t}\n \t}, {\n \t\tHAL_PIXEL_FORMAT_YCbCr_420_888, {\n-\t\t\t{ PixelFormat(DRM_FORMAT_NV12), PixelFormat(DRM_FORMAT_NV21) },\n+\t\t\t{ formats::NV12, formats::NV21 },\n \t\t\tANDROID_SCALER_AVAILABLE_FORMATS_YCbCr_420_888,\n \t\t\t\"YCbCr_420_888\"\n \t\t}\n@@ -74,7 +75,7 @@ const std::map<int, const Camera3Format> camera3FormatsMap = {\n \t\t * usage flag. For now, copy the YCbCr_420 configuration.\n \t\t */\n \t\tHAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, {\n-\t\t\t{ PixelFormat(DRM_FORMAT_NV12), PixelFormat(DRM_FORMAT_NV21) },\n+\t\t\t{ formats::NV12, formats::NV21 },\n \t\t\tANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED,\n \t\t\t\"IMPLEMENTATION_DEFINED\"\n \t\t}\n@@ -264,7 +265,7 @@ int CameraDevice::initializeStreamConfigurations()\n \t\tfor (const PixelFormat &pixelFormat : libcameraFormats) {\n \t\t\t/* \\todo Fixed mapping for JPEG. */\n \t\t\tif (androidFormat == HAL_PIXEL_FORMAT_BLOB) {\n-\t\t\t\tmappedFormat = PixelFormat(DRM_FORMAT_MJPEG);\n+\t\t\t\tmappedFormat = formats::MJPEG;\n \t\t\t\tbreak;\n \t\t\t}\n \ndiff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp\nindex 74c239a5e710..97e986786cc8 100644\n--- a/src/libcamera/formats.cpp\n+++ b/src/libcamera/formats.cpp\n@@ -9,6 +9,8 @@\n \n #include <errno.h>\n \n+#include <libcamera/formats.h>\n+\n #include \"libcamera/internal/log.h\"\n \n /**\n@@ -166,43 +168,43 @@ namespace {\n \n const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{\n \t/* RGB formats. */\n-\t{ PixelFormat(DRM_FORMAT_BGR888), {\n-\t\t.format = PixelFormat(DRM_FORMAT_BGR888),\n+\t{ formats::BGR888, {\n+\t\t.format = formats::BGR888,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_RGB24),\n \t\t.bitsPerPixel = 24,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRGB,\n \t\t.packed = false,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_RGB888), {\n-\t\t.format = PixelFormat(DRM_FORMAT_RGB888),\n+\t{ formats::RGB888, {\n+\t\t.format = formats::RGB888,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_BGR24),\n \t\t.bitsPerPixel = 24,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRGB,\n \t\t.packed = false,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_ABGR8888), {\n-\t\t.format = PixelFormat(DRM_FORMAT_ABGR8888),\n+\t{ formats::ABGR8888, {\n+\t\t.format = formats::ABGR8888,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_RGBA32),\n \t\t.bitsPerPixel = 32,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRGB,\n \t\t.packed = false,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_ARGB8888), {\n-\t\t.format = PixelFormat(DRM_FORMAT_ARGB8888),\n+\t{ formats::ARGB8888, {\n+\t\t.format = formats::ARGB8888,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_ABGR32),\n \t\t.bitsPerPixel = 32,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRGB,\n \t\t.packed = false,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_BGRA8888), {\n-\t\t.format = PixelFormat(DRM_FORMAT_BGRA8888),\n+\t{ formats::BGRA8888, {\n+\t\t.format = formats::BGRA8888,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_ARGB32),\n \t\t.bitsPerPixel = 32,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRGB,\n \t\t.packed = false,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_RGBA8888), {\n-\t\t.format = PixelFormat(DRM_FORMAT_RGBA8888),\n+\t{ formats::RGBA8888, {\n+\t\t.format = formats::RGBA8888,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_BGRA32),\n \t\t.bitsPerPixel = 32,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRGB,\n@@ -210,29 +212,29 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{\n \t} },\n \n \t/* YUV packed formats. */\n-\t{ PixelFormat(DRM_FORMAT_YUYV), {\n-\t\t.format = PixelFormat(DRM_FORMAT_YUYV),\n+\t{ formats::YUYV, {\n+\t\t.format = formats::YUYV,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_YUYV),\n \t\t.bitsPerPixel = 16,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingYUV,\n \t\t.packed = false,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_YVYU), {\n-\t\t.format = PixelFormat(DRM_FORMAT_YVYU),\n+\t{ formats::YVYU, {\n+\t\t.format = formats::YVYU,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_YVYU),\n \t\t.bitsPerPixel = 16,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingYUV,\n \t\t.packed = false,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_UYVY), {\n-\t\t.format = PixelFormat(DRM_FORMAT_UYVY),\n+\t{ formats::UYVY, {\n+\t\t.format = formats::UYVY,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_UYVY),\n \t\t.bitsPerPixel = 16,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingYUV,\n \t\t.packed = false,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_VYUY), {\n-\t\t.format = PixelFormat(DRM_FORMAT_VYUY),\n+\t{ formats::VYUY, {\n+\t\t.format = formats::VYUY,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_VYUY),\n \t\t.bitsPerPixel = 16,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingYUV,\n@@ -240,29 +242,29 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{\n \t} },\n \n \t/* YUV planar formats. */\n-\t{ PixelFormat(DRM_FORMAT_NV16), {\n-\t\t.format = PixelFormat(DRM_FORMAT_NV16),\n+\t{ formats::NV16, {\n+\t\t.format = formats::NV16,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_NV16),\n \t\t.bitsPerPixel = 16,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingYUV,\n \t\t.packed = false,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_NV61), {\n-\t\t.format = PixelFormat(DRM_FORMAT_NV61),\n+\t{ formats::NV61, {\n+\t\t.format = formats::NV61,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_NV61),\n \t\t.bitsPerPixel = 16,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingYUV,\n \t\t.packed = false,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_NV12), {\n-\t\t.format = PixelFormat(DRM_FORMAT_NV12),\n+\t{ formats::NV12, {\n+\t\t.format = formats::NV12,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_NV12),\n \t\t.bitsPerPixel = 12,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingYUV,\n \t\t.packed = false,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_NV21), {\n-\t\t.format = PixelFormat(DRM_FORMAT_NV21),\n+\t{ formats::NV21, {\n+\t\t.format = formats::NV21,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_NV21),\n \t\t.bitsPerPixel = 12,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingYUV,\n@@ -270,8 +272,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{\n \t} },\n \n \t/* Greyscale formats. */\n-\t{ PixelFormat(DRM_FORMAT_R8), {\n-\t\t.format = PixelFormat(DRM_FORMAT_R8),\n+\t{ formats::R8, {\n+\t\t.format = formats::R8,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_GREY),\n \t\t.bitsPerPixel = 8,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingYUV,\n@@ -279,141 +281,141 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{\n \t} },\n \n \t/* Bayer formats. */\n-\t{ PixelFormat(DRM_FORMAT_SBGGR8), {\n-\t\t.format = PixelFormat(DRM_FORMAT_SBGGR8),\n+\t{ formats::SBGGR8, {\n+\t\t.format = formats::SBGGR8,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SBGGR8),\n \t\t.bitsPerPixel = 8,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n \t\t.packed = false,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_SGBRG8), {\n-\t\t.format = PixelFormat(DRM_FORMAT_SGBRG8),\n+\t{ formats::SGBRG8, {\n+\t\t.format = formats::SGBRG8,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGBRG8),\n \t\t.bitsPerPixel = 8,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n \t\t.packed = false,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_SGRBG8), {\n-\t\t.format = PixelFormat(DRM_FORMAT_SGRBG8),\n+\t{ formats::SGRBG8, {\n+\t\t.format = formats::SGRBG8,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGRBG8),\n \t\t.bitsPerPixel = 8,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n \t\t.packed = false,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_SRGGB8), {\n-\t\t.format = PixelFormat(DRM_FORMAT_SRGGB8),\n+\t{ formats::SRGGB8, {\n+\t\t.format = formats::SRGGB8,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SRGGB8),\n \t\t.bitsPerPixel = 8,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n \t\t.packed = false,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_SBGGR10), {\n-\t\t.format = PixelFormat(DRM_FORMAT_SBGGR10),\n+\t{ formats::SBGGR10, {\n+\t\t.format = formats::SBGGR10,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SBGGR10),\n \t\t.bitsPerPixel = 10,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n \t\t.packed = false,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_SGBRG10), {\n-\t\t.format = PixelFormat(DRM_FORMAT_SGBRG10),\n+\t{ formats::SGBRG10, {\n+\t\t.format = formats::SGBRG10,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGBRG10),\n \t\t.bitsPerPixel = 10,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n \t\t.packed = false,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_SGRBG10), {\n-\t\t.format = PixelFormat(DRM_FORMAT_SGRBG10),\n+\t{ formats::SGRBG10, {\n+\t\t.format = formats::SGRBG10,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGRBG10),\n \t\t.bitsPerPixel = 10,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n \t\t.packed = false,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_SRGGB10), {\n-\t\t.format = PixelFormat(DRM_FORMAT_SRGGB10),\n+\t{ formats::SRGGB10, {\n+\t\t.format = formats::SRGGB10,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10),\n \t\t.bitsPerPixel = 10,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n \t\t.packed = false,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_SBGGR10, MIPI_FORMAT_MOD_CSI2_PACKED), {\n-\t\t.format = PixelFormat(DRM_FORMAT_SBGGR10, MIPI_FORMAT_MOD_CSI2_PACKED),\n+\t{ formats::SBGGR10_CSI2P, {\n+\t\t.format = formats::SBGGR10_CSI2P,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SBGGR10P),\n \t\t.bitsPerPixel = 10,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n \t\t.packed = true,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_SGBRG10, MIPI_FORMAT_MOD_CSI2_PACKED), {\n-\t\t.format = PixelFormat(DRM_FORMAT_SGBRG10, MIPI_FORMAT_MOD_CSI2_PACKED),\n+\t{ formats::SGBRG10_CSI2P, {\n+\t\t.format = formats::SGBRG10_CSI2P,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGBRG10P),\n \t\t.bitsPerPixel = 10,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n \t\t.packed = true,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_SGRBG10, MIPI_FORMAT_MOD_CSI2_PACKED), {\n-\t\t.format = PixelFormat(DRM_FORMAT_SGRBG10, MIPI_FORMAT_MOD_CSI2_PACKED),\n+\t{ formats::SGRBG10_CSI2P, {\n+\t\t.format = formats::SGRBG10_CSI2P,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGRBG10P),\n \t\t.bitsPerPixel = 10,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n \t\t.packed = true,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_SRGGB10, MIPI_FORMAT_MOD_CSI2_PACKED), {\n-\t\t.format = PixelFormat(DRM_FORMAT_SRGGB10, MIPI_FORMAT_MOD_CSI2_PACKED),\n+\t{ formats::SRGGB10_CSI2P, {\n+\t\t.format = formats::SRGGB10_CSI2P,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10P),\n \t\t.bitsPerPixel = 10,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n \t\t.packed = true,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_SBGGR12), {\n-\t\t.format = PixelFormat(DRM_FORMAT_SBGGR12),\n+\t{ formats::SBGGR12, {\n+\t\t.format = formats::SBGGR12,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SBGGR12),\n \t\t.bitsPerPixel = 12,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n \t\t.packed = false,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_SGBRG12), {\n-\t\t.format = PixelFormat(DRM_FORMAT_SGBRG12),\n+\t{ formats::SGBRG12, {\n+\t\t.format = formats::SGBRG12,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGBRG12),\n \t\t.bitsPerPixel = 12,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n \t\t.packed = false,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_SGRBG12), {\n-\t\t.format = PixelFormat(DRM_FORMAT_SGRBG12),\n+\t{ formats::SGRBG12, {\n+\t\t.format = formats::SGRBG12,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12),\n \t\t.bitsPerPixel = 12,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n \t\t.packed = false,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_SRGGB12), {\n-\t\t.format = PixelFormat(DRM_FORMAT_SRGGB12),\n+\t{ formats::SRGGB12, {\n+\t\t.format = formats::SRGGB12,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12),\n \t\t.bitsPerPixel = 12,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n \t\t.packed = false,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_SBGGR12, MIPI_FORMAT_MOD_CSI2_PACKED), {\n-\t\t.format = PixelFormat(DRM_FORMAT_SBGGR12, MIPI_FORMAT_MOD_CSI2_PACKED),\n+\t{ formats::SBGGR12_CSI2P, {\n+\t\t.format = formats::SBGGR12_CSI2P,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SBGGR12P),\n \t\t.bitsPerPixel = 12,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n \t\t.packed = true,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_SGBRG12, MIPI_FORMAT_MOD_CSI2_PACKED), {\n-\t\t.format = PixelFormat(DRM_FORMAT_SGBRG12, MIPI_FORMAT_MOD_CSI2_PACKED),\n+\t{ formats::SGBRG12_CSI2P, {\n+\t\t.format = formats::SGBRG12_CSI2P,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGBRG12P),\n \t\t.bitsPerPixel = 12,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n \t\t.packed = true,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_SGRBG12, MIPI_FORMAT_MOD_CSI2_PACKED), {\n-\t\t.format = PixelFormat(DRM_FORMAT_SGRBG12, MIPI_FORMAT_MOD_CSI2_PACKED),\n+\t{ formats::SGRBG12_CSI2P, {\n+\t\t.format = formats::SGRBG12_CSI2P,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12P),\n \t\t.bitsPerPixel = 12,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n \t\t.packed = true,\n \t} },\n-\t{ PixelFormat(DRM_FORMAT_SRGGB12, MIPI_FORMAT_MOD_CSI2_PACKED), {\n-\t\t.format = PixelFormat(DRM_FORMAT_SRGGB12, MIPI_FORMAT_MOD_CSI2_PACKED),\n+\t{ formats::SRGGB12_CSI2P, {\n+\t\t.format = formats::SRGGB12_CSI2P,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12P),\n \t\t.bitsPerPixel = 12,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n@@ -421,8 +423,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{\n \t} },\n \n \t/* Compressed formats. */\n-\t{ PixelFormat(DRM_FORMAT_MJPEG), {\n-\t\t.format = PixelFormat(DRM_FORMAT_MJPEG),\n+\t{ formats::MJPEG, {\n+\t\t.format = formats::MJPEG,\n \t\t.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_MJPEG),\n \t\t.bitsPerPixel = 0,\n \t\t.colourEncoding = PixelFormatInfo::ColourEncodingYUV,\ndiff --git a/src/libcamera/v4l2_pixelformat.cpp b/src/libcamera/v4l2_pixelformat.cpp\nindex 94fae470f926..741f6c2646bc 100644\n--- a/src/libcamera/v4l2_pixelformat.cpp\n+++ b/src/libcamera/v4l2_pixelformat.cpp\n@@ -12,8 +12,7 @@\n #include <map>\n #include <string.h>\n \n-#include <linux/drm_fourcc.h>\n-\n+#include <libcamera/formats.h>\n #include <libcamera/pixel_format.h>\n \n #include \"libcamera/internal/formats.h\"\n@@ -46,60 +45,52 @@ namespace {\n \n const std::map<V4L2PixelFormat, PixelFormat> vpf2pf{\n \t/* RGB formats. */\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_RGB24), PixelFormat(DRM_FORMAT_BGR888) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_BGR24), PixelFormat(DRM_FORMAT_RGB888) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_RGBA32), PixelFormat(DRM_FORMAT_ABGR8888) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_ABGR32), PixelFormat(DRM_FORMAT_ARGB8888) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_ARGB32), PixelFormat(DRM_FORMAT_BGRA8888) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_BGRA32), PixelFormat(DRM_FORMAT_RGBA8888) },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_RGB24), formats::BGR888 },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_BGR24), formats::RGB888 },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_RGBA32), formats::ABGR8888 },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_ABGR32), formats::ARGB8888 },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_ARGB32), formats::BGRA8888 },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_BGRA32), formats::RGBA8888 },\n \n \t/* YUV packed formats. */\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_YUYV), PixelFormat(DRM_FORMAT_YUYV) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_YVYU), PixelFormat(DRM_FORMAT_YVYU) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_UYVY), PixelFormat(DRM_FORMAT_UYVY) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_VYUY), PixelFormat(DRM_FORMAT_VYUY) },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_YUYV), formats::YUYV },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_YVYU), formats::YVYU },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_UYVY), formats::UYVY },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_VYUY), formats::VYUY },\n \n \t/* YUV planar formats. */\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_NV16), PixelFormat(DRM_FORMAT_NV16) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_NV61), PixelFormat(DRM_FORMAT_NV61) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_NV12), PixelFormat(DRM_FORMAT_NV12) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_NV21), PixelFormat(DRM_FORMAT_NV21) },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_NV16), formats::NV16 },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_NV61), formats::NV61 },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_NV12), formats::NV12 },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_NV21), formats::NV21 },\n \n \t/* Greyscale formats. */\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_GREY), PixelFormat(DRM_FORMAT_R8) },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_GREY), formats::R8 },\n \n \t/* Bayer formats. */\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_SBGGR8), PixelFormat(DRM_FORMAT_SBGGR8) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGBRG8), PixelFormat(DRM_FORMAT_SGBRG8) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGRBG8), PixelFormat(DRM_FORMAT_SGRBG8) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_SRGGB8), PixelFormat(DRM_FORMAT_SRGGB8) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_SBGGR10), PixelFormat(DRM_FORMAT_SBGGR10) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGBRG10), PixelFormat(DRM_FORMAT_SGBRG10) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGRBG10), PixelFormat(DRM_FORMAT_SGRBG10) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10), PixelFormat(DRM_FORMAT_SRGGB10) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_SBGGR10P),\n-\t  PixelFormat(DRM_FORMAT_SBGGR10, MIPI_FORMAT_MOD_CSI2_PACKED) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGBRG10P),\n-\t  PixelFormat(DRM_FORMAT_SGBRG10, MIPI_FORMAT_MOD_CSI2_PACKED) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGRBG10P),\n-\t  PixelFormat(DRM_FORMAT_SGRBG10, MIPI_FORMAT_MOD_CSI2_PACKED) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10P),\n-\t  PixelFormat(DRM_FORMAT_SRGGB10, MIPI_FORMAT_MOD_CSI2_PACKED) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_SBGGR12), PixelFormat(DRM_FORMAT_SBGGR12) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGBRG12), PixelFormat(DRM_FORMAT_SGBRG12) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12), PixelFormat(DRM_FORMAT_SGRBG12) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12), PixelFormat(DRM_FORMAT_SRGGB12) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_SBGGR12P),\n-\t  PixelFormat(DRM_FORMAT_SBGGR12, MIPI_FORMAT_MOD_CSI2_PACKED) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGBRG12P),\n-\t  PixelFormat(DRM_FORMAT_SGBRG12, MIPI_FORMAT_MOD_CSI2_PACKED) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12P),\n-\t  PixelFormat(DRM_FORMAT_SGRBG12, MIPI_FORMAT_MOD_CSI2_PACKED) },\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12P),\n-\t  PixelFormat(DRM_FORMAT_SRGGB12, MIPI_FORMAT_MOD_CSI2_PACKED) },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_SBGGR8), formats::SBGGR8 },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGBRG8), formats::SGBRG8 },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGRBG8), formats::SGRBG8 },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_SRGGB8), formats::SRGGB8 },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_SBGGR10), formats::SBGGR10 },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGBRG10), formats::SGBRG10 },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGRBG10), formats::SGRBG10 },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10), formats::SRGGB10 },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_SBGGR10P), formats::SBGGR10_CSI2P },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGBRG10P), formats::SGBRG10_CSI2P },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGRBG10P), formats::SGRBG10_CSI2P },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10P), formats::SRGGB10_CSI2P },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_SBGGR12), formats::SBGGR12 },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGBRG12), formats::SGBRG12 },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12), formats::SGRBG12 },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12), formats::SRGGB12 },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_SBGGR12P), formats::SBGGR12_CSI2P },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGBRG12P), formats::SGBRG12_CSI2P },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12P), formats::SGRBG12_CSI2P },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12P), formats::SRGGB12_CSI2P },\n \n \t/* Compressed formats. */\n-\t{ V4L2PixelFormat(V4L2_PIX_FMT_MJPEG), PixelFormat(DRM_FORMAT_MJPEG) },\n+\t{ V4L2PixelFormat(V4L2_PIX_FMT_MJPEG), formats::MJPEG },\n };\n \n } /* namespace */\n","prefixes":["libcamera-devel","v2","7/7"]}