Patch Detail
Show a patch.
GET /api/patches/2459/?format=api
{ "id": 2459, "url": "https://patchwork.libcamera.org/api/patches/2459/?format=api", "web_url": "https://patchwork.libcamera.org/patch/2459/", "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": "<20191230120510.938333-10-niklas.soderlund@ragnatech.se>", "date": "2019-12-30T12:04:54", "name": "[libcamera-devel,v2,09/25] libcamera: request: In addBuffer() do not fetch stream from Buffer", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "7f46823408405e355c02c2f3f40cef7af76ea8a8", "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/2459/mbox/", "series": [ { "id": 593, "url": "https://patchwork.libcamera.org/api/series/593/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=593", "date": "2019-12-30T12:04:45", "name": "libcamera: Rework buffer API", "version": 2, "mbox": "https://patchwork.libcamera.org/series/593/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/2459/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/2459/checks/", "tags": {}, "headers": { "Return-Path": "<niklas.soderlund@ragnatech.se>", "Received": [ "from vsp-unauthed02.binero.net (vsp-unauthed02.binero.net\n\t[195.74.38.227])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C3193605DA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 30 Dec 2019 13:05:56 +0100 (CET)", "from bismarck.berto.se (p4fca2fd0.dip0.t-ipconnect.de\n\t[79.202.47.208]) by bin-vsp-out-01.atm.binero.net (Halon) with ESMTPA\n\tid bb8e7506-2afc-11ea-a00b-005056917a89;\n\tMon, 30 Dec 2019 13:05:55 +0100 (CET)" ], "X-Halon-ID": "bb8e7506-2afc-11ea-a00b-005056917a89", "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, 30 Dec 2019 13:04:54 +0100", "Message-Id": "<20191230120510.938333-10-niklas.soderlund@ragnatech.se>", "X-Mailer": "git-send-email 2.24.1", "In-Reply-To": "<20191230120510.938333-1-niklas.soderlund@ragnatech.se>", "References": "<20191230120510.938333-1-niklas.soderlund@ragnatech.se>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH v2 09/25] libcamera: request: In\n\taddBuffer() do not fetch stream from Buffer", "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, 30 Dec 2019 12:05:57 -0000" }, "content": "In the FrameBuffer interface the stream will not be available from the\nbuffer object as the buffer might be allocated externally. The\napplication needs to explicitly state which stream the buffer is being\nadded for to the request.\n\nExtend the addBuffer() function to get this information explicitly from\nthe caller.\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 include/libcamera/request.h | 2 +-\n src/android/camera_device.cpp | 2 +-\n src/cam/capture.cpp | 4 ++--\n src/libcamera/request.cpp | 4 ++--\n src/qcam/main_window.cpp | 4 ++--\n test/camera/buffer_import.cpp | 2 +-\n test/camera/capture.cpp | 4 ++--\n test/camera/statemachine.cpp | 2 +-\n 8 files changed, 12 insertions(+), 12 deletions(-)", "diff": "diff --git a/include/libcamera/request.h b/include/libcamera/request.h\nindex 2d5a5964e99eb75f..a8708010ec1247a2 100644\n--- a/include/libcamera/request.h\n+++ b/include/libcamera/request.h\n@@ -39,7 +39,7 @@ public:\n \tControlList &controls() { return *controls_; }\n \tControlList &metadata() { return *metadata_; }\n \tconst std::map<Stream *, Buffer *> &buffers() const { return bufferMap_; }\n-\tint addBuffer(std::unique_ptr<Buffer> buffer);\n+\tint addBuffer(Stream *stream, std::unique_ptr<Buffer> buffer);\n \tBuffer *findBuffer(Stream *stream) const;\n \n \tuint64_t cookie() const { return cookie_; }\ndiff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\nindex 065e0292e186c2ad..09588c16a6301649 100644\n--- a/src/android/camera_device.cpp\n+++ b/src/android/camera_device.cpp\n@@ -754,7 +754,7 @@ void CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reque\n \n \tRequest *request =\n \t\tcamera_->createRequest(reinterpret_cast<uint64_t>(descriptor));\n-\trequest->addBuffer(std::move(buffer));\n+\trequest->addBuffer(stream, std::move(buffer));\n \n \tint ret = camera_->queueRequest(request);\n \tif (ret) {\ndiff --git a/src/cam/capture.cpp b/src/cam/capture.cpp\nindex 4b65b1d0a2dbed35..1a4dbe7ce4a15a2d 100644\n--- a/src/cam/capture.cpp\n+++ b/src/cam/capture.cpp\n@@ -95,7 +95,7 @@ int Capture::capture(EventLoop *loop)\n \t\t\tStream *stream = cfg.stream();\n \t\t\tstd::unique_ptr<Buffer> buffer = stream->createBuffer(i);\n \n-\t\t\tret = request->addBuffer(std::move(buffer));\n+\t\t\tret = request->addBuffer(stream, std::move(buffer));\n \t\t\tif (ret < 0) {\n \t\t\t\tstd::cerr << \"Can't set buffer for request\"\n \t\t\t\t\t << std::endl;\n@@ -185,7 +185,7 @@ void Capture::requestComplete(Request *request)\n \t\t\treturn;\n \t\t}\n \n-\t\trequest->addBuffer(std::move(newBuffer));\n+\t\trequest->addBuffer(stream, std::move(newBuffer));\n \t}\n \n \tcamera_->queueRequest(request);\ndiff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp\nindex c2854dc2e8caab2e..3b49e52510918eee 100644\n--- a/src/libcamera/request.cpp\n+++ b/src/libcamera/request.cpp\n@@ -113,6 +113,7 @@ Request::~Request()\n \n /**\n * \\brief Store a Buffer with its associated Stream in the Request\n+ * \\param[in] stream The stream the buffer belongs to\n * \\param[in] buffer The Buffer to store in the request\n *\n * Ownership of the buffer is passed to the request. It will be deleted when\n@@ -125,9 +126,8 @@ Request::~Request()\n * \\retval -EEXIST The request already contains a buffer for the stream\n * \\retval -EINVAL The buffer does not reference a valid Stream\n */\n-int Request::addBuffer(std::unique_ptr<Buffer> buffer)\n+int Request::addBuffer(Stream *stream, std::unique_ptr<Buffer> buffer)\n {\n-\tStream *stream = buffer->stream();\n \tif (!stream) {\n \t\tLOG(Request, Error) << \"Invalid stream reference\";\n \t\treturn -EINVAL;\ndiff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp\nindex 11fb67a509e973f5..5dec9252898100db 100644\n--- a/src/qcam/main_window.cpp\n+++ b/src/qcam/main_window.cpp\n@@ -191,7 +191,7 @@ int MainWindow::startCapture()\n \t\t\tgoto error;\n \t\t}\n \n-\t\tret = request->addBuffer(std::move(buffer));\n+\t\tret = request->addBuffer(stream, std::move(buffer));\n \t\tif (ret < 0) {\n \t\t\tstd::cerr << \"Can't set buffer for request\" << std::endl;\n \t\t\tgoto error;\n@@ -289,7 +289,7 @@ void MainWindow::requestComplete(Request *request)\n \t\t\treturn;\n \t\t}\n \n-\t\trequest->addBuffer(std::move(newBuffer));\n+\t\trequest->addBuffer(stream, std::move(newBuffer));\n \t}\n \n \tcamera_->queueRequest(request);\ndiff --git a/test/camera/buffer_import.cpp b/test/camera/buffer_import.cpp\nindex 171540edd96f9fca..e5c010d81b8d6e0e 100644\n--- a/test/camera/buffer_import.cpp\n+++ b/test/camera/buffer_import.cpp\n@@ -268,7 +268,7 @@ public:\n \t\tRequest *request = camera_->createRequest(cookie);\n \n \t\tstd::unique_ptr<Buffer> buffer = stream_->createBuffer({ dmabuf, -1, -1 });\n-\t\trequest->addBuffer(move(buffer));\n+\t\trequest->addBuffer(stream_, move(buffer));\n \t\tcamera_->queueRequest(request);\n \t}\n \ndiff --git a/test/camera/capture.cpp b/test/camera/capture.cpp\nindex 7cb76038f557d461..ca1ebe419946dd4d 100644\n--- a/test/camera/capture.cpp\n+++ b/test/camera/capture.cpp\n@@ -49,7 +49,7 @@ protected:\n \t\tstd::unique_ptr<Buffer> newBuffer = stream->createBuffer(buffer->index());\n \n \t\trequest = camera_->createRequest();\n-\t\trequest->addBuffer(std::move(newBuffer));\n+\t\trequest->addBuffer(stream, std::move(newBuffer));\n \t\tcamera_->queueRequest(request);\n \t}\n \n@@ -101,7 +101,7 @@ protected:\n \t\t\t\treturn TestFail;\n \t\t\t}\n \n-\t\t\tif (request->addBuffer(std::move(buffer))) {\n+\t\t\tif (request->addBuffer(stream, std::move(buffer))) {\n \t\t\t\tcout << \"Failed to associating buffer with request\" << endl;\n \t\t\t\treturn TestFail;\n \t\t\t}\ndiff --git a/test/camera/statemachine.cpp b/test/camera/statemachine.cpp\nindex afa13ba77b0b7fe0..f627b8f37422350e 100644\n--- a/test/camera/statemachine.cpp\n+++ b/test/camera/statemachine.cpp\n@@ -219,7 +219,7 @@ protected:\n \n \t\tStream *stream = *camera_->streams().begin();\n \t\tstd::unique_ptr<Buffer> buffer = stream->createBuffer(0);\n-\t\tif (request->addBuffer(std::move(buffer)))\n+\t\tif (request->addBuffer(stream, std::move(buffer)))\n \t\t\treturn TestFail;\n \n \t\tif (camera_->queueRequest(request))\n", "prefixes": [ "libcamera-devel", "v2", "09/25" ] }