Cover Letter Detail
Show a cover letter.
GET /api/1.1/covers/2348/?format=api
{ "id": 2348, "url": "https://patchwork.libcamera.org/api/1.1/covers/2348/?format=api", "web_url": "https://patchwork.libcamera.org/cover/2348/", "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": "<20191126233620.1695316-1-niklas.soderlund@ragnatech.se>", "date": "2019-11-26T23:35:50", "name": "[libcamera-devel,00/30] libcamera: Rework buffer API", "submitter": { "id": 5, "url": "https://patchwork.libcamera.org/api/1.1/people/5/?format=api", "name": "Niklas Söderlund", "email": "niklas.soderlund@ragnatech.se" }, "mbox": "https://patchwork.libcamera.org/cover/2348/mbox/", "series": [ { "id": 579, "url": "https://patchwork.libcamera.org/api/1.1/series/579/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=579", "date": "2019-11-26T23:35:50", "name": "libcamera: Rework buffer API", "version": 1, "mbox": "https://patchwork.libcamera.org/series/579/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/covers/2348/comments/", "headers": { "Return-Path": "<niklas.soderlund@ragnatech.se>", "Received": [ "from bin-mail-out-05.binero.net (bin-mail-out-05.binero.net\n\t[195.74.38.228])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 17C3060C21\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 27 Nov 2019 00:39:26 +0100 (CET)", "from bismarck.berto.se (p54ac5865.dip0.t-ipconnect.de\n\t[84.172.88.101]) by bin-vsp-out-02.atm.binero.net (Halon) with ESMTPA\n\tid de628624-10a5-11ea-a0b9-005056917f90;\n\tWed, 27 Nov 2019 00:39:22 +0100 (CET)" ], "X-Halon-ID": "de628624-10a5-11ea-a0b9-005056917f90", "Authorized-sender": "niklas@soderlund.pp.se", "From": "=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Wed, 27 Nov 2019 00:35:50 +0100", "Message-Id": "<20191126233620.1695316-1-niklas.soderlund@ragnatech.se>", "X-Mailer": "git-send-email 2.24.0", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH 00/30] libcamera: Rework buffer API", "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, 26 Nov 2019 23:39:26 -0000" }, "content": "Hi,\n\nThis series reworks the buffer API across the whole library. The two \nmain reasons for the rework is\n\n- The current buffer API is cumbersome to work with as the variations \n between internally allocated buffers (from a V4L2 video device) and \n externally (from other source in the system or other V4l2 video \n device) is slightly different.\n\n- V4L2 concepts such as buffer index have \"leaked\" into the application \n facing interface which makes the API less intuitive to work with as \n one needs to know more about V4L2 and its limitations to use.\n\nAs changing the buffer API touches most parts of the library this series \nis unfortunately quiet large and some patches are also quiet large. I \nhave really tried to break things apart as best I could.\n\nThe series starts by adding the new FrameBuffer interface building \nblocks and then slowly proceeds to replace the existing API with the new \none. The series is tested on all upstream pipelines and IPAs without any \nregressions.\n\nNiklas Söderlund (30):\n libcamera: pipelines: Align bookkeeping in queueRequest()\n libcamera: Remove buffer index from logging\n libcamera: buffer: Add BufferInfo container for buffer metadata\n information\n libcamera: buffer: Add FileDecriptor to help deal with file\n descriptors\n libcamera: buffer: Add Dmabuf to describe a dma buffer\n libcamera: buffer: Add FrameBuffer interface\n ipa: Switch to FrameBuffer interface\n libcamera: buffer: Switch from Plane to Dmabuf\n libcamera: buffers: Remove Plane class\n libcamera: buffer: Drop private function setRequest()\n libcamera: v4l2_videodevice: Align which type variable is used in\n queueBuffer()\n libcamera: v4l2_videodevice: Remove assertion involving BufferPool\n libcamera: v4l2_videodevice: Extract exportDmaBuffer() to export DMA\n buffer\n libcamera: request: In addBuffer() do not fetch stream from Buffer\n libcamera: buffer: Move capture information to BufferInfo\n libcamera: buffer: Buffer remove metadata information\n libcamera: v4l2_videodevice: Add support for multi plane output\n buffers\n libcamera: v4l2_videodevice: Add V4L2BufferCache to deal with index\n mapping\n libcamera: v4l2_videodevice: Add new buffer interface\n libcamera: stream: Add prototypes for new interface\n libcamera: pipelines: Explicitly allocate streams\n libcamera: v4l2_videodevice: Add V4L2Stream to facilitate buffers\n libcamera: pipelines: Switch to V4L2Stream\n libcamera: stream: Make FrameBuffer support mandatory\n libcamera: allocator: Add BufferAllocator to help applications\n allocate buffers\n libcamera: camera: Start streams before pipeline\n libcamera: Switch to FrameBuffer interface\n libcamera: Remove dead code after switch to FrameBuffer\n libcamera: pipeline: Remove explicit buffer handling\n libcamera: camera: Remove the prepared state\n\n include/ipa/ipa_interface.h | 2 +-\n include/libcamera/allocator.h | 39 ++\n include/libcamera/buffer.h | 118 ++---\n include/libcamera/camera.h | 8 +-\n include/libcamera/meson.build | 1 +\n include/libcamera/request.h | 14 +-\n include/libcamera/stream.h | 29 +-\n src/android/camera_device.cpp | 34 +-\n src/cam/buffer_writer.cpp | 11 +-\n src/cam/buffer_writer.h | 3 +-\n src/cam/capture.cpp | 55 +-\n src/cam/capture.h | 4 +-\n src/ipa/libipa/ipa_interface_wrapper.cpp | 7 +-\n src/ipa/rkisp1/rkisp1.cpp | 14 +-\n src/libcamera/allocator.cpp | 141 ++++++\n src/libcamera/buffer.cpp | 478 +++++++++---------\n src/libcamera/camera.cpp | 157 ++----\n src/libcamera/include/pipeline_handler.h | 14 +-\n src/libcamera/include/v4l2_videodevice.h | 65 ++-\n src/libcamera/ipa_context_wrapper.cpp | 8 +-\n src/libcamera/ipa_interface.cpp | 7 +-\n src/libcamera/meson.build | 1 +\n src/libcamera/pipeline/ipu3/ipu3.cpp | 315 +++++-------\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 165 +++---\n src/libcamera/pipeline/uvcvideo.cpp | 50 +-\n src/libcamera/pipeline/vimc.cpp | 51 +-\n src/libcamera/pipeline_handler.cpp | 66 +--\n src/libcamera/request.cpp | 24 +-\n src/libcamera/stream.cpp | 265 ++--------\n src/libcamera/v4l2_videodevice.cpp | 445 +++++++++++-----\n src/qcam/main_window.cpp | 64 +--\n src/qcam/main_window.h | 6 +-\n test/camera/buffer_import.cpp | 411 +++++----------\n test/camera/capture.cpp | 41 +-\n test/camera/statemachine.cpp | 89 +---\n test/ipa/ipa_wrappers_test.cpp | 38 +-\n test/v4l2_videodevice/buffer_sharing.cpp | 39 +-\n test/v4l2_videodevice/capture_async.cpp | 16 +-\n test/v4l2_videodevice/request_buffers.cpp | 11 +-\n test/v4l2_videodevice/stream_on_off.cpp | 6 +-\n test/v4l2_videodevice/v4l2_m2mdevice.cpp | 44 +-\n test/v4l2_videodevice/v4l2_videodevice_test.h | 2 +-\n 42 files changed, 1503 insertions(+), 1855 deletions(-)\n create mode 100644 include/libcamera/allocator.h\n create mode 100644 src/libcamera/allocator.cpp" }