Patch Detail
Show a patch.
GET /api/patches/8460/?format=api
{ "id": 8460, "url": "https://patchwork.libcamera.org/api/patches/8460/?format=api", "web_url": "https://patchwork.libcamera.org/patch/8460/", "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": "<20200628001532.2685967-4-niklas.soderlund@ragnatech.se>", "date": "2020-06-28T00:15:22", "name": "[libcamera-devel,v2,03/13] libcamera: ipu3: Always import buffers for ImgU sinks", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "3f6e19e7b0ca4350678d59621f02549762f4b54b", "submitter": { "id": 5, "url": "https://patchwork.libcamera.org/api/people/5/?format=api", "name": "Niklas Söderlund", "email": "niklas.soderlund@ragnatech.se" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/8460/mbox/", "series": [ { "id": 1048, "url": "https://patchwork.libcamera.org/api/series/1048/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1048", "date": "2020-06-28T00:15:19", "name": "libcamera: ipu3: Refactoring of ImgU", "version": 2, "mbox": "https://patchwork.libcamera.org/series/1048/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/8460/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/8460/checks/", "tags": {}, "headers": { "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>", "X-Original-To": "parsemail@patchwork.libcamera.org", "Delivered-To": "parsemail@patchwork.libcamera.org", "Received": [ "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id B353CC2E6A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 28 Jun 2020 00:15:50 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8EDC660AFD;\n\tSun, 28 Jun 2020 02:15:50 +0200 (CEST)", "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 0F8E0609C8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 28 Jun 2020 02:15:47 +0200 (CEST)", "from bismarck.berto.se (p4fca2eca.dip0.t-ipconnect.de\n\t[79.202.46.202]) by bin-vsp-out-03.atm.binero.net (Halon) with ESMTPA\n\tid 6eec9ef4-b8d4-11ea-86ee-0050569116f7;\n\tSun, 28 Jun 2020 02:15:12 +0200 (CEST)" ], "X-Halon-ID": "6eec9ef4-b8d4-11ea-86ee-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": "Sun, 28 Jun 2020 02:15:22 +0200", "Message-Id": "<20200628001532.2685967-4-niklas.soderlund@ragnatech.se>", "X-Mailer": "git-send-email 2.27.0", "In-Reply-To": "<20200628001532.2685967-1-niklas.soderlund@ragnatech.se>", "References": "<20200628001532.2685967-1-niklas.soderlund@ragnatech.se>", "MIME-Version": "1.0", "Subject": "[libcamera-devel] [PATCH v2 03/13] libcamera: ipu3: Always import\n\tbuffers for ImgU sinks", "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>", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "base64", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "When the IPU3 pipeline was first developed sinks of the ImgU that where\nnot active still needed to have buffers allocated to allow streaming to\nstart. This is no longer true, it's enough that the sinks have imported\nbuffers to allow streaming to start. As we already need to import\nbuffers for stream that are active we can align the two cases and always\nimport buffers.\n\nWith this there is no longer a reason to store the allocated\nFrameBuffers to keep them alive and the vector tracking them can be\nremoved.\n\nSigned-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n---\n* Changes since v1\n- Add comment\n- Update commit message\n---\n src/libcamera/pipeline/ipu3/ipu3.cpp | 26 +++++++-------------------\n 1 file changed, 7 insertions(+), 19 deletions(-)", "diff": "diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\nindex 405550b1302fb370..f35672f4761659f4 100644\n--- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n@@ -49,7 +49,6 @@ public:\n \t\tV4L2VideoDevice *dev;\n \t\tunsigned int pad;\n \t\tstd::string name;\n-\t\tstd::vector<std::unique_ptr<FrameBuffer>> buffers;\n \t};\n \n \tImgUDevice()\n@@ -1124,9 +1123,6 @@ int ImgUDevice::configureOutput(ImgUOutput *output,\n */\n int ImgUDevice::allocateBuffers(IPU3CameraData *data, unsigned int bufferCount)\n {\n-\tIPU3Stream *outStream = &data->outStream_;\n-\tIPU3Stream *vfStream = &data->vfStream_;\n-\n \t/* Share buffers between CIO2 output and ImgU input. */\n \tint ret = input_->importBuffers(bufferCount);\n \tif (ret) {\n@@ -1148,27 +1144,19 @@ int ImgUDevice::allocateBuffers(IPU3CameraData *data, unsigned int bufferCount)\n \t}\n \n \t/*\n-\t * Allocate buffers for both outputs. If an output is active, prepare\n-\t * for buffer import, otherwise allocate internal buffers. Use the same\n-\t * number of buffers in either case.\n+\t * Import buffers for all outputs, regardless of whether the\n+\t * corresponding stream is active or inactive, as the driver needs\n+\t * buffers to be requested on the V4L2 devices in order to operate.\n \t */\n-\tif (outStream->active_)\n-\t\tret = output_.dev->importBuffers(bufferCount);\n-\telse\n-\t\tret = output_.dev->allocateBuffers(bufferCount,\n-\t\t\t\t\t\t &output_.buffers);\n+\tret = output_.dev->importBuffers(bufferCount);\n \tif (ret < 0) {\n-\t\tLOG(IPU3, Error) << \"Failed to allocate ImgU output buffers\";\n+\t\tLOG(IPU3, Error) << \"Failed to import ImgU output buffers\";\n \t\tgoto error;\n \t}\n \n-\tif (vfStream->active_)\n-\t\tret = viewfinder_.dev->importBuffers(bufferCount);\n-\telse\n-\t\tret = viewfinder_.dev->allocateBuffers(bufferCount,\n-\t\t\t\t\t\t &viewfinder_.buffers);\n+\tret = viewfinder_.dev->importBuffers(bufferCount);\n \tif (ret < 0) {\n-\t\tLOG(IPU3, Error) << \"Failed to allocate ImgU viewfinder buffers\";\n+\t\tLOG(IPU3, Error) << \"Failed to import ImgU viewfinder buffers\";\n \t\tgoto error;\n \t}\n \n", "prefixes": [ "libcamera-devel", "v2", "03/13" ] }