Show a patch.

GET /api/patches/9803/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 9803,
    "url": "https://patchwork.libcamera.org/api/patches/9803/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/9803/",
    "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": "<20200925014207.1455796-6-niklas.soderlund@ragnatech.se>",
    "date": "2020-09-25T01:41:50",
    "name": "[libcamera-devel,v3,05/22] 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/people/5/?format=api",
        "name": "Niklas Söderlund",
        "email": "niklas.soderlund@ragnatech.se"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/9803/mbox/",
    "series": [
        {
            "id": 1325,
            "url": "https://patchwork.libcamera.org/api/series/1325/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1325",
            "date": "2020-09-25T01:41:45",
            "name": "libcamera: pipeline: rkisp1: Extend to support two streams",
            "version": 3,
            "mbox": "https://patchwork.libcamera.org/series/1325/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/9803/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/9803/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 D8090C3B5C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 25 Sep 2020 01:42:48 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7E6136301D;\n\tFri, 25 Sep 2020 03:42:48 +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 813CA6300E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 25 Sep 2020 03:42:45 +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 67fe2f04-fed0-11ea-92dc-005056917a89;\n\tFri, 25 Sep 2020 03:42:44 +0200 (CEST)"
        ],
        "X-Halon-ID": "67fe2f04-fed0-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": "Fri, 25 Sep 2020 03:41:50 +0200",
        "Message-Id": "<20200925014207.1455796-6-niklas.soderlund@ragnatech.se>",
        "X-Mailer": "git-send-email 2.28.0",
        "In-Reply-To": "<20200925014207.1455796-1-niklas.soderlund@ragnatech.se>",
        "References": "<20200925014207.1455796-1-niklas.soderlund@ragnatech.se>",
        "MIME-Version": "1.0",
        "Subject": "[libcamera-devel] [PATCH v3 05/22] 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>\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\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 8bb4582eeb688a4c..d6b5073b2084a9f4 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -1070,20 +1070,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@@ -1114,6 +1102,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",
        "v3",
        "05/22"
    ]
}