Cover Letter Detail
Show a cover letter.
GET /api/1.1/covers/3093/?format=api
{ "id": 3093, "url": "https://patchwork.libcamera.org/api/1.1/covers/3093/?format=api", "web_url": "https://patchwork.libcamera.org/cover/3093/", "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": "<20200314235728.15495-1-laurent.pinchart@ideasonboard.com>", "date": "2020-03-14T23:57:19", "name": "[libcamera-devel,0/9] Simplify buffer management with V4L2 buffer orphaning", "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/3093/mbox/", "series": [ { "id": 719, "url": "https://patchwork.libcamera.org/api/1.1/series/719/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=719", "date": "2020-03-14T23:57:19", "name": "Simplify buffer management with V4L2 buffer orphaning", "version": 1, "mbox": "https://patchwork.libcamera.org/series/719/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/covers/3093/comments/", "headers": { "Return-Path": "<laurent.pinchart@ideasonboard.com>", "Received": [ "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1809360420\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 15 Mar 2020 00:57:40 +0100 (CET)", "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 8F53410CA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 15 Mar 2020 00:57:39 +0100 (CET)" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1584230259;\n\tbh=9N1+EvM+pGTfD9PTsUoG0Hk62UCS7gUhyYtnLv2UvJw=;\n\th=From:To:Subject:Date:From;\n\tb=V39AYj43reosmSF/woreqKJK00cZKAuJCHbP9CxxEIsw8Y8zRcb2M0b6MtpcHSxKc\n\tmH2xm0a2pb0A99fZs54rkZElKXf248UYJR84nRcafBVC7/8tgbW+Xoagu+SJYmFlM+\n\tNm6jsL0mX3qJCVpJdRRPZZZdJas4+a4urpes8xcM=", "From": "Laurent Pinchart <laurent.pinchart@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Sun, 15 Mar 2020 01:57:19 +0200", "Message-Id": "<20200314235728.15495-1-laurent.pinchart@ideasonboard.com>", "X-Mailer": "git-send-email 2.24.1", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH 0/9] Simplify buffer management with V4L2\n\tbuffer orphaning", "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": "Sat, 14 Mar 2020 23:57:40 -0000" }, "content": "Hello,\n\nThis patch series reworks the buffer API (again :-)) to simplify the\ninterface between the Camera and PipelineHandler objects thanks to the\nuse of V4L2 buffer orphaning.\n\nSince Linux v5.0, V4L2 support buffer orphaning. This feature allows\ncalling VIDIOC_REQBUFS(0) when dmabuf exported from MMAP buffers still\nexist. While this simplifies handling of the V4L2 video device itself by\nremoving the need to track exported buffers before freeing buffers, the\nfeature has an interested side effect: It allows allocating and\nexporting MMAP buffers before reconfiguring the device for DMABUF usage.\nThis effectively provides a cheap version of a generic buffer allocator\ncompatible with the V4L2 video device.\n\nPatch 1/9 is a small initial cleanup of one test class, and is followed\nby patches 2/9 to 5/9 that implements support for standalone buffer\nexport throught buffer orphaning. The V4L2VideoDevice then exposes three\nfunctions, allocateBuffers() for regular MMAP buffer allocation,\nexportBuffers() for export of orphaned buffers, and importBuffers() to\nset the device to DMABUF mode.\n\nPatch 6/9 is a small drive-by cleaned for the Camera class. Patch 7/9\nstarts the rework of the PipelineHandler API by decoupling buffer import\nand export, and patch 8/9 finishes it by folding buffer management\n(import and free) with the start() and stop() operations.\n\nPatch 9/9 finally lifts some restrictions on the FrameBufferAllocator\nclass, made possible by the rework of the API.\n\nFurther enhancements are possible, such as switching to\nVIDIOC_CREATE_BUFS to allocate buffers of user-specified sizes, removing\nthe limitation that the Camera needs to be configured before allocating\nbuffers.\n\nLaurent Pinchart (9):\n test: libtest: buffer_source: Close video device right after\n allocation\n libcamera: v4l2_videodevice: Rename exportBuffers() to\n allocateBuffers()\n libcamera: v4l2_videodevice: Pass memory type to reqbufs()\n libcamera: v4l2_videodevice: Refactor allocateBuffers()\n libcamera: v4l2_videodevice: Add standalone buffer export support\n libcamera: camera: Propagate error value from importFrameBuffer\n libcamera: pipeline_handler: Decouple buffer import and export\n libcamera: pipeline_handler: Fold buffer management with start/stop\n libcamera: framebuffer_allocator: Lift camera restrictions on\n allocator\n\n include/libcamera/camera.h | 3 -\n include/libcamera/framebuffer_allocator.h | 5 +-\n src/cam/capture.cpp | 2 +-\n src/gstreamer/gstlibcameraallocator.cpp | 2 +-\n src/libcamera/camera.cpp | 46 +----\n src/libcamera/framebuffer_allocator.cpp | 34 ----\n src/libcamera/include/pipeline_handler.h | 2 -\n src/libcamera/include/v4l2_videodevice.h | 8 +-\n src/libcamera/pipeline/ipu3/ipu3.cpp | 150 +++++++--------\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 24 +--\n src/libcamera/pipeline/uvcvideo.cpp | 28 ++-\n src/libcamera/pipeline/vimc.cpp | 28 ++-\n src/libcamera/pipeline_handler.cpp | 58 +-----\n src/libcamera/v4l2_videodevice.cpp | 221 ++++++++++++++++++----\n src/qcam/main_window.cpp | 2 +-\n src/v4l2/v4l2_camera.cpp | 2 +-\n test/camera/capture.cpp | 2 +-\n test/camera/statemachine.cpp | 2 +-\n test/libtest/buffer_source.cpp | 26 +--\n test/libtest/buffer_source.h | 1 -\n test/v4l2_videodevice/buffer_sharing.cpp | 2 +-\n test/v4l2_videodevice/capture_async.cpp | 6 +-\n test/v4l2_videodevice/request_buffers.cpp | 2 +-\n test/v4l2_videodevice/stream_on_off.cpp | 2 +-\n test/v4l2_videodevice/v4l2_m2mdevice.cpp | 8 +-\n 25 files changed, 322 insertions(+), 344 deletions(-)" }