Cover Letter Detail
Show a cover letter.
GET /api/covers/18229/?format=api
{ "id": 18229, "url": "https://patchwork.libcamera.org/api/covers/18229/?format=api", "web_url": "https://patchwork.libcamera.org/cover/18229/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/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": "<20230202111252.3366729-1-matthias.fend@emfend.at>", "date": "2023-02-02T11:12:45", "name": "[libcamera-devel,RFC,0/7] add support for more complex optics", "submitter": { "id": 134, "url": "https://patchwork.libcamera.org/api/people/134/?format=api", "name": "Matthias Fend", "email": "matthias.fend@emfend.at" }, "mbox": "https://patchwork.libcamera.org/cover/18229/mbox/", "series": [ { "id": 3735, "url": "https://patchwork.libcamera.org/api/series/3735/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=3735", "date": "2023-02-02T11:12:45", "name": "add support for more complex optics", "version": 1, "mbox": "https://patchwork.libcamera.org/series/3735/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/covers/18229/comments/", "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 08BB5C323E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 2 Feb 2023 11:13:06 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1DD01625E7;\n\tThu, 2 Feb 2023 12:13:05 +0100 (CET)", "from lx20.hoststar.hosting (lx20.hoststar.hosting [168.119.41.54])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9F727603BF\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 2 Feb 2023 12:13:02 +0100 (CET)", "from 194-208-208-245.tele.net ([194.208.208.245]:51050\n\thelo=localhost.localdomain)\n\tby lx20.hoststar.hosting with esmtpsa (TLS1.3) tls\n\tTLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.93)\n\t(envelope-from <matthias.fend@emfend.at>)\n\tid 1pNXWX-008Uhs-DO; Thu, 02 Feb 2023 12:13:01 +0100" ], "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1675336385;\n\tbh=lehFmaCtGSjQqupTtJdt35QhfASUdACeq7GbZsOXiYs=;\n\th=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post:\n\tList-Help:List-Subscribe:From:Reply-To:From;\n\tb=k8dQEV/ZTNAV6AhGRph15YIssfbsbLlm4q6Z82mPd4/dhpn2k/gWcGw6gLvoMc+Jp\n\t8NCmMgXEhBMh4dvJUprNicvZflQFvPEJnBTiHmNYLNRT5B1KzlysPtw3+D2wBUpv43\n\t4qIQWJU0FsDu5LyzVa4+vIVUp33/aWlF85Re+X0BcctqNamcEbFJqUyLWfll31VqTm\n\tB48bLK7xxCHgF/EHbADGrM8QUSkdukn/FKDNroZnpVB9b0BFn+geJraSYWO+OtOVaB\n\tvOBtlQqXXaNH+1EPLLFJA1r6fPEF6PN+VqLZxDeAfzNie3OqJytj4hNWNIm13dOU5G\n\tRWJlQb152W94A==", "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=emfend.at;\n\ts=mail;\n\th=Content-Transfer-Encoding:MIME-Version:Message-Id:Date:Subject:Cc:\n\tTo:From:Sender:Reply-To:Content-Type:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tIn-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe:\n\tList-Post:List-Owner:List-Archive;\n\tbh=tUFFdqmjZ/RYMhgydynCEWAokJxPaGLe9XEpQodQKr4=;\n\tb=fDsGFWgQ5en66C4fQUdb2IXipc\n\t9vot7SzaidUnONbrmhCJEUnfzai1l2mA5QilRuR22xiVr2XueTkNwt/ydpz29h+VUQosb5Rq7HkHc\n\tdpVxZ1JKKYi8muJcyODiDXFmqc7t1E9Wq+UidC1dPcqk5n/DK6aPGJrFRCw/v0FXdNew=;" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=emfend.at header.i=@emfend.at\n\theader.b=\"fDsGFWgQ\"; dkim-atps=neutral", "To": "libcamera-devel@lists.libcamera.org", "Date": "Thu, 2 Feb 2023 12:12:45 +0100", "Message-Id": "<20230202111252.3366729-1-matthias.fend@emfend.at>", "X-Mailer": "git-send-email 2.25.1", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-Spam-Score": "", "X-Spam-Bar": "", "X-Spam-Report": "", "Subject": "[libcamera-devel] [RFC PATCH 0/7] add support for more complex\n\toptics", "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": "Matthias Fend via libcamera-devel <libcamera-devel@lists.libcamera.org>", "Reply-To": "Matthias Fend <matthias.fend@emfend.at>", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "Hello,\n\nas mentioned on the mailing list some time ago, I was wondering how to use more complex optics together with libcamera IPAs.\n\nCurrently, only optics with a VCM focus lens are considered in libcamera. With these, an absolute position is set and the lens is almost immediately at the new desired position. Pretty simple.\nFor a slightly more complex optics there are the following differences:\n- There may be multiple lens groups with different functions (zoom, focus, or auxiliary lens).\n- The lens groups are often controlled by stepper motors and thus need some time to reach the new position.\n- It may be necessary to move some lens group(s) synchronously (in realtime) depending on another lens group(s).\n- To implement these requirements, dedicated intelligent controller hardware is often necessary.\n- Depending on the application, calibration of the optics or lens groups may be necessary.\n- With such an optics controller, the current status or position of the lens group(s) can change at any time, and the application must read this information from it.\n\nIn my current case, the control of the optics controller, in analogy to the VCM drivers, was also implemented as a v4l2 device.\nSince this controller requires controls that go beyond the currently available v4l2 controls, this driver must use some custom or at least adapted existing v4l2 controls.\nThe intention is to bring the missing v4l2 controls upstream as well, but if that doesn't fully succeed, there should still be a way to use those controls in an IPA.\n\n\nCurrently, v4l2 controls are used by libcamera to transfer control information for the lens from the IPA to the pipeline handler. This transport form is probably just a utility, but I used the circumstance to transparently bring v4l2 controls from the IPA to the v4l-subdev via the pipeline handler.\nThe IPA can thus use all possible controls at will and assume that they arrive in the driver exactly the same way.\nWith this, I was able to meet my (control) requirements with minor changes.\n\nAs mentioned at the beginning, it may be that only the dedicated optic controller knows where the lens groups actually are.\nTo report back the current state or positions of the lens groups, the v4l2 subdev can provide read-only volatile controls.\nSomething like this was not available in libcamera until now. To have the same interface for this direction, I decided to pass these controls transparently to the IPA as well. So that not all controls must be transferred, I filtered only controls, which can change themselves (volatile).\n\nTo give you a little better idea, I have created this series of patches.\n\nThe question now is whether this approach can in principle be integrated into libcamera?\n\nI look forward to feedback of all kinds.\n\nThanks\n ~Matthias\n\nMatthias Fend (7):\n ipa: rkisp1: add basic camera lens support\n libcamera: camera_lens: add method to set controls on subdev\n pipeline: rkisp1: transparently pass lens controls from the IPA to the\n lens\n libcamera: camera_lens: add method to get controls from subdev\n libcamera: v4l2_device: add function to get a list of volatile control\n ids\n libcamera: camera_lens: add method to get a list of volatile controls\n ipa: rkisp1: pass volatile lens controls to IPA\n\n include/libcamera/internal/camera_lens.h | 3 +++\n include/libcamera/internal/v4l2_device.h | 1 +\n include/libcamera/ipa/rkisp1.mojom | 7 ++++--\n src/libcamera/camera_lens.cpp | 24 +++++++++++++++++++++\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 27 ++++++++++++++++++++----\n src/libcamera/v4l2_device.cpp | 15 +++++++++++++\n 6 files changed, 71 insertions(+), 6 deletions(-)" }