[{"id":26892,"web_url":"https://patchwork.libcamera.org/comment/26892/","msgid":"<20230418143257.GD30837@pendragon.ideasonboard.com>","date":"2023-04-18T14:32:57","subject":"Re: [libcamera-devel] [PATCH] libcamera: formats: Add 14-bits Bayer\n\tRAW formats","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Jacopo,\n\nThank you for the patch.\n\nOn Tue, Apr 18, 2023 at 04:18:23PM +0200, Jacopo Mondi via libcamera-devel wrote:\n> Add formats definition and mappings for 14-bits Bayer RAW formats.\n> \n> Add definitions for non-packed and CSI-2 packed variants.\n> \n> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> ---\n>  src/libcamera/bayer_format.cpp     | 16 ++++++\n>  src/libcamera/formats.c            |  0\n>  src/libcamera/formats.cpp          | 80 ++++++++++++++++++++++++++++++\n>  src/libcamera/formats.yaml         | 22 ++++++++\n>  src/libcamera/v4l2_pixelformat.cpp | 16 ++++++\n>  5 files changed, 134 insertions(+)\n>  create mode 100644 src/libcamera/formats.c\n> \n> diff --git a/src/libcamera/bayer_format.cpp b/src/libcamera/bayer_format.cpp\n> index 6a76d6a4b6dc..3bf15fb48f36 100644\n> --- a/src/libcamera/bayer_format.cpp\n> +++ b/src/libcamera/bayer_format.cpp\n> @@ -140,6 +140,22 @@ const std::map<BayerFormat, Formats, BayerFormatComparator> bayerToFormat{\n>  \t\t{ formats::SGRBG12_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12P) } },\n>  \t{ { BayerFormat::RGGB, 12, BayerFormat::Packing::CSI2 },\n>  \t\t{ formats::SRGGB12_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12P) } },\n> +\t{ { BayerFormat::BGGR, 14, BayerFormat::Packing::None },\n> +\t\t{ formats::SBGGR14, V4L2PixelFormat(V4L2_PIX_FMT_SBGGR14) } },\n> +\t{ { BayerFormat::GBRG, 14, BayerFormat::Packing::None },\n> +\t\t{ formats::SGBRG14, V4L2PixelFormat(V4L2_PIX_FMT_SGBRG14) } },\n> +\t{ { BayerFormat::GRBG, 14, BayerFormat::Packing::None },\n> +\t\t{ formats::SGRBG14, V4L2PixelFormat(V4L2_PIX_FMT_SGRBG14) } },\n> +\t{ { BayerFormat::RGGB, 14, BayerFormat::Packing::None },\n> +\t\t{ formats::SRGGB14, V4L2PixelFormat(V4L2_PIX_FMT_SRGGB14) } },\n> +\t{ { BayerFormat::BGGR, 14, BayerFormat::Packing::CSI2 },\n> +\t\t{ formats::SBGGR14_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SBGGR14P) } },\n> +\t{ { BayerFormat::GBRG, 14, BayerFormat::Packing::CSI2 },\n> +\t\t{ formats::SGBRG14_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SGBRG14P) } },\n> +\t{ { BayerFormat::GRBG, 14, BayerFormat::Packing::CSI2 },\n> +\t\t{ formats::SGRBG14_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SGRBG14P) } },\n> +\t{ { BayerFormat::RGGB, 14, BayerFormat::Packing::CSI2 },\n> +\t\t{ formats::SRGGB14_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SRGGB14P) } },\n>  \t{ { BayerFormat::BGGR, 16, BayerFormat::Packing::None },\n>  \t\t{ formats::SBGGR16, V4L2PixelFormat(V4L2_PIX_FMT_SBGGR16) } },\n>  \t{ { BayerFormat::GBRG, 16, BayerFormat::Packing::None },\n> diff --git a/src/libcamera/formats.c b/src/libcamera/formats.c\n> new file mode 100644\n> index 000000000000..e69de29bb2d1\n> diff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp\n> index f5769c489e16..447e623803c7 100644\n> --- a/src/libcamera/formats.cpp\n> +++ b/src/libcamera/formats.cpp\n> @@ -719,6 +719,86 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{\n>  \t\t.pixelsPerGroup = 2,\n>  \t\t.planes = {{ { 3, 1 }, { 0, 0 }, { 0, 0 } }},\n>  \t} },\n> +\t{ formats::SBGGR14, {\n> +\t\t.name = \"SBGGR14\",\n> +\t\t.format = formats::SBGGR14,\n> +\t\t.v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR14), },\n> +\t\t.bitsPerPixel = 14,\n> +\t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n> +\t\t.packed = false,\n> +\t\t.pixelsPerGroup = 2,\n> +\t\t.planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }},\n> +\t} },\n> +\t{ formats::SGBRG14, {\n> +\t\t.name = \"SGBRG14\",\n> +\t\t.format = formats::SGBRG14,\n> +\t\t.v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG14), },\n> +\t\t.bitsPerPixel = 14,\n> +\t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n> +\t\t.packed = false,\n> +\t\t.pixelsPerGroup = 2,\n> +\t\t.planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }},\n> +\t} },\n> +\t{ formats::SGRBG14, {\n> +\t\t.name = \"SGRBG14\",\n> +\t\t.format = formats::SGRBG14,\n> +\t\t.v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG14), },\n> +\t\t.bitsPerPixel = 14,\n> +\t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n> +\t\t.packed = false,\n> +\t\t.pixelsPerGroup = 2,\n> +\t\t.planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }},\n> +\t} },\n> +\t{ formats::SRGGB14, {\n> +\t\t.name = \"SRGGB14\",\n> +\t\t.format = formats::SRGGB14,\n> +\t\t.v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB14), },\n> +\t\t.bitsPerPixel = 14,\n> +\t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n> +\t\t.packed = false,\n> +\t\t.pixelsPerGroup = 2,\n> +\t\t.planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }},\n> +\t} },\n> +\t{ formats::SBGGR14_CSI2P, {\n> +\t\t.name = \"SBGGR14_CSI2P\",\n> +\t\t.format = formats::SBGGR14_CSI2P,\n> +\t\t.v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR14P), },\n> +\t\t.bitsPerPixel = 14,\n> +\t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n> +\t\t.packed = true,\n> +\t\t.pixelsPerGroup = 4,\n> +\t\t.planes = {{ { 7, 1 }, { 0, 0 }, { 0, 0 } }},\n> +\t} },\n> +\t{ formats::SGBRG14_CSI2P, {\n> +\t\t.name = \"SGBRG14_CSI2P\",\n> +\t\t.format = formats::SGBRG14_CSI2P,\n> +\t\t.v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG14P), },\n> +\t\t.bitsPerPixel = 14,\n> +\t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n> +\t\t.packed = true,\n> +\t\t.pixelsPerGroup = 4,\n> +\t\t.planes = {{ { 7, 1 }, { 0, 0 }, { 0, 0 } }},\n> +\t} },\n> +\t{ formats::SGRBG14_CSI2P, {\n> +\t\t.name = \"SGRBG14_CSI2P\",\n> +\t\t.format = formats::SGRBG14_CSI2P,\n> +\t\t.v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG14P), },\n> +\t\t.bitsPerPixel = 14,\n> +\t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n> +\t\t.packed = true,\n> +\t\t.pixelsPerGroup = 4,\n> +\t\t.planes = {{ { 7, 1 }, { 0, 0 }, { 0, 0 } }},\n> +\t} },\n> +\t{ formats::SRGGB14_CSI2P, {\n> +\t\t.name = \"SRGGB14_CSI2P\",\n> +\t\t.format = formats::SRGGB14_CSI2P,\n> +\t\t.v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB14P), },\n> +\t\t.bitsPerPixel = 14,\n> +\t\t.colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n> +\t\t.packed = true,\n> +\t\t.pixelsPerGroup = 4,\n> +\t\t.planes = {{ { 7, 1 }, { 0, 0 }, { 0, 0 } }},\n> +\t} },\n>  \t{ formats::SBGGR16, {\n>  \t\t.name = \"SBGGR16\",\n>  \t\t.format = formats::SBGGR16,\n> diff --git a/src/libcamera/formats.yaml b/src/libcamera/formats.yaml\n> index e586cde1d705..539ac0b33084 100644\n> --- a/src/libcamera/formats.yaml\n> +++ b/src/libcamera/formats.yaml\n> @@ -110,6 +110,15 @@ formats:\n>    - SBGGR12:\n>        fourcc: DRM_FORMAT_SBGGR12\n> \n> +  - SRGGB14:\n> +      fourcc: DRM_FORMAT_SRGGB14\n> +  - SGRBG14:\n> +      fourcc: DRM_FORMAT_SGRBG14\n> +  - SGBRG14:\n> +      fourcc: DRM_FORMAT_SGBRG14\n> +  - SBGGR14:\n> +      fourcc: DRM_FORMAT_SBGGR14\n> +\n>    - SRGGB16:\n>        fourcc: DRM_FORMAT_SRGGB16\n>    - SGRBG16:\n> @@ -149,6 +158,19 @@ formats:\n>        fourcc: DRM_FORMAT_SBGGR12\n>        mod: MIPI_FORMAT_MOD_CSI2_PACKED\n> \n> +  - SRGGB14_CSI2P:\n> +      fourcc: DRM_FORMAT_SRGGB14\n> +      mod: MIPI_FORMAT_MOD_CSI2_PACKED\n> +  - SGRBG14_CSI2P:\n> +      fourcc: DRM_FORMAT_SGRBG14\n> +      mod: MIPI_FORMAT_MOD_CSI2_PACKED\n> +  - SGBRG14_CSI2P:\n> +      fourcc: DRM_FORMAT_SGBRG14\n> +      mod: MIPI_FORMAT_MOD_CSI2_PACKED\n> +  - SBGGR14_CSI2P:\n> +      fourcc: DRM_FORMAT_SBGGR14\n> +      mod: MIPI_FORMAT_MOD_CSI2_PACKED\n> +\n>    - SRGGB10_IPU3:\n>        fourcc: DRM_FORMAT_SRGGB10\n>        mod: IPU3_FORMAT_MOD_PACKED\n> diff --git a/src/libcamera/v4l2_pixelformat.cpp b/src/libcamera/v4l2_pixelformat.cpp\n> index d87665a4916f..a7ae69bb317d 100644\n> --- a/src/libcamera/v4l2_pixelformat.cpp\n> +++ b/src/libcamera/v4l2_pixelformat.cpp\n> @@ -177,6 +177,22 @@ const std::map<V4L2PixelFormat, V4L2PixelFormat::Info> vpf2pf{\n>  \t\t{ formats::SGRBG12_CSI2P, \"12-bit Bayer GRGR/BGBG Packed\" } },\n>  \t{ V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12P),\n>  \t\t{ formats::SRGGB12_CSI2P, \"12-bit Bayer RGRG/GBGB Packed\" } },\n> +\t{ V4L2PixelFormat(V4L2_PIX_FMT_SBGGR14),\n> +\t\t{ formats::SBGGR14, \"14-bit Bayer BGBG/GRGR\" } },\n> +\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGBRG14),\n> +\t\t{ formats::SGBRG14, \"14-bit Bayer GBGB/RGRG\" } },\n> +\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGRBG14),\n> +\t\t{ formats::SGRBG14, \"14-bit Bayer GRGR/BGBG\" } },\n> +\t{ V4L2PixelFormat(V4L2_PIX_FMT_SRGGB14),\n> +\t\t{ formats::SRGGB14, \"14-bit Bayer RGRG/GBGB\" } },\n> +\t{ V4L2PixelFormat(V4L2_PIX_FMT_SBGGR14P),\n> +\t\t{ formats::SBGGR14_CSI2P, \"14-bit Bayer BGBG/GRGR Packed\" } },\n> +\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGBRG14P),\n> +\t\t{ formats::SGBRG14_CSI2P, \"14-bit Bayer GBGB/RGRG Packed\" } },\n> +\t{ V4L2PixelFormat(V4L2_PIX_FMT_SGRBG14P),\n> +\t\t{ formats::SGRBG14_CSI2P, \"14-bit Bayer GRGR/BGBG Packed\" } },\n> +\t{ V4L2PixelFormat(V4L2_PIX_FMT_SRGGB14P),\n> +\t\t{ formats::SRGGB14_CSI2P, \"14-bit Bayer RGRG/GBGB Packed\" } },\n>  \t{ V4L2PixelFormat(V4L2_PIX_FMT_SBGGR16),\n>  \t\t{ formats::SBGGR16, \"16-bit Bayer BGBG/GRGR\" } },\n>  \t{ V4L2PixelFormat(V4L2_PIX_FMT_SGBRG16),","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 A5789BE173\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 18 Apr 2023 14:32:47 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 16BEA627B8;\n\tTue, 18 Apr 2023 16:32:47 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D91F2603A2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 18 Apr 2023 16:32:45 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(133-32-181-51.west.xps.vectant.ne.jp [133.32.181.51])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id DC4CD720;\n\tTue, 18 Apr 2023 16:32:38 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1681828367;\n\tbh=KQo+lob8fLSiSV0jw9aMvWGZvkUYSxlEZ0KPM2PrDMU=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=FRZfrsEmldM/8nrNyBw941LnFBPfykhDfRlUBDWapqVMDizdrnbwrpmb8sSTbWXzQ\n\tzFEdLQzGKYp20YC7m/mRM7c3rlk4UkboeozTdJ+OM+8J0pT11dXHGCb7kgGqIqt+p/\n\tGx5QxKHiF0ii8hy7gVxOFVUGU13bKLQQSas870gnadzZJzq9xOL5di4IqYrBQ6TQ3h\n\tOKNq5Tjfc8Gt2upGwFCqck/i+UwE2lEBhZBAMWAGJ04u6H70TzTQqxODnrPC8mdRsX\n\tsEfMNo0u30PAjasMl3ajHq1QSxOgBvcdBZxKUhxWs3ArO7qFQOEKLLi/B8JA2F9s5N\n\t25biFchvgC5qw==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1681828359;\n\tbh=KQo+lob8fLSiSV0jw9aMvWGZvkUYSxlEZ0KPM2PrDMU=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=AvtVhx9CtOY/2zFs76ACIrJ19azO6Pwnl5MgHJmR32IlcdJv+wNDM8D7Lt/OVnbAr\n\tDDJZyfmYyF0jkDPYidNWS/tXIDNMRNQGmNpp0a+s0bkRB102zqp9wdP7dCisK+pa5s\n\tID0qw6USpFgQoccxgnRmwUASI08ImLvP46iJ7hDs="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"AvtVhx9C\"; dkim-atps=neutral","Date":"Tue, 18 Apr 2023 17:32:57 +0300","To":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","Message-ID":"<20230418143257.GD30837@pendragon.ideasonboard.com>","References":"<20230418141823.24642-1-jacopo.mondi@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20230418141823.24642-1-jacopo.mondi@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH] libcamera: formats: Add 14-bits Bayer\n\tRAW 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>","From":"Laurent Pinchart via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":26893,"web_url":"https://patchwork.libcamera.org/comment/26893/","msgid":"<CAEmqJPqw-9VLCnAADWF8iT1wD2u-Mmr=oij8+3Eo=kbNv6qTgg@mail.gmail.com>","date":"2023-04-18T14:41:29","subject":"Re: [libcamera-devel] [PATCH] libcamera: formats: Add 14-bits Bayer\n\tRAW formats","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi Jacopo,\n\nThank you for adding these!\n\nOn Tue, 18 Apr 2023 at 15:18, Jacopo Mondi\n<jacopo.mondi@ideasonboard.com> wrote:\n>\n> Add formats definition and mappings for 14-bits Bayer RAW formats.\n>\n> Add definitions for non-packed and CSI-2 packed variants.\n>\n> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n\nReviewed-by: Naushir Patuck <naush@raspberrypi.com>\n\n> ---\n>  src/libcamera/bayer_format.cpp     | 16 ++++++\n>  src/libcamera/formats.c            |  0\n>  src/libcamera/formats.cpp          | 80 ++++++++++++++++++++++++++++++\n>  src/libcamera/formats.yaml         | 22 ++++++++\n>  src/libcamera/v4l2_pixelformat.cpp | 16 ++++++\n>  5 files changed, 134 insertions(+)\n>  create mode 100644 src/libcamera/formats.c\n>\n> diff --git a/src/libcamera/bayer_format.cpp b/src/libcamera/bayer_format.cpp\n> index 6a76d6a4b6dc..3bf15fb48f36 100644\n> --- a/src/libcamera/bayer_format.cpp\n> +++ b/src/libcamera/bayer_format.cpp\n> @@ -140,6 +140,22 @@ const std::map<BayerFormat, Formats, BayerFormatComparator> bayerToFormat{\n>                 { formats::SGRBG12_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12P) } },\n>         { { BayerFormat::RGGB, 12, BayerFormat::Packing::CSI2 },\n>                 { formats::SRGGB12_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12P) } },\n> +       { { BayerFormat::BGGR, 14, BayerFormat::Packing::None },\n> +               { formats::SBGGR14, V4L2PixelFormat(V4L2_PIX_FMT_SBGGR14) } },\n> +       { { BayerFormat::GBRG, 14, BayerFormat::Packing::None },\n> +               { formats::SGBRG14, V4L2PixelFormat(V4L2_PIX_FMT_SGBRG14) } },\n> +       { { BayerFormat::GRBG, 14, BayerFormat::Packing::None },\n> +               { formats::SGRBG14, V4L2PixelFormat(V4L2_PIX_FMT_SGRBG14) } },\n> +       { { BayerFormat::RGGB, 14, BayerFormat::Packing::None },\n> +               { formats::SRGGB14, V4L2PixelFormat(V4L2_PIX_FMT_SRGGB14) } },\n> +       { { BayerFormat::BGGR, 14, BayerFormat::Packing::CSI2 },\n> +               { formats::SBGGR14_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SBGGR14P) } },\n> +       { { BayerFormat::GBRG, 14, BayerFormat::Packing::CSI2 },\n> +               { formats::SGBRG14_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SGBRG14P) } },\n> +       { { BayerFormat::GRBG, 14, BayerFormat::Packing::CSI2 },\n> +               { formats::SGRBG14_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SGRBG14P) } },\n> +       { { BayerFormat::RGGB, 14, BayerFormat::Packing::CSI2 },\n> +               { formats::SRGGB14_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SRGGB14P) } },\n>         { { BayerFormat::BGGR, 16, BayerFormat::Packing::None },\n>                 { formats::SBGGR16, V4L2PixelFormat(V4L2_PIX_FMT_SBGGR16) } },\n>         { { BayerFormat::GBRG, 16, BayerFormat::Packing::None },\n> diff --git a/src/libcamera/formats.c b/src/libcamera/formats.c\n> new file mode 100644\n> index 000000000000..e69de29bb2d1\n> diff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp\n> index f5769c489e16..447e623803c7 100644\n> --- a/src/libcamera/formats.cpp\n> +++ b/src/libcamera/formats.cpp\n> @@ -719,6 +719,86 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{\n>                 .pixelsPerGroup = 2,\n>                 .planes = {{ { 3, 1 }, { 0, 0 }, { 0, 0 } }},\n>         } },\n> +       { formats::SBGGR14, {\n> +               .name = \"SBGGR14\",\n> +               .format = formats::SBGGR14,\n> +               .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR14), },\n> +               .bitsPerPixel = 14,\n> +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n> +               .packed = false,\n> +               .pixelsPerGroup = 2,\n> +               .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }},\n> +       } },\n> +       { formats::SGBRG14, {\n> +               .name = \"SGBRG14\",\n> +               .format = formats::SGBRG14,\n> +               .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG14), },\n> +               .bitsPerPixel = 14,\n> +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n> +               .packed = false,\n> +               .pixelsPerGroup = 2,\n> +               .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }},\n> +       } },\n> +       { formats::SGRBG14, {\n> +               .name = \"SGRBG14\",\n> +               .format = formats::SGRBG14,\n> +               .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG14), },\n> +               .bitsPerPixel = 14,\n> +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n> +               .packed = false,\n> +               .pixelsPerGroup = 2,\n> +               .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }},\n> +       } },\n> +       { formats::SRGGB14, {\n> +               .name = \"SRGGB14\",\n> +               .format = formats::SRGGB14,\n> +               .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB14), },\n> +               .bitsPerPixel = 14,\n> +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n> +               .packed = false,\n> +               .pixelsPerGroup = 2,\n> +               .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }},\n> +       } },\n> +       { formats::SBGGR14_CSI2P, {\n> +               .name = \"SBGGR14_CSI2P\",\n> +               .format = formats::SBGGR14_CSI2P,\n> +               .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR14P), },\n> +               .bitsPerPixel = 14,\n> +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n> +               .packed = true,\n> +               .pixelsPerGroup = 4,\n> +               .planes = {{ { 7, 1 }, { 0, 0 }, { 0, 0 } }},\n> +       } },\n> +       { formats::SGBRG14_CSI2P, {\n> +               .name = \"SGBRG14_CSI2P\",\n> +               .format = formats::SGBRG14_CSI2P,\n> +               .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG14P), },\n> +               .bitsPerPixel = 14,\n> +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n> +               .packed = true,\n> +               .pixelsPerGroup = 4,\n> +               .planes = {{ { 7, 1 }, { 0, 0 }, { 0, 0 } }},\n> +       } },\n> +       { formats::SGRBG14_CSI2P, {\n> +               .name = \"SGRBG14_CSI2P\",\n> +               .format = formats::SGRBG14_CSI2P,\n> +               .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG14P), },\n> +               .bitsPerPixel = 14,\n> +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n> +               .packed = true,\n> +               .pixelsPerGroup = 4,\n> +               .planes = {{ { 7, 1 }, { 0, 0 }, { 0, 0 } }},\n> +       } },\n> +       { formats::SRGGB14_CSI2P, {\n> +               .name = \"SRGGB14_CSI2P\",\n> +               .format = formats::SRGGB14_CSI2P,\n> +               .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB14P), },\n> +               .bitsPerPixel = 14,\n> +               .colourEncoding = PixelFormatInfo::ColourEncodingRAW,\n> +               .packed = true,\n> +               .pixelsPerGroup = 4,\n> +               .planes = {{ { 7, 1 }, { 0, 0 }, { 0, 0 } }},\n> +       } },\n>         { formats::SBGGR16, {\n>                 .name = \"SBGGR16\",\n>                 .format = formats::SBGGR16,\n> diff --git a/src/libcamera/formats.yaml b/src/libcamera/formats.yaml\n> index e586cde1d705..539ac0b33084 100644\n> --- a/src/libcamera/formats.yaml\n> +++ b/src/libcamera/formats.yaml\n> @@ -110,6 +110,15 @@ formats:\n>    - SBGGR12:\n>        fourcc: DRM_FORMAT_SBGGR12\n>\n> +  - SRGGB14:\n> +      fourcc: DRM_FORMAT_SRGGB14\n> +  - SGRBG14:\n> +      fourcc: DRM_FORMAT_SGRBG14\n> +  - SGBRG14:\n> +      fourcc: DRM_FORMAT_SGBRG14\n> +  - SBGGR14:\n> +      fourcc: DRM_FORMAT_SBGGR14\n> +\n>    - SRGGB16:\n>        fourcc: DRM_FORMAT_SRGGB16\n>    - SGRBG16:\n> @@ -149,6 +158,19 @@ formats:\n>        fourcc: DRM_FORMAT_SBGGR12\n>        mod: MIPI_FORMAT_MOD_CSI2_PACKED\n>\n> +  - SRGGB14_CSI2P:\n> +      fourcc: DRM_FORMAT_SRGGB14\n> +      mod: MIPI_FORMAT_MOD_CSI2_PACKED\n> +  - SGRBG14_CSI2P:\n> +      fourcc: DRM_FORMAT_SGRBG14\n> +      mod: MIPI_FORMAT_MOD_CSI2_PACKED\n> +  - SGBRG14_CSI2P:\n> +      fourcc: DRM_FORMAT_SGBRG14\n> +      mod: MIPI_FORMAT_MOD_CSI2_PACKED\n> +  - SBGGR14_CSI2P:\n> +      fourcc: DRM_FORMAT_SBGGR14\n> +      mod: MIPI_FORMAT_MOD_CSI2_PACKED\n> +\n>    - SRGGB10_IPU3:\n>        fourcc: DRM_FORMAT_SRGGB10\n>        mod: IPU3_FORMAT_MOD_PACKED\n> diff --git a/src/libcamera/v4l2_pixelformat.cpp b/src/libcamera/v4l2_pixelformat.cpp\n> index d87665a4916f..a7ae69bb317d 100644\n> --- a/src/libcamera/v4l2_pixelformat.cpp\n> +++ b/src/libcamera/v4l2_pixelformat.cpp\n> @@ -177,6 +177,22 @@ const std::map<V4L2PixelFormat, V4L2PixelFormat::Info> vpf2pf{\n>                 { formats::SGRBG12_CSI2P, \"12-bit Bayer GRGR/BGBG Packed\" } },\n>         { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12P),\n>                 { formats::SRGGB12_CSI2P, \"12-bit Bayer RGRG/GBGB Packed\" } },\n> +       { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR14),\n> +               { formats::SBGGR14, \"14-bit Bayer BGBG/GRGR\" } },\n> +       { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG14),\n> +               { formats::SGBRG14, \"14-bit Bayer GBGB/RGRG\" } },\n> +       { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG14),\n> +               { formats::SGRBG14, \"14-bit Bayer GRGR/BGBG\" } },\n> +       { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB14),\n> +               { formats::SRGGB14, \"14-bit Bayer RGRG/GBGB\" } },\n> +       { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR14P),\n> +               { formats::SBGGR14_CSI2P, \"14-bit Bayer BGBG/GRGR Packed\" } },\n> +       { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG14P),\n> +               { formats::SGBRG14_CSI2P, \"14-bit Bayer GBGB/RGRG Packed\" } },\n> +       { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG14P),\n> +               { formats::SGRBG14_CSI2P, \"14-bit Bayer GRGR/BGBG Packed\" } },\n> +       { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB14P),\n> +               { formats::SRGGB14_CSI2P, \"14-bit Bayer RGRG/GBGB Packed\" } },\n>         { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR16),\n>                 { formats::SBGGR16, \"16-bit Bayer BGBG/GRGR\" } },\n>         { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG16),\n> --\n> 2.40.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 D339ABD1F1\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 18 Apr 2023 14:41:48 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 3B8EE603A2;\n\tTue, 18 Apr 2023 16:41:48 +0200 (CEST)","from mail-yw1-x112d.google.com (mail-yw1-x112d.google.com\n\t[IPv6:2607:f8b0:4864:20::112d])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0B5F4603A2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 18 Apr 2023 16:41:46 +0200 (CEST)","by mail-yw1-x112d.google.com with SMTP id\n\t00721157ae682-54c12009c30so567954987b3.9\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 18 Apr 2023 07:41:45 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1681828908;\n\tbh=543l6yOWeaxj2y08TcTne2LM+0eGD8OkKPQxkveJQak=;\n\th=References:In-Reply-To:Date:To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=q1hPC1H3c2n13chYQ5sC8DlhcFzH/PAl+5Rfya2+d/RKpzk9tKLMmxFU2gelb9hxW\n\t4aJC9J2OasvRm4L5zD869TJMHPump+2YEORihslvquzVtxbqzr0hVe+BOYCfcD+J7T\n\t7yzOMOJdLVhuDWIny/b6vYqFzKZBwNWc19nbkjbbRY4fQjeGvaOeg3S6EseabddK/V\n\tcwYrIevzVJOXVmZBn5fMwir9gdsmXGCxxGRS4F84RRg69M9BAxsacZ+hRF3OJNXmPf\n\t5RiXxwfModsIkAMr7SopBKhh02LM/e0jl5lOJuRwTa/KDWbCAdn3wtC5VMByetNnX4\n\t1S9lO1bIrjfgQ==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1681828904; x=1684420904;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=N1xm9HKNxunDDkd0XZ+Ez2akQwzVJAyH5FiHvz/Avjs=;\n\tb=Cw7SERFQzRDtpWeXm8qT7efZ3sl/d4DtqZqaT7URCCaZ+Y0C7c2kZrESEY42lv9dm9\n\trah0Gsyv160trdDR4qQT39GdpBhNn8dFL5L3iGra7LwAquAcVp2Tn9hz85S93KsvmQ4q\n\t0qrzMd6K8gqKyx/fJ2P70zan6Lbk9i9HgXzcqAqi+jsZ4pyQd1qMCbvhOZov8WUHbCYX\n\t8YXNd/7YvJcmQLOySr1GIIPaJNoKgg49nG3RWyYXGRSJTCbFos68TH+kcOWure0hp8pF\n\t4lLrWzJpDmvUrXPLTHJJ69NKYyUnHdKjGVFQetFe7wayvansvZN7ECsIRDxI8PfPmJEW\n\tW7mQ=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"Cw7SERFQ\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20221208; t=1681828904; x=1684420904;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=N1xm9HKNxunDDkd0XZ+Ez2akQwzVJAyH5FiHvz/Avjs=;\n\tb=CBmYySTP/j8jigaQ8edMaCgqfqHSgoVF8DbnvLJez+9XwbdrCBS9rs53iDTTbJCo1+\n\txxeJJkZLfXRe5wi9VQALmP0TfVPItDOEKa01mta/QTj4SWQsYqpa4U/ArU4EjKzZeBXm\n\tqz+ZLqXUYRM6oIXb5gwG71m+8qzPGlv4eXTcCiYKl27KDgVP4sk3bUy3QRRKAVfEKCZw\n\tvwAc9ebxIBR04tE4GoiZxOuZQyhHsFleJeTM8AxDnf7lcE2F33GWO1iUj23FS8Ie5Ms0\n\t7aHudCjYvka9Ddz5dVn7rL91M/X7Ofc23kD7SR2oRK43+oKEmb6npL7cdv5Tfpk8fDfG\n\tEfRg==","X-Gm-Message-State":"AAQBX9fSFhgAASVtQA8qdnaTimlMviYCyNVofDh7rWO4pSpam2nNc7QK\n\tmAhigSBVaadC5Mm5Biy1q6xTuhBYRAhVFvKD+OFC+A==","X-Google-Smtp-Source":"AKy350bdfaDSWKpaSBJi0pSP+ifP2ZXoTILH1Ycl+ZKOBinlLR7wCmkIl4pRRATnGrcePpiaWEGhbYZkQJd2gcfff8Q=","X-Received":"by 2002:a81:4413:0:b0:552:e74d:318e with SMTP id\n\tr19-20020a814413000000b00552e74d318emr30226ywa.7.1681828904643;\n\tTue, 18 Apr 2023 07:41:44 -0700 (PDT)","MIME-Version":"1.0","References":"<20230418141823.24642-1-jacopo.mondi@ideasonboard.com>","In-Reply-To":"<20230418141823.24642-1-jacopo.mondi@ideasonboard.com>","Date":"Tue, 18 Apr 2023 15:41:29 +0100","Message-ID":"<CAEmqJPqw-9VLCnAADWF8iT1wD2u-Mmr=oij8+3Eo=kbNv6qTgg@mail.gmail.com>","To":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Subject":"Re: [libcamera-devel] [PATCH] libcamera: formats: Add 14-bits Bayer\n\tRAW 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>","From":"Naushir Patuck via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Naushir Patuck <naush@raspberrypi.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]