Cover Letter Detail
Show a cover letter.
GET /api/1.1/covers/3109/?format=api
{ "id": 3109, "url": "https://patchwork.libcamera.org/api/1.1/covers/3109/?format=api", "web_url": "https://patchwork.libcamera.org/cover/3109/", "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": "<20200316024146.2474424-1-niklas.soderlund@ragnatech.se>", "date": "2020-03-16T02:41:40", "name": "[libcamera-devel,RFC,0/6] libcamera: Add support for a RAW still capture stream", "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/3109/mbox/", "series": [ { "id": 722, "url": "https://patchwork.libcamera.org/api/1.1/series/722/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=722", "date": "2020-03-16T02:41:40", "name": "libcamera: Add support for a RAW still capture stream", "version": 1, "mbox": "https://patchwork.libcamera.org/series/722/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/covers/3109/comments/", "headers": { "Return-Path": "<niklas.soderlund@ragnatech.se>", "Received": [ "from bin-mail-out-06.binero.net (bin-mail-out-06.binero.net\n\t[195.74.38.229])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3C2AE60417\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 16 Mar 2020 03:42:31 +0100 (CET)", "from bismarck.berto.se (p4fca2392.dip0.t-ipconnect.de\n\t[79.202.35.146]) by bin-vsp-out-03.atm.binero.net (Halon) with ESMTPA\n\tid b1b86c1d-672f-11ea-9f40-0050569116f7;\n\tMon, 16 Mar 2020 03:42:00 +0100 (CET)" ], "X-Halon-ID": "b1b86c1d-672f-11ea-9f40-0050569116f7", "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": "Mon, 16 Mar 2020 03:41:40 +0100", "Message-Id": "<20200316024146.2474424-1-niklas.soderlund@ragnatech.se>", "X-Mailer": "git-send-email 2.25.1", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [RFC 0/6] libcamera: Add support for a RAW still\n\tcapture stream", "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": "Mon, 16 Mar 2020 02:42:31 -0000" }, "content": "Hi,\n\nThis series is an RFC for how RAW capture can be added to libcamera. It \nimplements a RAW stream in the IPU3 pipeline handler as an example. It \ntargets RAW still image captures and uses a memcpy to copy out the \nbuffer with the RAW data as soon as it's dequeued from the CIO2. The \ncopy is needed as the buffer might need to be used in further processing \nby the IMGU.\n\nPatch 1/6 Defines a new StillCaptureRaw role which can be used to \napplications to generate configurations for raw capture. Patch 2/6 makes \nuse of this new role in the cam utility.\n\nPatch 3/6 is not ready for consumption as it depends on work submitted \nto the DRM subsystem. The patch is however needed as the new DRM formats \nare needed to describe the IPU3's RAW pixel format.\n\nPatch 4/6 adds a helper to do the actual memcpy of FrameBuffers. I'm not \nreally sure it should be declared in buffers.h. Suggestions for a better \nlocation are welcome.\n\nPatch 5/6 and 6/6 deals with implementing the RAW stream into the IPU3 \npipeline handler.\n\nThis series depends on Laruent's work [1] to use the improved \nBufferAllocator with buffer orphaning support. To ease testing [2] may \nalso be useful to allow cam to write two capture streams content to disk \nwithout conflict.\n\nI have tested this on IPU3 and I can capture both a single RAW stream or \na mix of RAW and video, example with both and writing to disk.\n\n$ ./cam -c1 -s role=video -s role=stillraw -C -F\n...\nfps: 0.00 stream0 seq: 002055 bytesused: 1382400 stream1 seq: 000001 bytesused: 3269376\nfps: 30.30 stream0 seq: 002056 bytesused: 1382400 stream1 seq: 000002 bytesused: 3269376\nfps: 30.30 stream0 seq: 002057 bytesused: 1382400 stream1 seq: 000003 bytesused: 3269376\nfps: 30.30 stream0 seq: 002058 bytesused: 1382400 stream1 seq: 000004 bytesused: 3269376\n...\n\nWhat I still have to do is find/write a IPU3 RAW frame decoder to verify \nthe captured RAW frames are good. So far I verified each captured frame \nhave a different checksum and the captured metadata (sequence nr etc) \nmake sens.\n\n1. [PATCH 0/9] Simplify buffer management with V4L2 buffer orphaning\n2. [PATCH] cam: Create stream names after configuring the camera\n\nNiklas Söderlund (6):\n libcamera: stream: Add StillCaptureRaw role\n cam: Add option to capture StillCaptureRaw stream\n [DNI] include: drm_fourcc: Add Bayer FourCC and modifiers\n libcamera: buffer: Add helper to memcopy a FrameBuffer\n libcamera: ipu3: Do not unconditionally queue buffers to CIO2\n libcamera: ipu3: Add support for a RAW still capture stream\n\n include/libcamera/buffer.h | 1 +\n include/libcamera/stream.h | 1 +\n include/linux/drm_fourcc.h | 94 +++++++++++++++++\n src/cam/main.cpp | 4 +-\n src/libcamera/buffer.cpp | 43 ++++++++\n src/libcamera/pipeline/ipu3/ipu3.cpp | 152 +++++++++++++++++++++++----\n src/libcamera/stream.cpp | 4 +\n 7 files changed, 279 insertions(+), 20 deletions(-)" }