Cover Letter Detail
Show a cover letter.
GET /api/covers/1621/?format=api
{ "id": 1621, "url": "https://patchwork.libcamera.org/api/covers/1621/?format=api", "web_url": "https://patchwork.libcamera.org/cover/1621/", "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": "<20190704225334.26170-1-jacopo@jmondi.org>", "date": "2019-07-04T22:53:25", "name": "[libcamera-devel,0/9] Add support for external bufferes", "submitter": { "id": 3, "url": "https://patchwork.libcamera.org/api/people/3/?format=api", "name": "Jacopo Mondi", "email": "jacopo@jmondi.org" }, "mbox": "https://patchwork.libcamera.org/cover/1621/mbox/", "series": [ { "id": 407, "url": "https://patchwork.libcamera.org/api/series/407/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=407", "date": "2019-07-04T22:53:25", "name": "Add support for external bufferes", "version": 1, "mbox": "https://patchwork.libcamera.org/series/407/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/covers/1621/comments/", "headers": { "Return-Path": "<jacopo@jmondi.org>", "Received": [ "from relay5-d.mail.gandi.net (relay5-d.mail.gandi.net\n\t[217.70.183.197])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id F236460C2C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 5 Jul 2019 00:52:26 +0200 (CEST)", "from uno.lan (2-224-242-101.ip172.fastwebnet.it [2.224.242.101])\n\t(Authenticated sender: jacopo@jmondi.org)\n\tby relay5-d.mail.gandi.net (Postfix) with ESMTPSA id 76FA01C0002;\n\tThu, 4 Jul 2019 22:52:26 +0000 (UTC)" ], "X-Originating-IP": "2.224.242.101", "From": "Jacopo Mondi <jacopo@jmondi.org>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Fri, 5 Jul 2019 00:53:25 +0200", "Message-Id": "<20190704225334.26170-1-jacopo@jmondi.org>", "X-Mailer": "git-send-email 2.21.0", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH 0/9] Add support for external bufferes", "X-BeenThere": "libcamera-devel@lists.libcamera.org", "X-Mailman-Version": "2.1.23", "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": "Thu, 04 Jul 2019 22:52:27 -0000" }, "content": ">From the RFC cover letter:\n-------------------------------------------------------------------------------\nThe libcamera APIs need to be augmented to allow application to use buffers\nwhose memory has been allocated outside of the library.\n\nThis feature is particularly essential to support the Android camera HAL, which\nuses buffers allocated by mean of gralloc and exported by using DMABUF file\ndescriptor.\n\nEach Stream has a buffer pool which contains buffers which are used to interact\nwith the underlying video devices and whose memory is directly accessed by\napplications in case a Stream uses its internal memory, but could also be mapped\non buffers whose memory is allocated elsewhere by exchanging the dmabuf file\ndescriptors associated to each buffer's plane.\n\nExtend the StreamConfiguration class with a flag that defines the memory\ntype a Stream uses (internal or external) and use said flag in pipeline handler\nto either allocate memory for the buffer, or prepare to use externally\nallocated buffers. As a consequence, rename PipelineHandler::allocateBuffers()\nto PipelineHandler::setupBuffers().\n\nOn top of this perform buffer mapping for streams using external memory at\nrequest queueing time, hiding the mapping from pipeline handler that will\nalways only interact with streams from the Stream's internal pool.\n\nAdd a map of buffers to each request to perform back-and-forth translation of\napplication provided buffers to stream internal buffer at request complete time.\n\nFinally, add a test application that use buffers allocated in the vivid output\ndevice to stream a Camera. The test is not meant to be considered for merge, but\nmore a proof a concept (it has my camera name hardcoded...) and fails for buffer\n#0 (but works for all others).\n-------------------------------------------------------------------------------\n\nI have included Niklas and Kieran comments and heavily reworked the mapping\noperation in the Stream. The rest is more or less the same, with the exception\nof support for IPU3 which is now included and for importing multiplane buffers.\n\nFinally, the last patch should be made a test. At the moment it's a development\ntool (has the name of my webcam hardcoded...)\n\nThanks\n j\n\nJacopo Mondi (9):\n libcamera: stream: Provide accessors to buffers\n libcamera: stream: Add Stream memory type\n libcamera: pipeline: Support external buffers\n libcamera: Rename PipelineHandler::allocateBuffers\n libcamera: request: Rename the Stream to Buffer map\n libcamera: stream: Add operation to map buffers\n libcamera: request: Support buffer mapping\n libcamera: pipeline: ipu3: Use buffer mapping\n [HACK] test: v4l2_videodevice: Add buffer import test\n\n include/libcamera/buffer.h | 1 +\n include/libcamera/request.h | 8 +-\n include/libcamera/stream.h | 26 +++\n src/cam/capture.cpp | 4 +-\n src/libcamera/camera.cpp | 11 +-\n src/libcamera/include/pipeline_handler.h | 4 +-\n src/libcamera/pipeline/ipu3/ipu3.cpp | 45 ++++-\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 15 +-\n src/libcamera/pipeline/uvcvideo.cpp | 16 +-\n src/libcamera/pipeline/vimc.cpp | 16 +-\n src/libcamera/pipeline_handler.cpp | 12 +-\n src/libcamera/request.cpp | 61 +++++-\n src/libcamera/stream.cpp | 181 +++++++++++++++++-\n src/qcam/main_window.cpp | 4 +-\n test/camera/capture.cpp | 3 +-\n test/camera/statemachine.cpp | 3 +-\n test/v4l2_videodevice/buffer_import.cpp | 234 +++++++++++++++++++++++\n test/v4l2_videodevice/meson.build | 1 +\n 18 files changed, 588 insertions(+), 57 deletions(-)\n create mode 100644 test/v4l2_videodevice/buffer_import.cpp\n\n--\n2.21.0" }