[{"id":34395,"web_url":"https://patchwork.libcamera.org/comment/34395/","msgid":"<174870327248.3792513.9752242924447353522@ping.linuxembedded.co.uk>","date":"2025-05-31T14:54:32","subject":"Re: [PATCH v6 03/12] libcamera: formats: Add a helper to check for a\n\traw pixel format","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Milan Zamazal (2025-05-26 11:15:23)\n> There are several places with the same pattern to check whether a given\n> pixel format is a raw format:\n> \n>   return libcamera::PixelFormatInfo::info(pixFmt).colourEncoding ==\n>          libcamera::PixelFormatInfo::ColourEncodingRAW;\n> \n> Let's move the corresponding isFormatRaw helper from mali-c55.cpp to\n> formats.cpp and use it where applicable.  This also avoids a need to\n> introduce the same helper (or the same pattern) in the followup patches.\n\nThis was tried before but not completed/successful.\n\nhttps://patchwork.libcamera.org/project/libcamera/list/?series=4640&state=*\n\nThe problem is the definition of 'raw' is too vague.\n\nMaybe we could have something like 'isBayerFormat' if we want to map all\nbayer formats - but a RAW stream being defined on the colour encoding is\nill-defined...\n\nI still think there's scope for trying to factor out parts here - but we\nseem to need to do better at determining what 'RAW' means ...\n\n--\nKieran\n\n\n> \n> Signed-off-by: Milan Zamazal <mzamazal@redhat.com>\n> ---\n>  include/libcamera/internal/formats.h         |  2 ++\n>  src/libcamera/formats.cpp                    | 11 +++++++++++\n>  src/libcamera/pipeline/imx8-isi/imx8-isi.cpp |  4 ++--\n>  src/libcamera/pipeline/mali-c55/mali-c55.cpp | 10 ----------\n>  src/libcamera/pipeline/rkisp1/rkisp1.cpp     |  7 ++-----\n>  5 files changed, 17 insertions(+), 17 deletions(-)\n> \n> diff --git a/include/libcamera/internal/formats.h b/include/libcamera/internal/formats.h\n> index 6a3e9c16..bc4417d0 100644\n> --- a/include/libcamera/internal/formats.h\n> +++ b/include/libcamera/internal/formats.h\n> @@ -62,4 +62,6 @@ public:\n>         std::array<Plane, 3> planes;\n>  };\n>  \n> +bool isFormatRaw(const libcamera::PixelFormat &pixFmt);\n> +\n>  } /* namespace libcamera */\n> diff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp\n> index bfcdfc08..c6e0a262 100644\n> --- a/src/libcamera/formats.cpp\n> +++ b/src/libcamera/formats.cpp\n> @@ -1215,4 +1215,15 @@ unsigned int PixelFormatInfo::numPlanes() const\n>         return count;\n>  }\n>  \n> +/**\n> + * \\brief Return whether the given pixel format is a raw format\n> + * \\param[in] pixFmt The pixel format to examine\n> + * \\return True iff the given format is a raw format\n> + */\n> +bool isFormatRaw(const libcamera::PixelFormat &pixFmt)\n> +{\n> +       return libcamera::PixelFormatInfo::info(pixFmt).colourEncoding ==\n> +              libcamera::PixelFormatInfo::ColourEncodingRAW;\n> +}\n> +\n>  } /* namespace libcamera */\n> diff --git a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n> index ecda426a..ad36ebea 100644\n> --- a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n> +++ b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n> @@ -24,6 +24,7 @@\n>  #include \"libcamera/internal/camera.h\"\n>  #include \"libcamera/internal/camera_sensor.h\"\n>  #include \"libcamera/internal/device_enumerator.h\"\n> +#include \"libcamera/internal/formats.h\"\n>  #include \"libcamera/internal/media_device.h\"\n>  #include \"libcamera/internal/pipeline_handler.h\"\n>  #include \"libcamera/internal/v4l2_subdevice.h\"\n> @@ -312,8 +313,7 @@ unsigned int ISICameraData::getYuvMediaBusFormat(const PixelFormat &pixelFormat)\n>  \n>  unsigned int ISICameraData::getMediaBusFormat(PixelFormat *pixelFormat) const\n>  {\n> -       if (PixelFormatInfo::info(*pixelFormat).colourEncoding ==\n> -           PixelFormatInfo::ColourEncodingRAW)\n> +       if (isFormatRaw(*pixelFormat))\n>                 return getRawMediaBusFormat(pixelFormat);\n>  \n>         return getYuvMediaBusFormat(*pixelFormat);\n> diff --git a/src/libcamera/pipeline/mali-c55/mali-c55.cpp b/src/libcamera/pipeline/mali-c55/mali-c55.cpp\n> index a05e11fc..3721fb30 100644\n> --- a/src/libcamera/pipeline/mali-c55/mali-c55.cpp\n> +++ b/src/libcamera/pipeline/mali-c55/mali-c55.cpp\n> @@ -42,16 +42,6 @@\n>  #include \"libcamera/internal/v4l2_subdevice.h\"\n>  #include \"libcamera/internal/v4l2_videodevice.h\"\n>  \n> -namespace {\n> -\n> -bool isFormatRaw(const libcamera::PixelFormat &pixFmt)\n> -{\n> -       return libcamera::PixelFormatInfo::info(pixFmt).colourEncoding ==\n> -              libcamera::PixelFormatInfo::ColourEncodingRAW;\n> -}\n> -\n> -} /* namespace */\n> -\n>  namespace libcamera {\n>  \n>  LOG_DEFINE_CATEGORY(MaliC55)\n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> index 675f0a74..50c83fb7 100644\n> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> @@ -538,8 +538,7 @@ CameraConfiguration::Status RkISP1CameraConfiguration::validate()\n>          */\n>         if (config_.size() > 1) {\n>                 for (const auto &cfg : config_) {\n> -                       if (PixelFormatInfo::info(cfg.pixelFormat).colourEncoding ==\n> -                           PixelFormatInfo::ColourEncodingRAW) {\n> +                       if (isFormatRaw(cfg.pixelFormat)) {\n>                                 config_.resize(1);\n>                                 status = Adjusted;\n>                                 break;\n> @@ -553,9 +552,7 @@ CameraConfiguration::Status RkISP1CameraConfiguration::validate()\n>                  * Platforms with dewarper support, such as i.MX8MP, support\n>                  * only a single stream. We can inspect config_[0] only here.\n>                  */\n> -               bool isRaw = PixelFormatInfo::info(config_[0].pixelFormat).colourEncoding ==\n> -                            PixelFormatInfo::ColourEncodingRAW;\n> -               if (!isRaw)\n> +               if (!isFormatRaw(config_[0].pixelFormat))\n>                         useDewarper = true;\n>         }\n>  \n> -- \n> 2.49.0\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id DF100C31E9\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat, 31 May 2025 14:54:38 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id AC05468DB1;\n\tSat, 31 May 2025 16:54:37 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9E5F4614D5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 31 May 2025 16:54:35 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id E92E0E1;\n\tSat, 31 May 2025 16:54:06 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"tCq2Z7em\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1748703247;\n\tbh=/7ni7kd5BG+hgjyRG/Ee+3pEc55o8MOak0/F7bUdxt8=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=tCq2Z7emAZiSlT14Ncr3PY9zs7FW+3TfIxuJhzi9dveO/1LWy+/XA8eUKPAdy/+1V\n\tSd71ReMjFXyE6XPuOwHGQBENWEBAigMBrfnqfec2Kq0M9DsztBCwZmQ6+qm5Jxe1A/\n\tlHXYF3J5t5BO1o65Hi/vKxYeg9fLEzX2rPtAH1pw=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20250526101536.29222-4-mzamazal@redhat.com>","References":"<20250526101536.29222-1-mzamazal@redhat.com>\n\t<20250526101536.29222-4-mzamazal@redhat.com>","Subject":"Re: [PATCH v6 03/12] libcamera: formats: Add a helper to check for a\n\traw pixel format","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Milan Zamazal <mzamazal@redhat.com>, Laurent Pinchart\n\t<laurent.pinchart@ideasonboard.com>, =?utf-8?b?QmFybmFiw6FzIFDFkWN6?=\n\t=?utf-8?q?e?= <barnabas.pocze@ideasonboard.com>, Paul Elder\n\t<paul.elder@ideasonboard.com>","To":"Milan Zamazal <mzamazal@redhat.com>, libcamera-devel@lists.libcamera.org","Date":"Sat, 31 May 2025 15:54:32 +0100","Message-ID":"<174870327248.3792513.9752242924447353522@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","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>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":34397,"web_url":"https://patchwork.libcamera.org/comment/34397/","msgid":"<854iwy45vz.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","date":"2025-06-02T13:42:08","subject":"Re: [PATCH v6 03/12] libcamera: formats: Add a helper to check for\n\ta raw pixel format","submitter":{"id":177,"url":"https://patchwork.libcamera.org/api/people/177/","name":"Milan Zamazal","email":"mzamazal@redhat.com"},"content":"Hi Kieran,\n\nKieran Bingham <kieran.bingham@ideasonboard.com> writes:\n\n> Quoting Milan Zamazal (2025-05-26 11:15:23)\n>> There are several places with the same pattern to check whether a given\n>> pixel format is a raw format:\n>> \n>>   return libcamera::PixelFormatInfo::info(pixFmt).colourEncoding ==\n>>          libcamera::PixelFormatInfo::ColourEncodingRAW;\n>> \n>> Let's move the corresponding isFormatRaw helper from mali-c55.cpp to\n>> formats.cpp and use it where applicable.  This also avoids a need to\n>> introduce the same helper (or the same pattern) in the followup patches.\n>\n> This was tried before but not completed/successful.\n>\n> https://patchwork.libcamera.org/project/libcamera/list/?series=4640&state=*\n>\n> The problem is the definition of 'raw' is too vague.\n>\n> Maybe we could have something like 'isBayerFormat' if we want to map all\n> bayer formats - but a RAW stream being defined on the colour encoding is\n> ill-defined...\n>\n> I still think there's scope for trying to factor out parts here - but we\n> seem to need to do better at determining what 'RAW' means ...\n\nWell, we have common patterns and the questions are:\n\n1. Do we want to extract them to common helpers?  The answer is probably\n   yes, because:\n\n   - Common patterns should be extracted to helpers generally.\n   - The helpers should make the purposes of the patterns clearer.\n\n2. Do the same patterns represent the same thing everywhere?  And are\n   they correct?\n\n3. How should the helpers be named and their purpose defined?\n\nAs far as I understand the review thread referred above, we don't have\nclear answers to 2. + 3.  Which is a bit worrying as this means the\ncurrent code may not be completely clear or even correct.  And 1. is a\ngood reason to bother anyway.\n\nAs for this series, we may drop the mass extraction but we need similar\npatterns in this series in either case so at least the meaning and\ncorrectness of the helpers used here should be well defined.  I'm not\nsure what would be correct; my feeling is that perhaps some of the pixel\nformat related structures should have a separate member for the purpose,\nwhich looks like a non-trivial change to me with respect to the other\npipelines.\n\n> --\n> Kieran\n>\n>\n>> \n>> Signed-off-by: Milan Zamazal <mzamazal@redhat.com>\n>> ---\n>>  include/libcamera/internal/formats.h         |  2 ++\n>>  src/libcamera/formats.cpp                    | 11 +++++++++++\n>>  src/libcamera/pipeline/imx8-isi/imx8-isi.cpp |  4 ++--\n>>  src/libcamera/pipeline/mali-c55/mali-c55.cpp | 10 ----------\n>>  src/libcamera/pipeline/rkisp1/rkisp1.cpp     |  7 ++-----\n>>  5 files changed, 17 insertions(+), 17 deletions(-)\n>> \n>> diff --git a/include/libcamera/internal/formats.h b/include/libcamera/internal/formats.h\n>> index 6a3e9c16..bc4417d0 100644\n>> --- a/include/libcamera/internal/formats.h\n>> +++ b/include/libcamera/internal/formats.h\n>> @@ -62,4 +62,6 @@ public:\n>>         std::array<Plane, 3> planes;\n>>  };\n>>  \n>> +bool isFormatRaw(const libcamera::PixelFormat &pixFmt);\n>> +\n>>  } /* namespace libcamera */\n>> diff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp\n>> index bfcdfc08..c6e0a262 100644\n>> --- a/src/libcamera/formats.cpp\n>> +++ b/src/libcamera/formats.cpp\n>> @@ -1215,4 +1215,15 @@ unsigned int PixelFormatInfo::numPlanes() const\n>>         return count;\n>>  }\n>>  \n>> +/**\n>> + * \\brief Return whether the given pixel format is a raw format\n>> + * \\param[in] pixFmt The pixel format to examine\n>> + * \\return True iff the given format is a raw format\n>> + */\n>> +bool isFormatRaw(const libcamera::PixelFormat &pixFmt)\n>> +{\n>> +       return libcamera::PixelFormatInfo::info(pixFmt).colourEncoding ==\n>> +              libcamera::PixelFormatInfo::ColourEncodingRAW;\n>> +}\n>> +\n>>  } /* namespace libcamera */\n>> diff --git a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n>> index ecda426a..ad36ebea 100644\n>> --- a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n>> +++ b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n>> @@ -24,6 +24,7 @@\n>>  #include \"libcamera/internal/camera.h\"\n>>  #include \"libcamera/internal/camera_sensor.h\"\n>>  #include \"libcamera/internal/device_enumerator.h\"\n>> +#include \"libcamera/internal/formats.h\"\n>>  #include \"libcamera/internal/media_device.h\"\n>>  #include \"libcamera/internal/pipeline_handler.h\"\n>>  #include \"libcamera/internal/v4l2_subdevice.h\"\n>> @@ -312,8 +313,7 @@ unsigned int ISICameraData::getYuvMediaBusFormat(const PixelFormat &pixelFormat)\n>>  \n>>  unsigned int ISICameraData::getMediaBusFormat(PixelFormat *pixelFormat) const\n>>  {\n>> -       if (PixelFormatInfo::info(*pixelFormat).colourEncoding ==\n>> -           PixelFormatInfo::ColourEncodingRAW)\n>> +       if (isFormatRaw(*pixelFormat))\n>>                 return getRawMediaBusFormat(pixelFormat);\n>>  \n>>         return getYuvMediaBusFormat(*pixelFormat);\n>> diff --git a/src/libcamera/pipeline/mali-c55/mali-c55.cpp b/src/libcamera/pipeline/mali-c55/mali-c55.cpp\n>> index a05e11fc..3721fb30 100644\n>> --- a/src/libcamera/pipeline/mali-c55/mali-c55.cpp\n>> +++ b/src/libcamera/pipeline/mali-c55/mali-c55.cpp\n>> @@ -42,16 +42,6 @@\n>>  #include \"libcamera/internal/v4l2_subdevice.h\"\n>>  #include \"libcamera/internal/v4l2_videodevice.h\"\n>>  \n>> -namespace {\n>> -\n>> -bool isFormatRaw(const libcamera::PixelFormat &pixFmt)\n>> -{\n>> -       return libcamera::PixelFormatInfo::info(pixFmt).colourEncoding ==\n>> -              libcamera::PixelFormatInfo::ColourEncodingRAW;\n>> -}\n>> -\n>> -} /* namespace */\n>> -\n>>  namespace libcamera {\n>>  \n>>  LOG_DEFINE_CATEGORY(MaliC55)\n>> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n>> index 675f0a74..50c83fb7 100644\n>> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n>> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n>> @@ -538,8 +538,7 @@ CameraConfiguration::Status RkISP1CameraConfiguration::validate()\n>>          */\n>>         if (config_.size() > 1) {\n>>                 for (const auto &cfg : config_) {\n>> -                       if (PixelFormatInfo::info(cfg.pixelFormat).colourEncoding ==\n>> -                           PixelFormatInfo::ColourEncodingRAW) {\n>> +                       if (isFormatRaw(cfg.pixelFormat)) {\n>>                                 config_.resize(1);\n>>                                 status = Adjusted;\n>>                                 break;\n>> @@ -553,9 +552,7 @@ CameraConfiguration::Status RkISP1CameraConfiguration::validate()\n>>                  * Platforms with dewarper support, such as i.MX8MP, support\n>>                  * only a single stream. We can inspect config_[0] only here.\n>>                  */\n>> -               bool isRaw = PixelFormatInfo::info(config_[0].pixelFormat).colourEncoding ==\n>> -                            PixelFormatInfo::ColourEncodingRAW;\n>> -               if (!isRaw)\n>> +               if (!isFormatRaw(config_[0].pixelFormat))\n>>                         useDewarper = true;\n>>         }\n>>  \n>> -- \n>> 2.49.0\n>>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id CA23FC3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  2 Jun 2025 13:42:20 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1894268DB3;\n\tMon,  2 Jun 2025 15:42:19 +0200 (CEST)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.129.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 469D168D94\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  2 Jun 2025 15:42:16 +0200 (CEST)","from mail-ej1-f71.google.com (mail-ej1-f71.google.com\n\t[209.85.218.71]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-167-rWdqzsrINYuoYRZ8VvsJDA-1; Mon, 02 Jun 2025 09:42:12 -0400","by mail-ej1-f71.google.com with SMTP id\n\ta640c23a62f3a-adb33457610so336269366b.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 02 Jun 2025 06:42:11 -0700 (PDT)","from mzamazal-thinkpadp1gen7.tpbc.csb\n\t(ip-77-48-47-2.net.vodafone.cz. [77.48.47.2])\n\tby smtp.gmail.com with ESMTPSA id\n\ta640c23a62f3a-ada6ad6a77csm787423966b.166.2025.06.02.06.42.08\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tMon, 02 Jun 2025 06:42:09 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"eHK/EFt1\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1748871735;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=D9lUgbW3hBga2bhj+aq3gOLIcNCq2jm+mS3ZwKtH7NE=;\n\tb=eHK/EFt1YJON2oDBoljagrgYK8h5NkLbwcIV4ww2xio7OtmnKSJJqQx2m5s0evcj3nPfk7\n\tlWexx5T6Oi7QPmxJPSas7jZT1vk6Yl9Ih5dmQFKkTbwFRP4AtGSKOQbkWPkFmbocx7taUt\n\tAEEHWTCBCeZ/0YwqwfGmGIQLVXuWUXM=","X-MC-Unique":"rWdqzsrINYuoYRZ8VvsJDA-1","X-Mimecast-MFC-AGG-ID":"rWdqzsrINYuoYRZ8VvsJDA_1748871730","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1748871730; x=1749476530;\n\th=mime-version:user-agent:message-id:date:references:in-reply-to\n\t:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=D9lUgbW3hBga2bhj+aq3gOLIcNCq2jm+mS3ZwKtH7NE=;\n\tb=VotKdJSEcjjjTBQxg4xM3ZhuZmayN3Ct8/XPsNAXRZjFf5okI6cg2xZqBz/r3xV2Ue\n\twPgJA7lY0wv5widPGbHrb6QlxYQhdLJHztu90XuUgsp75yChW2gpfSFT0MlQgMJ9Wdl7\n\tt7plzs+bpHo6tAL1Pl7a/mbHJ4jChO+eatuomL64Yt+4EWqBx+iumTNRr2m/D9G9SYhm\n\tx5WVbRCW4WBwiYYMc88e3ybSa0F4/oJvzJyBwK1n3p71ms/NUxzp+MfpFyMp1+VR7GD8\n\tqmo1JVGNrEDGw/D+RaC9/XOlNGN40j+1CPatHdQ13p7xLevOur2l0abUqnP8Og/38JWH\n\tZvzg==","X-Gm-Message-State":"AOJu0YyjFPIvIzU5N8YNakibsgQKu8vf8dFa1rznSzDEG6/Dae055jjL\n\t+NWNHsfYyvxrNNVlJwY2POoMmD0WAE1vcDLPrDifUeTObHsa+haSmSpDq5rU+bVL+1ILWJRRCev\n\thyjJnxOGRmdHhUn04wc6Yk74gxzJ5ClL+t/jH3F51fuTbNuMarV3sY98Ae91tBsgEy93lfePTi2\n\tA=","X-Gm-Gg":"ASbGncvx/zOehEIR7DM7L0G++bgK5W1kFWRL2aY/7xblPW3PTosyFN/DgTXwF1jmP9E\n\tUnvgNCra1kB7TVD11cp/kbo0F3GqmwDN+2JDjwOkHCeOmnUFUDIY7hHZ+iTdyqg7C7nd4XH2IEr\n\tNbNXgYHUN/+Bi9zzJoqJbSOLVTyQHbqsQgxrpz21WIrpQW+gA65Mi2UaMH0aNito3vhVUSkMiis\n\tp1kqyWf6FwAZb8qT3e65TscXQz5FXO/ouOUL2Bj/+kqubYX+pxQ5+GlaCfALi2kD4rSv7W5o3m2\n\tP6WUzYM9e2YgF6pvK3SDQWKs+WaBMOTMNh1w6yVdHI3zjOr94u9u3EuGzDiACFxS","X-Received":["by 2002:a17:907:720e:b0:ad8:91e4:a939 with SMTP id\n\ta640c23a62f3a-adb494e59f7mr828250666b.31.1748871730085; \n\tMon, 02 Jun 2025 06:42:10 -0700 (PDT)","by 2002:a17:907:720e:b0:ad8:91e4:a939 with SMTP id\n\ta640c23a62f3a-adb494e59f7mr828246866b.31.1748871729609; \n\tMon, 02 Jun 2025 06:42:09 -0700 (PDT)"],"X-Google-Smtp-Source":"AGHT+IExDWFb8SViKdDEDC/2ppkzkbN/WPKrAkuqmB5BxbhPil1zoYz8L4al4/rPFPedw9cFpFvSpg==","From":"Milan Zamazal <mzamazal@redhat.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>, =?utf-8?q?Barna?=\n\t=?utf-8?b?YsOhcyBQxZFjemU=?=\n\t<barnabas.pocze@ideasonboard.com>, Paul Elder\n\t<paul.elder@ideasonboard.com>","Subject":"Re: [PATCH v6 03/12] libcamera: formats: Add a helper to check for\n\ta raw pixel format","In-Reply-To":"<174870327248.3792513.9752242924447353522@ping.linuxembedded.co.uk>\n\t(Kieran Bingham's message of \"Sat, 31 May 2025 15:54:32 +0100\")","References":"<20250526101536.29222-1-mzamazal@redhat.com>\n\t<20250526101536.29222-4-mzamazal@redhat.com>\n\t<174870327248.3792513.9752242924447353522@ping.linuxembedded.co.uk>","Date":"Mon, 02 Jun 2025 15:42:08 +0200","Message-ID":"<854iwy45vz.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","User-Agent":"Gnus/5.13 (Gnus v5.13)","MIME-Version":"1.0","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"SRCtSPGZAkTanVHZ0PRUw7rjru-vLdxN3IDOfIcs54k_1748871730","X-Mimecast-Originator":"redhat.com","Content-Type":"text/plain","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>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]