Patch Detail
Show a patch.
GET /api/1.1/patches/13678/?format=api
{ "id": 13678, "url": "https://patchwork.libcamera.org/api/1.1/patches/13678/?format=api", "web_url": "https://patchwork.libcamera.org/patch/13678/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20210906225636.14683-12-laurent.pinchart@ideasonboard.com>", "date": "2021-09-06T22:56:18", "name": "[libcamera-devel,v3,12/30] libcamera: v4l2_videodevice: Take stride into account to compute offsets", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "2d22aac0100ecac363fb04a470a64e3ebc0ec006", "submitter": { "id": 2, "url": "https://patchwork.libcamera.org/api/1.1/people/2/?format=api", "name": "Laurent Pinchart", "email": "laurent.pinchart@ideasonboard.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/13678/mbox/", "series": [ { "id": 2482, "url": "https://patchwork.libcamera.org/api/1.1/series/2482/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=2482", "date": "2021-09-06T22:54:20", "name": "libcamera: Handle fallout of FrameBuffer offset support", "version": 3, "mbox": "https://patchwork.libcamera.org/series/2482/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/13678/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/13678/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 43A5ABE175\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 6 Sep 2021 22:57:19 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id EC1356917F;\n\tTue, 7 Sep 2021 00:57:18 +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 DC5916916C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 7 Sep 2021 00:57:03 +0200 (CEST)", "from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 6E19F891;\n\tTue, 7 Sep 2021 00:57:03 +0200 (CEST)" ], "Authentication-Results": "lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"cVrO9yZn\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1630969023;\n\tbh=zVgGXo4m+aHg7nB3jjUEoAJGed4MOav0IDCcFOskuzc=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=cVrO9yZniPMh9O2zR8iE7xIKON8XRnb+YJQ6binm3q/AJj0C81vF+VoFMQ4NbmwtK\n\tcUwlm9lRsvXlnmsOorwOZnKFNOego106SJaXRD8z3usNGWthq2KrB1SvBSSTUzUr2P\n\tJwEtUxOQCyF7YxqpxkgqZGJvOxnU6pD7ef5dfwGM=", "From": "Laurent Pinchart <laurent.pinchart@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Tue, 7 Sep 2021 01:56:18 +0300", "Message-Id": "<20210906225636.14683-12-laurent.pinchart@ideasonboard.com>", "X-Mailer": "git-send-email 2.32.0", "In-Reply-To": "<20210906225420.13275-1-laurent.pinchart@ideasonboard.com>", "References": "<20210906225420.13275-1-laurent.pinchart@ideasonboard.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH v3 12/30] libcamera: v4l2_videodevice:\n\tTake stride into account to compute offsets", "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>" }, "content": "When creating FrameBuffer instances, the V4L2VideoDevice computes plane\noffsets using minimal stride for the format. This doesn't always produce\na valid result when the device requires padding at the end of lines. Fix\nit by computing offsets using the stride reported by V4L2.\n\nSigned-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\nReviewed-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>\nReviewed-by: Hirokazu Honda <hiroh@chromium.org>\n---\n src/libcamera/v4l2_videodevice.cpp | 16 +++++++++++++---\n 1 file changed, 13 insertions(+), 3 deletions(-)", "diff": "diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp\nindex 88535f5a07c7..c6c9263c49e9 100644\n--- a/src/libcamera/v4l2_videodevice.cpp\n+++ b/src/libcamera/v4l2_videodevice.cpp\n@@ -1354,11 +1354,21 @@ std::unique_ptr<FrameBuffer> V4L2VideoDevice::createBuffer(unsigned int index)\n \t\tsize_t offset = 0;\n \n \t\tfor (size_t i = 0; i < planes.size(); ++i) {\n+\t\t\t/*\n+\t\t\t * The stride is reported by V4L2 for the first plane\n+\t\t\t * only. Compute the stride of the other planes by\n+\t\t\t * taking the horizontal subsampling factor into\n+\t\t\t * account, which is equal to the bytesPerGroup ratio of\n+\t\t\t * the planes.\n+\t\t\t */\n+\t\t\tunsigned int stride = format_.planes[0].bpl\n+\t\t\t\t\t * formatInfo_->planes[i].bytesPerGroup\n+\t\t\t\t\t / formatInfo_->planes[0].bytesPerGroup;\n+\n \t\t\tplanes[i].fd = fd;\n \t\t\tplanes[i].offset = offset;\n-\n-\t\t\t/* \\todo Take the V4L2 stride into account */\n-\t\t\tplanes[i].length = formatInfo_->planeSize(format_.size, i);\n+\t\t\tplanes[i].length = formatInfo_->planeSize(format_.size.height,\n+\t\t\t\t\t\t\t\t i, stride);\n \t\t\toffset += planes[i].length;\n \t\t}\n \t}\n", "prefixes": [ "libcamera-devel", "v3", "12/30" ] }