[{"id":4932,"web_url":"https://patchwork.libcamera.org/comment/4932/","msgid":"<ba7c97de-2e85-697d-8aa2-63564bb772b1@ideasonboard.com>","date":"2020-05-28T10:16:39","subject":"Re: [libcamera-devel] [PATCH/RFC 10/11] libcamera: pipeline:\n\tReplace explicit DRM FourCCs with libcamera formats","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Laurent,\n\nOn 22/05/2020 15:54, Laurent Pinchart wrote:\n> Use the new pixel format constants to replace usage of macros from\n> drm_fourcc.h.\n> \n> The IPU3 pipeline handler still uses DRM FourCCs for IPU3-specific\n> formats that are not defined in the libcamera public API.\n\nIf the header is (mostly)automatically generated from the drm_fourcc,\nwould it then be available? (I.e. ... should we define it? or leave it)\n\nOtherwise, would it make sense to add a comment to that usage to state\n/why/ we use the DRM format directly for any casual reader who suddenly\nsees a DRM_FORMAT_ out of the blue (and which differs from the rest of\nthe code base)\n\nEither-way,\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n> \n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n>  src/libcamera/pipeline/ipu3/ipu3.cpp          |  8 +++++---\n>  .../pipeline/raspberrypi/raspberrypi.cpp      | 10 +++++-----\n>  src/libcamera/pipeline/rkisp1/rkisp1.cpp      | 19 ++++++++++---------\n>  src/libcamera/pipeline/vimc/vimc.cpp          | 11 ++++++-----\n>  4 files changed, 26 insertions(+), 22 deletions(-)\n> \n> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> index b805fea71c2d..f23f338d4eb7 100644\n> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> @@ -11,9 +11,11 @@\n>  #include <queue>\n>  #include <vector>\n>  \n> +#include <linux/drm_fourcc.h>\n>  #include <linux/media-bus-format.h>\n>  \n>  #include <libcamera/camera.h>\n> +#include <libcamera/formats.h>\n>  #include <libcamera/request.h>\n>  #include <libcamera/stream.h>\n>  \n> @@ -261,7 +263,7 @@ IPU3CameraConfiguration::IPU3CameraConfiguration(Camera *camera,\n>  void IPU3CameraConfiguration::adjustStream(StreamConfiguration &cfg, bool scale)\n>  {\n>  \t/* The only pixel format the driver supports is NV12. */\n> -\tcfg.pixelFormat = PixelFormat(DRM_FORMAT_NV12);\n> +\tcfg.pixelFormat = formats::NV12;\n>  \n>  \tif (scale) {\n>  \t\t/*\n> @@ -430,7 +432,7 @@ CameraConfiguration *PipelineHandlerIPU3::generateConfiguration(Camera *camera,\n>  \t\tStreamConfiguration cfg = {};\n>  \t\tIPU3Stream *stream = nullptr;\n>  \n> -\t\tcfg.pixelFormat = PixelFormat(DRM_FORMAT_NV12);\n> +\t\tcfg.pixelFormat = formats::NV12;\n>  \n>  \t\tswitch (role) {\n>  \t\tcase StreamRole::StillCapture:\n> @@ -1193,7 +1195,7 @@ int ImgUDevice::configureOutput(ImgUOutput *output,\n>  \t\treturn 0;\n>  \n>  \t*outputFormat = {};\n> -\toutputFormat->fourcc = dev->toV4L2PixelFormat(PixelFormat(DRM_FORMAT_NV12));\n> +\toutputFormat->fourcc = dev->toV4L2PixelFormat(formats::NV12);\n>  \toutputFormat->size = cfg.size;\n>  \toutputFormat->planesCount = 2;\n>  \n> diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> index e16a9c7f10d3..d3d11f87ecb5 100644\n> --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> @@ -13,12 +13,12 @@\n>  \n>  #include <libcamera/camera.h>\n>  #include <libcamera/control_ids.h>\n> +#include <libcamera/formats.h>\n>  #include <libcamera/ipa/raspberrypi.h>\n>  #include <libcamera/logging.h>\n>  #include <libcamera/request.h>\n>  #include <libcamera/stream.h>\n>  \n> -#include <linux/drm_fourcc.h>\n>  #include <linux/videodev2.h>\n>  \n>  #include \"libcamera/internal/camera_sensor.h\"\n> @@ -490,7 +490,7 @@ CameraConfiguration::Status RPiCameraConfiguration::validate()\n>  \n>  \t\tif (fmts.find(V4L2PixelFormat::fromPixelFormat(cfgPixFmt, false)) == fmts.end()) {\n>  \t\t\t/* If we cannot find a native format, use a default one. */\n> -\t\t\tcfgPixFmt = PixelFormat(DRM_FORMAT_NV12);\n> +\t\t\tcfgPixFmt = formats::NV12;\n>  \t\t\tstatus = Adjusted;\n>  \t\t}\n>  \t}\n> @@ -537,20 +537,20 @@ CameraConfiguration *PipelineHandlerRPi::generateConfiguration(Camera *camera,\n>  \t\t\tbreak;\n>  \n>  \t\tcase StreamRole::StillCapture:\n> -\t\t\tcfg.pixelFormat = PixelFormat(DRM_FORMAT_NV12);\n> +\t\t\tcfg.pixelFormat = formats::NV12;\n>  \t\t\t/* Return the largest sensor resolution. */\n>  \t\t\tcfg.size = data->sensor_->resolution();\n>  \t\t\tcfg.bufferCount = 1;\n>  \t\t\tbreak;\n>  \n>  \t\tcase StreamRole::VideoRecording:\n> -\t\t\tcfg.pixelFormat = PixelFormat(DRM_FORMAT_NV12);\n> +\t\t\tcfg.pixelFormat = formats::NV12;\n>  \t\t\tcfg.size = { 1920, 1080 };\n>  \t\t\tcfg.bufferCount = 4;\n>  \t\t\tbreak;\n>  \n>  \t\tcase StreamRole::Viewfinder:\n> -\t\t\tcfg.pixelFormat = PixelFormat(DRM_FORMAT_ARGB8888);\n> +\t\t\tcfg.pixelFormat = formats::ARGB8888;\n>  \t\t\tcfg.size = { 800, 600 };\n>  \t\t\tcfg.bufferCount = 4;\n>  \t\t\tbreak;\n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> index d807fc2cf535..401e777fbbf7 100644\n> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> @@ -16,6 +16,7 @@\n>  #include <libcamera/buffer.h>\n>  #include <libcamera/camera.h>\n>  #include <libcamera/control_ids.h>\n> +#include <libcamera/formats.h>\n>  #include <libcamera/ipa/rkisp1.h>\n>  #include <libcamera/request.h>\n>  #include <libcamera/stream.h>\n> @@ -459,13 +460,13 @@ RkISP1CameraConfiguration::RkISP1CameraConfiguration(Camera *camera,\n>  CameraConfiguration::Status RkISP1CameraConfiguration::validate()\n>  {\n>  \tstatic const std::array<PixelFormat, 8> formats{\n> -\t\tPixelFormat(DRM_FORMAT_YUYV),\n> -\t\tPixelFormat(DRM_FORMAT_YVYU),\n> -\t\tPixelFormat(DRM_FORMAT_VYUY),\n> -\t\tPixelFormat(DRM_FORMAT_NV16),\n> -\t\tPixelFormat(DRM_FORMAT_NV61),\n> -\t\tPixelFormat(DRM_FORMAT_NV21),\n> -\t\tPixelFormat(DRM_FORMAT_NV12),\n> +\t\tformats::YUYV,\n> +\t\tformats::YVYU,\n> +\t\tformats::VYUY,\n> +\t\tformats::NV16,\n> +\t\tformats::NV61,\n> +\t\tformats::NV21,\n> +\t\tformats::NV12,\n>  \t\t/* \\todo Add support for 8-bit greyscale to DRM formats */\n>  \t};\n>  \n> @@ -487,7 +488,7 @@ CameraConfiguration::Status RkISP1CameraConfiguration::validate()\n>  \tif (std::find(formats.begin(), formats.end(), cfg.pixelFormat) ==\n>  \t    formats.end()) {\n>  \t\tLOG(RkISP1, Debug) << \"Adjusting format to NV12\";\n> -\t\tcfg.pixelFormat = PixelFormat(DRM_FORMAT_NV12),\n> +\t\tcfg.pixelFormat = formats::NV12,\n>  \t\tstatus = Adjusted;\n>  \t}\n>  \n> @@ -566,7 +567,7 @@ CameraConfiguration *PipelineHandlerRkISP1::generateConfiguration(Camera *camera\n>  \t\treturn config;\n>  \n>  \tStreamConfiguration cfg{};\n> -\tcfg.pixelFormat = PixelFormat(DRM_FORMAT_NV12);\n> +\tcfg.pixelFormat = formats::NV12;\n>  \tcfg.size = data->sensor_->resolution();\n>  \n>  \tconfig->addConfiguration(cfg);\n> diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp\n> index ca36348a5eb6..ce6db27ce576 100644\n> --- a/src/libcamera/pipeline/vimc/vimc.cpp\n> +++ b/src/libcamera/pipeline/vimc/vimc.cpp\n> @@ -17,6 +17,7 @@\n>  #include <libcamera/camera.h>\n>  #include <libcamera/control_ids.h>\n>  #include <libcamera/controls.h>\n> +#include <libcamera/formats.h>\n>  #include <libcamera/ipa/ipa_interface.h>\n>  #include <libcamera/ipa/ipa_module_info.h>\n>  #include <libcamera/request.h>\n> @@ -108,9 +109,9 @@ private:\n>  namespace {\n>  \n>  static const std::array<PixelFormat, 3> pixelformats{\n> -\tPixelFormat(DRM_FORMAT_RGB888),\n> -\tPixelFormat(DRM_FORMAT_BGR888),\n> -\tPixelFormat(DRM_FORMAT_BGRA8888),\n> +\tformats::RGB888,\n> +\tformats::BGR888,\n> +\tformats::BGRA8888,\n>  };\n>  \n>  } /* namespace */\n> @@ -139,7 +140,7 @@ CameraConfiguration::Status VimcCameraConfiguration::validate()\n>  \tif (std::find(pixelformats.begin(), pixelformats.end(), cfg.pixelFormat) ==\n>  \t    pixelformats.end()) {\n>  \t\tLOG(VIMC, Debug) << \"Adjusting format to RGB24\";\n> -\t\tcfg.pixelFormat = PixelFormat(DRM_FORMAT_BGR888);\n> +\t\tcfg.pixelFormat = formats::BGR888;\n>  \t\tstatus = Adjusted;\n>  \t}\n>  \n> @@ -188,7 +189,7 @@ CameraConfiguration *PipelineHandlerVimc::generateConfiguration(Camera *camera,\n>  \n>  \tStreamConfiguration cfg(formats);\n>  \n> -\tcfg.pixelFormat = PixelFormat(DRM_FORMAT_BGR888);\n> +\tcfg.pixelFormat = formats::BGR888;\n>  \tcfg.size = { 1920, 1080 };\n>  \tcfg.bufferCount = 4;\n>  \n>","headers":{"Return-Path":"<kieran.bingham@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 A4F8F603D0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 28 May 2020 12:16:42 +0200 (CEST)","from [192.168.0.20]\n\t(cpc89242-aztw30-2-0-cust488.18-1.cable.virginm.net [86.31.129.233])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 13D1F2A3;\n\tThu, 28 May 2020 12:16:42 +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=\"OnkPkESx\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1590661002;\n\tbh=YZshFL77ap7anrlyheDo8cbJgxsGPqh97UBw+NA1cCc=;\n\th=Reply-To:Subject:To:References:From:Date:In-Reply-To:From;\n\tb=OnkPkESx+i920UjgFsPrfFSpX2sFhtELFnkfJjIYO/0NOT4hA3V0ExJ+BGTV11JyV\n\tJo4VHe1YRKEhM251GDLV2sdd4IIleQbO4sgIbTIb1Z9JYjmZKRKt/yWNu6ikh2bjbB\n\twd+Wge1/pxTpiLfQiE2eyBYyhv32ZfZRJoS8sbyo=","Reply-To":"kieran.bingham@ideasonboard.com","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20200522145459.16836-1-laurent.pinchart@ideasonboard.com>\n\t<20200522145459.16836-12-laurent.pinchart@ideasonboard.com>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\t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\n\tWZw01QYHU/GUV/zHJSFk","Organization":"Ideas on Board","Message-ID":"<ba7c97de-2e85-697d-8aa2-63564bb772b1@ideasonboard.com>","Date":"Thu, 28 May 2020 11:16:39 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101\n\tThunderbird/68.7.0","MIME-Version":"1.0","In-Reply-To":"<20200522145459.16836-12-laurent.pinchart@ideasonboard.com>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-GB","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH/RFC 10/11] libcamera: pipeline:\n\tReplace explicit DRM FourCCs 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":"Thu, 28 May 2020 10:16:42 -0000"}},{"id":4937,"web_url":"https://patchwork.libcamera.org/comment/4937/","msgid":"<20200528112615.GC6009@pendragon.ideasonboard.com>","date":"2020-05-28T11:26:15","subject":"Re: [libcamera-devel] [PATCH/RFC 10/11] libcamera: pipeline:\n\tReplace explicit DRM FourCCs with libcamera formats","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Kieran,\n\nOn Thu, May 28, 2020 at 11:16:39AM +0100, Kieran Bingham wrote:\n> On 22/05/2020 15:54, Laurent Pinchart wrote:\n> > Use the new pixel format constants to replace usage of macros from\n> > drm_fourcc.h.\n> > \n> > The IPU3 pipeline handler still uses DRM FourCCs for IPU3-specific\n> > formats that are not defined in the libcamera public API.\n> \n> If the header is (mostly)automatically generated from the drm_fourcc,\n> would it then be available? (I.e. ... should we define it? or leave it)\n> \n> Otherwise, would it make sense to add a comment to that usage to state\n> /why/ we use the DRM format directly for any casual reader who suddenly\n> sees a DRM_FORMAT_ out of the blue (and which differs from the rest of\n> the code base)\n\nI've actually decided to reconsider this, as applications may be\ninterested in capturing raw images with the IPU3, even if the format is\nnon-standard. We thus need to define IPU3-specific formats, like we do\nfor the other Bayer formats. I'll change that in the next version.\n\n> Either-way,\n> \n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > ---\n> >  src/libcamera/pipeline/ipu3/ipu3.cpp          |  8 +++++---\n> >  .../pipeline/raspberrypi/raspberrypi.cpp      | 10 +++++-----\n> >  src/libcamera/pipeline/rkisp1/rkisp1.cpp      | 19 ++++++++++---------\n> >  src/libcamera/pipeline/vimc/vimc.cpp          | 11 ++++++-----\n> >  4 files changed, 26 insertions(+), 22 deletions(-)\n> > \n> > diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > index b805fea71c2d..f23f338d4eb7 100644\n> > --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > @@ -11,9 +11,11 @@\n> >  #include <queue>\n> >  #include <vector>\n> >  \n> > +#include <linux/drm_fourcc.h>\n> >  #include <linux/media-bus-format.h>\n> >  \n> >  #include <libcamera/camera.h>\n> > +#include <libcamera/formats.h>\n> >  #include <libcamera/request.h>\n> >  #include <libcamera/stream.h>\n> >  \n> > @@ -261,7 +263,7 @@ IPU3CameraConfiguration::IPU3CameraConfiguration(Camera *camera,\n> >  void IPU3CameraConfiguration::adjustStream(StreamConfiguration &cfg, bool scale)\n> >  {\n> >  \t/* The only pixel format the driver supports is NV12. */\n> > -\tcfg.pixelFormat = PixelFormat(DRM_FORMAT_NV12);\n> > +\tcfg.pixelFormat = formats::NV12;\n> >  \n> >  \tif (scale) {\n> >  \t\t/*\n> > @@ -430,7 +432,7 @@ CameraConfiguration *PipelineHandlerIPU3::generateConfiguration(Camera *camera,\n> >  \t\tStreamConfiguration cfg = {};\n> >  \t\tIPU3Stream *stream = nullptr;\n> >  \n> > -\t\tcfg.pixelFormat = PixelFormat(DRM_FORMAT_NV12);\n> > +\t\tcfg.pixelFormat = formats::NV12;\n> >  \n> >  \t\tswitch (role) {\n> >  \t\tcase StreamRole::StillCapture:\n> > @@ -1193,7 +1195,7 @@ int ImgUDevice::configureOutput(ImgUOutput *output,\n> >  \t\treturn 0;\n> >  \n> >  \t*outputFormat = {};\n> > -\toutputFormat->fourcc = dev->toV4L2PixelFormat(PixelFormat(DRM_FORMAT_NV12));\n> > +\toutputFormat->fourcc = dev->toV4L2PixelFormat(formats::NV12);\n> >  \toutputFormat->size = cfg.size;\n> >  \toutputFormat->planesCount = 2;\n> >  \n> > diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> > index e16a9c7f10d3..d3d11f87ecb5 100644\n> > --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> > +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> > @@ -13,12 +13,12 @@\n> >  \n> >  #include <libcamera/camera.h>\n> >  #include <libcamera/control_ids.h>\n> > +#include <libcamera/formats.h>\n> >  #include <libcamera/ipa/raspberrypi.h>\n> >  #include <libcamera/logging.h>\n> >  #include <libcamera/request.h>\n> >  #include <libcamera/stream.h>\n> >  \n> > -#include <linux/drm_fourcc.h>\n> >  #include <linux/videodev2.h>\n> >  \n> >  #include \"libcamera/internal/camera_sensor.h\"\n> > @@ -490,7 +490,7 @@ CameraConfiguration::Status RPiCameraConfiguration::validate()\n> >  \n> >  \t\tif (fmts.find(V4L2PixelFormat::fromPixelFormat(cfgPixFmt, false)) == fmts.end()) {\n> >  \t\t\t/* If we cannot find a native format, use a default one. */\n> > -\t\t\tcfgPixFmt = PixelFormat(DRM_FORMAT_NV12);\n> > +\t\t\tcfgPixFmt = formats::NV12;\n> >  \t\t\tstatus = Adjusted;\n> >  \t\t}\n> >  \t}\n> > @@ -537,20 +537,20 @@ CameraConfiguration *PipelineHandlerRPi::generateConfiguration(Camera *camera,\n> >  \t\t\tbreak;\n> >  \n> >  \t\tcase StreamRole::StillCapture:\n> > -\t\t\tcfg.pixelFormat = PixelFormat(DRM_FORMAT_NV12);\n> > +\t\t\tcfg.pixelFormat = formats::NV12;\n> >  \t\t\t/* Return the largest sensor resolution. */\n> >  \t\t\tcfg.size = data->sensor_->resolution();\n> >  \t\t\tcfg.bufferCount = 1;\n> >  \t\t\tbreak;\n> >  \n> >  \t\tcase StreamRole::VideoRecording:\n> > -\t\t\tcfg.pixelFormat = PixelFormat(DRM_FORMAT_NV12);\n> > +\t\t\tcfg.pixelFormat = formats::NV12;\n> >  \t\t\tcfg.size = { 1920, 1080 };\n> >  \t\t\tcfg.bufferCount = 4;\n> >  \t\t\tbreak;\n> >  \n> >  \t\tcase StreamRole::Viewfinder:\n> > -\t\t\tcfg.pixelFormat = PixelFormat(DRM_FORMAT_ARGB8888);\n> > +\t\t\tcfg.pixelFormat = formats::ARGB8888;\n> >  \t\t\tcfg.size = { 800, 600 };\n> >  \t\t\tcfg.bufferCount = 4;\n> >  \t\t\tbreak;\n> > diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> > index d807fc2cf535..401e777fbbf7 100644\n> > --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> > +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> > @@ -16,6 +16,7 @@\n> >  #include <libcamera/buffer.h>\n> >  #include <libcamera/camera.h>\n> >  #include <libcamera/control_ids.h>\n> > +#include <libcamera/formats.h>\n> >  #include <libcamera/ipa/rkisp1.h>\n> >  #include <libcamera/request.h>\n> >  #include <libcamera/stream.h>\n> > @@ -459,13 +460,13 @@ RkISP1CameraConfiguration::RkISP1CameraConfiguration(Camera *camera,\n> >  CameraConfiguration::Status RkISP1CameraConfiguration::validate()\n> >  {\n> >  \tstatic const std::array<PixelFormat, 8> formats{\n> > -\t\tPixelFormat(DRM_FORMAT_YUYV),\n> > -\t\tPixelFormat(DRM_FORMAT_YVYU),\n> > -\t\tPixelFormat(DRM_FORMAT_VYUY),\n> > -\t\tPixelFormat(DRM_FORMAT_NV16),\n> > -\t\tPixelFormat(DRM_FORMAT_NV61),\n> > -\t\tPixelFormat(DRM_FORMAT_NV21),\n> > -\t\tPixelFormat(DRM_FORMAT_NV12),\n> > +\t\tformats::YUYV,\n> > +\t\tformats::YVYU,\n> > +\t\tformats::VYUY,\n> > +\t\tformats::NV16,\n> > +\t\tformats::NV61,\n> > +\t\tformats::NV21,\n> > +\t\tformats::NV12,\n> >  \t\t/* \\todo Add support for 8-bit greyscale to DRM formats */\n> >  \t};\n> >  \n> > @@ -487,7 +488,7 @@ CameraConfiguration::Status RkISP1CameraConfiguration::validate()\n> >  \tif (std::find(formats.begin(), formats.end(), cfg.pixelFormat) ==\n> >  \t    formats.end()) {\n> >  \t\tLOG(RkISP1, Debug) << \"Adjusting format to NV12\";\n> > -\t\tcfg.pixelFormat = PixelFormat(DRM_FORMAT_NV12),\n> > +\t\tcfg.pixelFormat = formats::NV12,\n> >  \t\tstatus = Adjusted;\n> >  \t}\n> >  \n> > @@ -566,7 +567,7 @@ CameraConfiguration *PipelineHandlerRkISP1::generateConfiguration(Camera *camera\n> >  \t\treturn config;\n> >  \n> >  \tStreamConfiguration cfg{};\n> > -\tcfg.pixelFormat = PixelFormat(DRM_FORMAT_NV12);\n> > +\tcfg.pixelFormat = formats::NV12;\n> >  \tcfg.size = data->sensor_->resolution();\n> >  \n> >  \tconfig->addConfiguration(cfg);\n> > diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp\n> > index ca36348a5eb6..ce6db27ce576 100644\n> > --- a/src/libcamera/pipeline/vimc/vimc.cpp\n> > +++ b/src/libcamera/pipeline/vimc/vimc.cpp\n> > @@ -17,6 +17,7 @@\n> >  #include <libcamera/camera.h>\n> >  #include <libcamera/control_ids.h>\n> >  #include <libcamera/controls.h>\n> > +#include <libcamera/formats.h>\n> >  #include <libcamera/ipa/ipa_interface.h>\n> >  #include <libcamera/ipa/ipa_module_info.h>\n> >  #include <libcamera/request.h>\n> > @@ -108,9 +109,9 @@ private:\n> >  namespace {\n> >  \n> >  static const std::array<PixelFormat, 3> pixelformats{\n> > -\tPixelFormat(DRM_FORMAT_RGB888),\n> > -\tPixelFormat(DRM_FORMAT_BGR888),\n> > -\tPixelFormat(DRM_FORMAT_BGRA8888),\n> > +\tformats::RGB888,\n> > +\tformats::BGR888,\n> > +\tformats::BGRA8888,\n> >  };\n> >  \n> >  } /* namespace */\n> > @@ -139,7 +140,7 @@ CameraConfiguration::Status VimcCameraConfiguration::validate()\n> >  \tif (std::find(pixelformats.begin(), pixelformats.end(), cfg.pixelFormat) ==\n> >  \t    pixelformats.end()) {\n> >  \t\tLOG(VIMC, Debug) << \"Adjusting format to RGB24\";\n> > -\t\tcfg.pixelFormat = PixelFormat(DRM_FORMAT_BGR888);\n> > +\t\tcfg.pixelFormat = formats::BGR888;\n> >  \t\tstatus = Adjusted;\n> >  \t}\n> >  \n> > @@ -188,7 +189,7 @@ CameraConfiguration *PipelineHandlerVimc::generateConfiguration(Camera *camera,\n> >  \n> >  \tStreamConfiguration cfg(formats);\n> >  \n> > -\tcfg.pixelFormat = PixelFormat(DRM_FORMAT_BGR888);\n> > +\tcfg.pixelFormat = formats::BGR888;\n> >  \tcfg.size = { 1920, 1080 };\n> >  \tcfg.bufferCount = 4;\n> >","headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id DF31B603D3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 28 May 2020 13:26:29 +0200 (CEST)","from pendragon.ideasonboard.com (81-175-216-236.bb.dnainternet.fi\n\t[81.175.216.236])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 533D92A8;\n\tThu, 28 May 2020 13:26:29 +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=\"EkDrbwWY\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1590665189;\n\tbh=IgYB1RbjwYmZY6fpjqMd/3rPcStCyVLgXG5KUBL63QY=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=EkDrbwWYv8dFvTiNuquKSHNxNHymtfDjujFPcZWpki4+gCEUEGYWuUi4/0iL4Ov/w\n\tTMFnA03wOptF93og6E+IpWGGfj6oujiQN2Z/YDWW3+qyHapc8BnTl9SywLrbnzTcSf\n\trgiV2B6TMyUA4KFv6dg2pabkw0ll132wdMIxPDTg=","Date":"Thu, 28 May 2020 14:26:15 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20200528112615.GC6009@pendragon.ideasonboard.com>","References":"<20200522145459.16836-1-laurent.pinchart@ideasonboard.com>\n\t<20200522145459.16836-12-laurent.pinchart@ideasonboard.com>\n\t<ba7c97de-2e85-697d-8aa2-63564bb772b1@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<ba7c97de-2e85-697d-8aa2-63564bb772b1@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH/RFC 10/11] libcamera: pipeline:\n\tReplace explicit DRM FourCCs 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":"Thu, 28 May 2020 11:26:30 -0000"}}]