[{"id":30654,"web_url":"https://patchwork.libcamera.org/comment/30654/","msgid":"<20240807092834.GD21319@pendragon.ideasonboard.com>","date":"2024-08-07T09:28:34","subject":"Re: [PATCH v1 1/2] libcamera: formats: Adding Support for Y12P","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Naush and Will,\n\nThank you for the patch.\n\nOn Wed, Aug 07, 2024 at 09:03:43AM +0100, Naushir Patuck wrote:\n> From: will whang <will@willwhang.com>\n> \n> Add support for the 12-bit Mono (V4L2_PIX_FMT_Y12P) format.\n> This format is used by the IMX585 mono sensor.\n\nTechnically speaking the IMX585 sensor uses the MEDIA_BUS_FMT_Y12_1X12\nmedia bus format. The V4L2_PIX_FMT_Y12P format is what you get in memory\nwith DMA engines that store data using the CSI-2 packing.\n\nThe contents of the patch look good.\n\n> Signed-off-by: will whang <will@willwhang.com>\n> Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> ---\n>  src/libcamera/bayer_format.cpp     |  2 ++\n>  src/libcamera/formats.cpp          | 10 ++++++++++\n>  src/libcamera/formats.yaml         |  3 +++\n>  src/libcamera/v4l2_pixelformat.cpp |  2 ++\n>  4 files changed, 17 insertions(+)\n> \n> diff --git a/src/libcamera/bayer_format.cpp b/src/libcamera/bayer_format.cpp\n> index 014f716d28f7..c2120d1c16d7 100644\n> --- a/src/libcamera/bayer_format.cpp\n> +++ b/src/libcamera/bayer_format.cpp\n> @@ -184,6 +184,8 @@ const std::map<BayerFormat, Formats, BayerFormatComparator> bayerToFormat{\n>  \t\t{ formats::R10_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_Y10P) } },\n>  \t{ { BayerFormat::MONO, 12, BayerFormat::Packing::None },\n>  \t\t{ formats::R12, V4L2PixelFormat(V4L2_PIX_FMT_Y12) } },\n> +\t{ { BayerFormat::MONO, 12, BayerFormat::Packing::CSI2 },\n> +\t\t{ formats::R12_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_Y12P) } },\n>  \t{ { BayerFormat::MONO, 16, BayerFormat::Packing::None },\n>  \t\t{ formats::R16, V4L2PixelFormat(V4L2_PIX_FMT_Y16) } },\n>  \t{ { BayerFormat::MONO, 16, BayerFormat::Packing::PISP1 },\n> diff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp\n> index cf41f2c261ed..f338fc373f33 100644\n> --- a/src/libcamera/formats.cpp\n> +++ b/src/libcamera/formats.cpp\n> @@ -527,6 +527,16 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{\n>  \t\t.pixelsPerGroup = 4,\n>  \t\t.planes = {{ { 5, 1 }, { 0, 0 }, { 0, 0 } }},\n>  \t} },\n> +\t{ formats::R12_CSI2P, {\n> +\t\t.name = \"R12_CSI2P\",\n> +\t\t.format = formats::R12_CSI2P,\n> +\t\t.v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_Y12P), },\n> +\t\t.bitsPerPixel = 12,\n> +\t\t.colourEncoding = PixelFormatInfo::ColourEncodingYUV,\n> +\t\t.packed = true,\n> +\t\t.pixelsPerGroup = 2,\n> +\t\t.planes = {{ { 3, 1 }, { 0, 0 }, { 0, 0 } }},\n> +\t} },\n>  \t{ formats::R12, {\n>  \t\t.name = \"R12\",\n>  \t\t.format = formats::R12,\n> diff --git a/src/libcamera/formats.yaml b/src/libcamera/formats.yaml\n> index fe027a7cce70..2d54d391ca01 100644\n> --- a/src/libcamera/formats.yaml\n> +++ b/src/libcamera/formats.yaml\n> @@ -138,6 +138,9 @@ formats:\n>    - R10_CSI2P:\n>        fourcc: DRM_FORMAT_R10\n>        mod: MIPI_FORMAT_MOD_CSI2_PACKED\n> +  - R12_CSI2P:\n> +      fourcc: DRM_FORMAT_R12\n> +      mod: MIPI_FORMAT_MOD_CSI2_PACKED\n>  \n>    - SRGGB10_CSI2P:\n>        fourcc: DRM_FORMAT_SRGGB10\n> diff --git a/src/libcamera/v4l2_pixelformat.cpp b/src/libcamera/v4l2_pixelformat.cpp\n> index 70568335b266..eb9ac2224fd1 100644\n> --- a/src/libcamera/v4l2_pixelformat.cpp\n> +++ b/src/libcamera/v4l2_pixelformat.cpp\n> @@ -139,6 +139,8 @@ const std::map<V4L2PixelFormat, V4L2PixelFormat::Info> vpf2pf{\n>  \t\t{ formats::R10_CSI2P, \"10-bit Greyscale Packed\" } },\n>  \t{ V4L2PixelFormat(V4L2_PIX_FMT_Y12),\n>  \t\t{ formats::R12, \"12-bit Greyscale\" } },\n> +\t{ V4L2PixelFormat(V4L2_PIX_FMT_Y12P),\n> +\t\t{ formats::R12_CSI2P, \"12-bit Greyscale Packed\" } },\n>  \t{ V4L2PixelFormat(V4L2_PIX_FMT_Y16),\n>  \t\t{ formats::R16, \"16-bit Greyscale\" } },\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 15ADFBE173\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  7 Aug 2024 09:29:00 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 49B7A63382;\n\tWed,  7 Aug 2024 11:28:59 +0200 (CEST)","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 C288861946\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  7 Aug 2024 11:28:57 +0200 (CEST)","from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi\n\t[81.175.209.231])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id E46642EC;\n\tWed,  7 Aug 2024 11:28:04 +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=\"Gfft2MwR\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1723022885;\n\tbh=AQFH3vXv33ov17avq6g6RSIwEE5riPbib9gsJrfFhbM=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=Gfft2MwRGB2rteV9URM+zEoiGbKfVErUfUIa+DYuboAKiqTtIVggJ/c+5RYYATqTX\n\txelbYn4RRZbvcCsssGUfKULWVTSttH0cfRknT4JVbYclaR47oNlXjp9fGMwemcKq3r\n\tvvBw3pw3UNCO8n/t6Lz+j+4PXAstGtMywJZCfZUQ=","Date":"Wed, 7 Aug 2024 12:28:34 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Naushir Patuck <naush@raspberrypi.com>","Cc":"libcamera-devel@lists.libcamera.org, will whang <will@willwhang.com>","Subject":"Re: [PATCH v1 1/2] libcamera: formats: Adding Support for Y12P","Message-ID":"<20240807092834.GD21319@pendragon.ideasonboard.com>","References":"<20240807080344.12780-1-naush@raspberrypi.com>\n\t<20240807080344.12780-2-naush@raspberrypi.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20240807080344.12780-2-naush@raspberrypi.com>","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>"}}]