Cover Letter Detail
Show a cover letter.
GET /api/covers/3811/?format=api
{ "id": 3811, "url": "https://patchwork.libcamera.org/api/covers/3811/?format=api", "web_url": "https://patchwork.libcamera.org/cover/3811/", "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": "<20200519032505.17307-1-laurent.pinchart@ideasonboard.com>", "date": "2020-05-19T03:24:57", "name": "[libcamera-devel,0/8] libcamera: Add DRM/KMS viewfinder display to cam", "submitter": { "id": 2, "url": "https://patchwork.libcamera.org/api/people/2/?format=api", "name": "Laurent Pinchart", "email": "laurent.pinchart@ideasonboard.com" }, "mbox": "https://patchwork.libcamera.org/cover/3811/mbox/", "series": [ { "id": 912, "url": "https://patchwork.libcamera.org/api/series/912/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=912", "date": "2020-05-19T03:24:57", "name": "libcamera: Add DRM/KMS viewfinder display to cam", "version": 1, "mbox": "https://patchwork.libcamera.org/series/912/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/covers/3811/comments/", "headers": { "Return-Path": "<laurent.pinchart@ideasonboard.com>", "Received": [ "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 A3BD1603D6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 19 May 2020 05:25:18 +0200 (CEST)", "from pendragon.bb.dnainternet.fi (81-175-216-236.bb.dnainternet.fi\n\t[81.175.216.236])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 2486830C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 19 May 2020 05:25:18 +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=\"ZiUzXLAy\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1589858718;\n\tbh=oMfb+AT/tJ9cyFUkKEieKYCHilAtmIawUGyEcrjaayA=;\n\th=From:To:Subject:Date:From;\n\tb=ZiUzXLAyLNDzSe/+3Y3/sVdRgNYaZylYMCA7AqBacETQq/YR3yi/DWuQcKgFq753P\n\t1T6WdT1MgfAXtP5DJ1zzRfSTX0whmZinuRzJc5zjpbnyNpf/4rRtI4FXU1UEzN20Xp\n\tLBr635NRgoVo5gmAixCB0NT4YnMx2VvL9aQ8xhuY=", "From": "Laurent Pinchart <laurent.pinchart@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Tue, 19 May 2020 06:24:57 +0300", "Message-Id": "<20200519032505.17307-1-laurent.pinchart@ideasonboard.com>", "X-Mailer": "git-send-email 2.26.2", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH 0/8] libcamera: Add DRM/KMS viewfinder\n\tdisplay to cam", "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": "Tue, 19 May 2020 03:25:18 -0000" }, "content": "Hello,\n\nThis patch series extends the cam application to implement live\nviewfinder display using a DRM/KMS device. Supported display features\nare currently fairly limited (scaling and overlays are not supported for\ninstance), but should nonetheless be a good first step.\n\nPatches 1/8 to 4/8 refactor the cam application and the BufferWriter\nclass to introduce an abstract FrameSink class. Patch 5/8 adds a set of\nclasses to wrap the DRM/KMS API (using libdrm). Patches 6/8 and 7/8 add\na DRM/KMS frame sink implementation, and patch 8/8 wires it up in the\ncam application.\n\nI've kept patch 7/8 separate from 6/8 from now as I'm not entirely sure\nwhat the best course of action is. Enabling the display is a costly\noperation, so doing it at start() time would be best. However, we would\nneed a frame buffer to be displayed at that point, and none is available\nyet from the camera. Patch 7/8 thus delays enabling the display to the\nfirst frame. The operation isn't too costly from a userspace point of\nview as the atomic request is committed asynchronously (although it\nstill requires two ioctl calls, one to create the mode blob - but this\ncould be moved to start() - and one to commit the request). Another\noption would be to allocate an extra dumb buffer and fill it with static\ndata for the first frame. I'm also toying with the idea to move the sink\nhandling from the request completion handler (running in the camera\nmanager thread) to the main application thread.\n\nI've tested this with the simple pipeline handler on an i.MX7, running\n\ncam -c 1 -s pixelformat=0x34325241,width=480,height=800 -C -D DPI-1\n\nThe size of the stream has to match the size of the display, as scaling\nisn't supported yet (which wouldn't help on the i.MX7 anyway, as the\ndisplay controller doesn't support scaling).\n\nLaurent Pinchart (8):\n cam: Pass stream roles to Capture class\n cam: Add FrameSink base class\n cam: Turn BufferWriter into a FrameSink\n cam: Rename BufferWriter to FileSink\n cam: Add DRM helper classes\n cam: Add KMS sink class\n cam: kms_sink: Enable display on first frame\n cam: Add support for viewfinder through DRM/KMS\n\n src/cam/buffer_writer.h | 31 -\n src/cam/capture.cpp | 100 ++-\n src/cam/capture.h | 10 +-\n src/cam/drm.cpp | 661 +++++++++++++++++++\n src/cam/drm.h | 334 ++++++++++\n src/cam/{buffer_writer.cpp => file_sink.cpp} | 35 +-\n src/cam/file_sink.h | 36 +\n src/cam/frame_sink.cpp | 31 +\n src/cam/frame_sink.h | 35 +\n src/cam/kms_sink.cpp | 288 ++++++++\n src/cam/kms_sink.h | 74 +++\n src/cam/main.cpp | 20 +-\n src/cam/main.h | 1 +\n src/cam/meson.build | 18 +-\n 14 files changed, 1611 insertions(+), 63 deletions(-)\n delete mode 100644 src/cam/buffer_writer.h\n create mode 100644 src/cam/drm.cpp\n create mode 100644 src/cam/drm.h\n rename src/cam/{buffer_writer.cpp => file_sink.cpp} (69%)\n create mode 100644 src/cam/file_sink.h\n create mode 100644 src/cam/frame_sink.cpp\n create mode 100644 src/cam/frame_sink.h\n create mode 100644 src/cam/kms_sink.cpp\n create mode 100644 src/cam/kms_sink.h" }