Cover Letter Detail
Show a cover letter.
GET /api/1.1/covers/10415/?format=api
{ "id": 10415, "url": "https://patchwork.libcamera.org/api/1.1/covers/10415/?format=api", "web_url": "https://patchwork.libcamera.org/cover/10415/", "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": "<20201113063815.10288-1-laurent.pinchart@ideasonboard.com>", "date": "2020-11-13T06:38:10", "name": "[libcamera-devel,v1,0/5] cam: Move request processing to main thread", "submitter": { "id": 2, "url": "https://patchwork.libcamera.org/api/1.1/people/2/?format=api", "name": "Laurent Pinchart", "email": "laurent.pinchart@ideasonboard.com" }, "mbox": "https://patchwork.libcamera.org/cover/10415/mbox/", "series": [ { "id": 1458, "url": "https://patchwork.libcamera.org/api/1.1/series/1458/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1458", "date": "2020-11-13T06:38:10", "name": "cam: Move request processing to main thread", "version": 1, "mbox": "https://patchwork.libcamera.org/series/1458/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/covers/10415/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 AFFB9BE086\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 13 Nov 2020 06:38:25 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7E408631B6;\n\tFri, 13 Nov 2020 07:38:25 +0100 (CET)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id BC42763149\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 13 Nov 2020 07:38:23 +0100 (CET)", "from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 36A9F31A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 13 Nov 2020 07:38:23 +0100 (CET)" ], "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=\"qzOEkz4Q\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1605249503;\n\tbh=Xe7ANk361kpda4hf4DZb74y0h87EO+aEUpfv8VB6hNY=;\n\th=From:To:Subject:Date:From;\n\tb=qzOEkz4QSOA3DwmSGjaLvS9dGjdEXA3xy2RzDhpbOrUaZ/klpxk/iG41cAMAweoGo\n\trKIWckQJTllGxnAKEKIkfkUPKSx6FFX6dQyJK1Ahwsyy+LDikiAwmnzxf6lCtBjYzb\n\tYaTjvyWGmM6DNQ5IEvtdNrFpx7DeCl2vpxohHBpc=", "From": "Laurent Pinchart <laurent.pinchart@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Fri, 13 Nov 2020 08:38:10 +0200", "Message-Id": "<20201113063815.10288-1-laurent.pinchart@ideasonboard.com>", "X-Mailer": "git-send-email 2.27.0", "MIME-Version": "1.0", "Subject": "[libcamera-devel] [PATCH v1 0/5] cam: Move request processing to\n\tmain thread", "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>", "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": "Hello,\n\nThis patch series improves the cam application by moving request\nprocessing to the main thread to avoid blocking the camera manager\nthread (in which the request completion signal is emitted) for extended\nperiods of time. This helps meeting the realtime constraints of pipeline\nhandlers.\n\nNote that move requesting processing to a different thread isn't a\nmagical solution, if the average processing time for a request is larger\nthan the frame interval, a request queue underrun will still occur. It\nhowever helps handling random delays in request processing.\n\nIncluded in the series is a move to libevent to implement the cam event\nloop. The event loop is currently based on the libcamera event\ndispatcher for historical reasons. The event dispatcher API exposed by\nlibcamera is incomplete, as thread support is internal to libcamera.\nInstead of reimplementing the missing parts in the cam event loop, or\nexposing thread support in the libcamera public API, moving to libevent\nallows making the event dispatcher implementation fully private (in\npatch 3/5). It isn't the job of libcamera to provide such generic APIs.\n\nLaurent Pinchart (5):\n test: Get event dispatcher from current thread\n cam: Use libevent to implement event loop\n libcamera: Move EventDispatcher to internal API\n cam: event_loop: Add deferred calls support\n cam: Move request processing to main thread\n\n include/libcamera/camera_manager.h | 4 --\n .../{ => internal}/event_dispatcher.h | 0\n .../internal/event_dispatcher_poll.h | 2 +-\n .../libcamera/{ => internal}/event_notifier.h | 0\n include/libcamera/internal/meson.build | 3 +\n include/libcamera/{ => internal}/timer.h | 0\n include/libcamera/meson.build | 3 -\n src/cam/capture.cpp | 9 +++\n src/cam/capture.h | 1 +\n src/cam/event_loop.cpp | 63 ++++++++++++++++---\n src/cam/event_loop.h | 24 ++++---\n src/cam/main.cpp | 16 ++---\n src/cam/meson.build | 13 +++-\n src/libcamera/camera_manager.cpp | 44 +------------\n src/libcamera/device_enumerator_udev.cpp | 3 +-\n src/libcamera/event_dispatcher.cpp | 2 +-\n src/libcamera/event_dispatcher_poll.cpp | 5 +-\n src/libcamera/event_notifier.cpp | 4 +-\n src/libcamera/ipc_unixsocket.cpp | 3 +-\n src/libcamera/pipeline/rkisp1/timeline.h | 3 +-\n src/libcamera/process.cpp | 3 +-\n .../proxy/worker/ipa_proxy_linux_worker.cpp | 2 +-\n src/libcamera/thread.cpp | 3 +-\n src/libcamera/timer.cpp | 4 +-\n src/libcamera/v4l2_device.cpp | 3 +-\n src/libcamera/v4l2_videodevice.cpp | 2 +-\n test/camera/buffer_import.cpp | 8 +--\n test/camera/capture.cpp | 9 ++-\n test/event-dispatcher.cpp | 5 +-\n test/event-thread.cpp | 5 +-\n test/event.cpp | 7 +--\n test/hotplug-cameras.cpp | 4 +-\n test/ipa/ipa_interface_test.cpp | 6 +-\n test/ipc/unixsocket.cpp | 5 +-\n test/log/log_process.cpp | 4 +-\n test/object-invoke.cpp | 2 +-\n test/process/process_test.cpp | 5 +-\n test/timer-thread.cpp | 5 +-\n test/timer.cpp | 5 +-\n test/v4l2_videodevice/buffer_sharing.cpp | 4 +-\n test/v4l2_videodevice/capture_async.cpp | 4 +-\n test/v4l2_videodevice/v4l2_m2mdevice.cpp | 4 +-\n 42 files changed, 159 insertions(+), 142 deletions(-)\n rename include/libcamera/{ => internal}/event_dispatcher.h (100%)\n rename include/libcamera/{ => internal}/event_notifier.h (100%)\n rename include/libcamera/{ => internal}/timer.h (100%)" }