[{"id":5013,"web_url":"https://patchwork.libcamera.org/comment/5013/","msgid":"<20200604091355.GC5829@pendragon.ideasonboard.com>","date":"2020-06-04T09:13:55","subject":"Re: [libcamera-devel] [PATCH v2] libcamera: pipeline: vimc: Skip\n\tunsupported formats","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Kieran,\n\nThank you for the patch.\n\nOn Thu, Jun 04, 2020 at 10:04:27AM +0100, Kieran Bingham wrote:\n> Older kernels do not support all 'reported' formats. Skip them on those\n> kernels.\n> \n> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> ---\n> \n> v2:\n>  - Remove todo, and confirm the kernel version.\n>  - Adjust validate() to reference the available formats in the\n>    configuration.\n> \n>  src/libcamera/pipeline/vimc/vimc.cpp | 19 +++++++++++++++++--\n>  1 file changed, 17 insertions(+), 2 deletions(-)\n> \n> diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp\n> index 68d65bc785b0..914df3476eb9 100644\n> --- a/src/libcamera/pipeline/vimc/vimc.cpp\n> +++ b/src/libcamera/pipeline/vimc/vimc.cpp\n> @@ -136,8 +136,9 @@ CameraConfiguration::Status VimcCameraConfiguration::validate()\n>  \tStreamConfiguration &cfg = config_[0];\n>  \n>  \t/* Adjust the pixel format. */\n> -\tif (pixelformats.find(cfg.pixelFormat) == pixelformats.end()) {\n> -\t\tLOG(VIMC, Debug) << \"Adjusting format to RGB24\";\n> +\tconst std::vector<libcamera::PixelFormat> formats = cfg.formats().pixelformats();\n> +\tif (std::find(formats.begin(), formats.end(), cfg.pixelFormat) == formats.end()) {\n> +\t\tLOG(VIMC, Debug) << \"Adjusting format to BGR888\";\n>  \t\tcfg.pixelFormat = PixelFormat(DRM_FORMAT_BGR888);\n>  \t\tstatus = Adjusted;\n>  \t}\n> @@ -171,6 +172,7 @@ CameraConfiguration *PipelineHandlerVimc::generateConfiguration(Camera *camera,\n>  \tconst StreamRoles &roles)\n>  {\n>  \tCameraConfiguration *config = new VimcCameraConfiguration();\n> +\tVimcCameraData *data = cameraData(camera);\n>  \n>  \tif (roles.empty())\n>  \t\treturn config;\n> @@ -178,6 +180,19 @@ CameraConfiguration *PipelineHandlerVimc::generateConfiguration(Camera *camera,\n>  \tstd::map<PixelFormat, std::vector<SizeRange>> formats;\n>  \n>  \tfor (const auto &pixelformat : pixelformats) {\n> +\t\t/*\n> +\t\t * Kernels previous to v5.7 incorrectly report support for\n\ns/previous/prior/ ?\n\n> +\t\t * RGB888, but it isn't functional within the pipeline.\n> +\t\t */\n> +\t\tif (data->media_->version() < KERNEL_VERSION(5, 7, 0)) {\n> +\t\t\tif (pixelformat.first != PixelFormat(DRM_FORMAT_BGR888)) {\n> +\t\t\t\tLOG(VIMC, Info)\n> +\t\t\t\t\t<< \"Skipping unsupported pixel format \"\n> +\t\t\t\t\t<< pixelformat.first.toString();\n> +\t\t\t\tcontinue;\n> +\t\t\t}\n> +\t\t}\n\nI think we'll need more complex logic in the future when new formats\nwill be supported, but that can wait.\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> +\n>  \t\t/* The scaler hardcodes a x3 scale-up ratio. */\n>  \t\tstd::vector<SizeRange> sizes{\n>  \t\t\tSizeRange{ { 48, 48 }, { 4096, 2160 } }","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 B4492603C8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  4 Jun 2020 11:14:12 +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 3315B29B;\n\tThu,  4 Jun 2020 11:14:12 +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=\"GWSfJcmd\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1591262052;\n\tbh=a8pMHxTOlMKkAoGOVlmV2RX+0IbdXxCDeudCq7PlTiw=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=GWSfJcmdI/1NVjKdtIl7k4L0aFduDJVIzPdqt8O02qqbfyyqzPeQG02jkltyYmaQn\n\tddzPqcjPy5JFZVAMolcCLvuQepjMRYgcmI0i5+8F+NBfGStxrYcioxT/s5QXWqxocH\n\tcfa8j2Qhkf5AuEaFy53LlpTAR5dTL4Fji8i9P3GI=","Date":"Thu, 4 Jun 2020 12:13:55 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Message-ID":"<20200604091355.GC5829@pendragon.ideasonboard.com>","References":"<20200604090427.3779613-1-kieran.bingham@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20200604090427.3779613-1-kieran.bingham@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v2] libcamera: pipeline: vimc: Skip\n\tunsupported 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, 04 Jun 2020 09:14:13 -0000"}}]