Patch Detail
Show a patch.
GET /api/1.1/patches/9294/?format=api
{ "id": 9294, "url": "https://patchwork.libcamera.org/api/1.1/patches/9294/?format=api", "web_url": "https://patchwork.libcamera.org/patch/9294/", "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": "<20200813005246.3265807-5-niklas.soderlund@ragnatech.se>", "date": "2020-08-13T00:52:37", "name": "[libcamera-devel,04/13] libcamera: pipeline: rkisp1: Prepare buffer ready handlers for multiple streams", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "a286f53df0b6e85664433b2c2de2d8bd8e718777", "submitter": { "id": 5, "url": "https://patchwork.libcamera.org/api/1.1/people/5/?format=api", "name": "Niklas Söderlund", "email": "niklas.soderlund@ragnatech.se" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/9294/mbox/", "series": [ { "id": 1215, "url": "https://patchwork.libcamera.org/api/1.1/series/1215/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1215", "date": "2020-08-13T00:52:33", "name": "libcamera: pipeline: rkisp1: Extend to support two streams", "version": 1, "mbox": "https://patchwork.libcamera.org/series/1215/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/9294/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/9294/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 CFF40BD87E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 13 Aug 2020 00:53:43 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 407FE61365;\n\tThu, 13 Aug 2020 02:53:43 +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 973F3612F7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 13 Aug 2020 02:53:39 +0200 (CEST)", "from bismarck.berto.se (p54ac52a8.dip0.t-ipconnect.de\n\t[84.172.82.168]) by bin-vsp-out-01.atm.binero.net (Halon) with ESMTPA\n\tid 6c474806-dcff-11ea-92dc-005056917a89;\n\tThu, 13 Aug 2020 02:53:38 +0200 (CEST)" ], "X-Halon-ID": "6c474806-dcff-11ea-92dc-005056917a89", "Authorized-sender": "niklas.soderlund@fsdn.se", "From": "=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Thu, 13 Aug 2020 02:52:37 +0200", "Message-Id": "<20200813005246.3265807-5-niklas.soderlund@ragnatech.se>", "X-Mailer": "git-send-email 2.28.0", "In-Reply-To": "<20200813005246.3265807-1-niklas.soderlund@ragnatech.se>", "References": "<20200813005246.3265807-1-niklas.soderlund@ragnatech.se>", "MIME-Version": "1.0", "Subject": "[libcamera-devel] [PATCH 04/13] libcamera: pipeline: rkisp1:\n\tPrepare buffer ready handlers for multiple streams", "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": "The buffer ready handlers are designed for a single application facing\nstream from the main path. To prepare for multiple application facing\nstreams from main and/or self path the handlers need to be prepared.\n\nThe data keeping tasks of frame number and advancing the timeline can be\nmoved from the application facing buffer ready handler to the statistics\nhandler. For each request processed there will always be a statistic\nbuffer and as the ISP is inline and is the source of both main, self and\nstatistic paths there is no lose in precision from this.\n\nThe application facing handler no longer needs a special case for\ncancelled frames and can be made simpler. With this change the handlers\nare ready to deal with any combinations of application facing streams.\n\nSigned-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n---\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 17 +++++------------\n 1 file changed, 5 insertions(+), 12 deletions(-)", "diff": "diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\nindex 38382a6894dac22a..a1cda12d244f2d97 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -1074,20 +1074,8 @@ void PipelineHandlerRkISP1::tryCompleteRequest(Request *request)\n void PipelineHandlerRkISP1::bufferReady(FrameBuffer *buffer)\n {\n \tASSERT(activeCamera_);\n-\tRkISP1CameraData *data = cameraData(activeCamera_);\n \tRequest *request = buffer->request();\n \n-\tif (buffer->metadata().status == FrameMetadata::FrameCancelled) {\n-\t\tcompleteBuffer(activeCamera_, request, buffer);\n-\t\tcompleteRequest(activeCamera_, request);\n-\t\treturn;\n-\t}\n-\n-\tdata->timeline_.bufferReady(buffer);\n-\n-\tif (data->frame_ <= buffer->metadata().sequence)\n-\t\tdata->frame_ = buffer->metadata().sequence + 1;\n-\n \tcompleteBuffer(activeCamera_, request, buffer);\n \ttryCompleteRequest(request);\n }\n@@ -1118,6 +1106,11 @@ void PipelineHandlerRkISP1::statReady(FrameBuffer *buffer)\n \tif (!info)\n \t\treturn;\n \n+\tdata->timeline_.bufferReady(buffer);\n+\n+\tif (data->frame_ <= buffer->metadata().sequence)\n+\t\tdata->frame_ = buffer->metadata().sequence + 1;\n+\n \tIPAOperationData op;\n \top.operation = RKISP1_IPA_EVENT_SIGNAL_STAT_BUFFER;\n \top.data = { info->frame, info->statBuffer->cookie() };\n", "prefixes": [ "libcamera-devel", "04/13" ] }