{"id":10392,"url":"https://patchwork.libcamera.org/api/1.1/patches/10392/?format=json","web_url":"https://patchwork.libcamera.org/patch/10392/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20201106203227.1780845-1-helen.koike@collabora.com>","date":"2020-11-06T20:32:27","name":"[libcamera-devel] libcamera: pipeline: rkisp1: fix crop configuration","commit_ref":null,"pull_url":null,"state":"accepted","archived":false,"hash":"21c41fe6fa97ee368095f1e4d310f1f7ee3f9638","submitter":{"id":20,"url":"https://patchwork.libcamera.org/api/1.1/people/20/?format=json","name":"Helen Koike","email":"helen.koike@collabora.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/10392/mbox/","series":[{"id":1450,"url":"https://patchwork.libcamera.org/api/1.1/series/1450/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=1450","date":"2020-11-06T20:32:27","name":"[libcamera-devel] libcamera: pipeline: rkisp1: fix crop configuration","version":1,"mbox":"https://patchwork.libcamera.org/series/1450/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/10392/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/10392/checks/","tags":{},"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 C5938BE082\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  6 Nov 2020 20:32:38 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4491762D24;\n\tFri,  6 Nov 2020 21:32:38 +0100 (CET)","from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id F062560344\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  6 Nov 2020 21:32:36 +0100 (CET)","from [127.0.0.1] (localhost [127.0.0.1])\n\t(Authenticated sender: koike) with ESMTPSA id 1A5CE1F46C0C"],"From":"Helen Koike <helen.koike@collabora.com>","To":"libcamera-devel@lists.libcamera.org","Date":"Fri,  6 Nov 2020 17:32:27 -0300","Message-Id":"<20201106203227.1780845-1-helen.koike@collabora.com>","X-Mailer":"git-send-email 2.29.2","MIME-Version":"1.0","Subject":"[libcamera-devel] [PATCH] libcamera: pipeline: rkisp1: fix crop\n\tconfiguration","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>","Cc":"kernel@collabora.com","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"Crop rectangle was not being configured on the isp output pad nor in the\nresizer input pad, causing an unecessary crop in the image and an\nunecessary scaling by the resizer when streaming with a higher\nresolution then the default 800x600.\n\nExample:\n    cam -c 1 -C -s width=3280,height=2464\n\nIn the pipeline:\n    sensor->isp->resizer->dma_engine\n\nisp output crop is set to 800x600, which limits the output format to\n800x600, which is propagated to the resizer input format set to 800x600,\nand the resizer output format is set to the desired end resolution\n3280x2464.\n\nSigned-off-by: Helen Koike <helen.koike@collabora.com>\n---\n src/libcamera/pipeline/rkisp1/rkisp1.cpp      | 16 +++++++++++++---\n src/libcamera/pipeline/rkisp1/rkisp1_path.cpp |  7 ++++++-\n 2 files changed, 19 insertions(+), 4 deletions(-)","diff":"diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\nindex c74a2e9b..10d44400 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -698,17 +698,27 @@ int PipelineHandlerRkISP1::configure(Camera *camera, CameraConfiguration *c)\n \tif (ret < 0)\n \t\treturn ret;\n \n-\tLOG(RkISP1, Debug) << \"ISP input pad configured with \" << format.toString();\n+\tLOG(RkISP1, Debug)\n+\t\t<< \"ISP input pad configured with \" << format.toString()\n+\t\t<< \" crop \" << rect.toString();\n \n \t/* YUYV8_2X8 is required on the ISP source path pad for YUV output. */\n \tformat.mbus_code = MEDIA_BUS_FMT_YUYV8_2X8;\n-\tLOG(RkISP1, Debug) << \"Configuring ISP output pad with \" << format.toString();\n+\tLOG(RkISP1, Debug)\n+\t\t<< \"Configuring ISP output pad with \" << format.toString()\n+\t\t<< \" crop (img stabilizer) \" << rect.toString();\n+\n+\tret = isp_->setSelection(2, V4L2_SEL_TGT_CROP, &rect);\n+\tif (ret < 0)\n+\t\treturn ret;\n \n \tret = isp_->setFormat(2, &format);\n \tif (ret < 0)\n \t\treturn ret;\n \n-\tLOG(RkISP1, Debug) << \"ISP output pad configured with \" << format.toString();\n+\tLOG(RkISP1, Debug)\n+\t\t<< \"ISP output pad configured with \" << format.toString()\n+\t\t<< \" crop (img stabilizer) \" << rect.toString();\n \n \tfor (const StreamConfiguration &cfg : *config) {\n \t\tif (cfg.stream() == &data->mainPathStream_)\ndiff --git a/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp b/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp\nindex e98515c8..50c0747c 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp\n@@ -117,9 +117,14 @@ int RkISP1Path::configure(const StreamConfiguration &config,\n \tif (ret < 0)\n \t\treturn ret;\n \n+\tRectangle rect(0, 0, ispFormat.size);\n+\tret = resizer_->setSelection(0, V4L2_SEL_TGT_CROP, &rect);\n+\tif (ret < 0)\n+\t\treturn ret;\n+\n \tLOG(RkISP1, Debug)\n \t\t<< \"Configured \" << name_ << \" resizer input pad with \"\n-\t\t<< ispFormat.toString();\n+\t\t<< ispFormat.toString() << \" crop \" << rect.toString();\n \n \tispFormat.size = config.size;\n \n","prefixes":["libcamera-devel"]}