Show a patch.

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

{
    "id": 15060,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/15060/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/15060/",
    "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": "<20211206233948.1351206-5-kieran.bingham@ideasonboard.com>",
    "date": "2021-12-06T23:39:44",
    "name": "[libcamera-devel,4/8] cam: Use Sensor sequence numbers and detect frame drop",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "d4deff63344fe23da4771513cb32dbb4b28663de",
    "submitter": {
        "id": 4,
        "url": "https://patchwork.libcamera.org/api/1.1/people/4/?format=api",
        "name": "Kieran Bingham",
        "email": "kieran.bingham@ideasonboard.com"
    },
    "delegate": {
        "id": 11,
        "url": "https://patchwork.libcamera.org/api/1.1/users/11/?format=api",
        "username": "kbingham",
        "first_name": "Kieran",
        "last_name": "Bingham",
        "email": "kieran.bingham@ideasonboard.com"
    },
    "mbox": "https://patchwork.libcamera.org/patch/15060/mbox/",
    "series": [
        {
            "id": 2822,
            "url": "https://patchwork.libcamera.org/api/1.1/series/2822/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=2822",
            "date": "2021-12-06T23:39:40",
            "name": "Request metadata: SensorSequence",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/2822/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/15060/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/15060/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 8727AC3258\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  6 Dec 2021 23:40:01 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id AD6AA608E0;\n\tTue,  7 Dec 2021 00:39:59 +0100 (CET)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4A327607DE\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  7 Dec 2021 00:39:55 +0100 (CET)",
            "from Monstersaurus.local\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id EFE9F556;\n\tTue,  7 Dec 2021 00:39:54 +0100 (CET)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"ln9Xg4L1\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1638833995;\n\tbh=FuGogmiA11ukCqWdkU6nDMdWFzqyUmYeDshrP/O2gkc=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=ln9Xg4L1fQzJg0ixGV9wOofibCEqRDuKP6U8EPW2vtzp8dqmaEPb9N2twrGWQ8jmG\n\tDFDQ2j7Cto+6hDu9HbbNOWy9aoeWK6xjzCPKOcfJz7z1HpJm+yIEyKsGDY5dvGkUoi\n\tJmnZdtrtjCc65WbyZCrao1ylHhSL3YeFdTkpTaOo=",
        "From": "Kieran Bingham <kieran.bingham@ideasonboard.com>",
        "To": "libcamera devel <libcamera-devel@lists.libcamera.org>",
        "Date": "Mon,  6 Dec 2021 23:39:44 +0000",
        "Message-Id": "<20211206233948.1351206-5-kieran.bingham@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.30.2",
        "In-Reply-To": "<20211206233948.1351206-1-kieran.bingham@ideasonboard.com>",
        "References": "<20211206233948.1351206-1-kieran.bingham@ideasonboard.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[libcamera-devel] [PATCH 4/8] cam: Use Sensor sequence numbers and\n\tdetect frame drop",
        "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>",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "The stream buffer sequence numbers might produce sequential\nmonotonic sequence numbers from an ISP producing a frame for every\ninput.\n\nThis however, doesn't capture pipeline stalls that cause us to miss or\ndrop frames from the sensor.\n\nUse the SensorSequence metadata to report sequence information, and add\na warning to the summary line if a frame drop is detected.\n\nSigned-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n---\n src/cam/camera_session.cpp | 17 +++++++++++++++--\n src/cam/camera_session.h   |  1 +\n 2 files changed, 16 insertions(+), 2 deletions(-)",
    "diff": "diff --git a/src/cam/camera_session.cpp b/src/cam/camera_session.cpp\nindex 50170723c30f..f9495f7f7e42 100644\n--- a/src/cam/camera_session.cpp\n+++ b/src/cam/camera_session.cpp\n@@ -29,8 +29,8 @@ CameraSession::CameraSession(CameraManager *cm,\n \t\t\t     unsigned int cameraIndex,\n \t\t\t     const OptionsParser::Options &options)\n \t: options_(options), cameraIndex_(cameraIndex), last_(0),\n-\t  queueCount_(0), captureCount_(0), captureLimit_(0),\n-\t  printMetadata_(false)\n+\t  sequence_(0), queueCount_(0), captureCount_(0),\n+\t  captureLimit_(0), printMetadata_(false)\n {\n \tchar *endptr;\n \tunsigned long index = strtoul(cameraId.c_str(), &endptr, 10);\n@@ -375,6 +375,11 @@ void CameraSession::processRequest(Request *request)\n \t     << std::setw(6) << std::setfill('0') << ts / 1000 % 1000000\n \t     << \" (\" << std::fixed << std::setprecision(2) << fps << \" fps)\";\n \n+\tuint64_t sequence = request->metadata().get(controls::SensorSequence);\n+\t// Report capture sequence number\n+\tinfo << \" [\" << std::setw(6) << std::setfill('0')\n+\t     << sequence << \"]\";\n+\n \tfor (auto it = buffers.begin(); it != buffers.end(); ++it) {\n \t\tconst Stream *stream = it->first;\n \t\tFrameBuffer *buffer = it->second;\n@@ -398,6 +403,14 @@ void CameraSession::processRequest(Request *request)\n \t\t\trequeue = false;\n \t}\n \n+\t/* Handle basic frame drop detection and reporting. */\n+\tif (sequence_ == 0)\n+\t\tsequence_ = sequence - 1;\n+\tunsigned int drops = sequence - sequence_ - 1;\n+\tif (drops)\n+\t\tinfo << \" *\" << drops << \" frame drops detected* \";\n+\tsequence_ = sequence;\n+\n \tstd::cout << info.str() << std::endl;\n \n \tif (printMetadata_) {\ndiff --git a/src/cam/camera_session.h b/src/cam/camera_session.h\nindex bf966bd15ab0..14dc1421da4d 100644\n--- a/src/cam/camera_session.h\n+++ b/src/cam/camera_session.h\n@@ -65,6 +65,7 @@ private:\n \tunsigned int cameraIndex_;\n \n \tuint64_t last_;\n+\tuint64_t sequence_;\n \n \tunsigned int queueCount_;\n \tunsigned int captureCount_;\n",
    "prefixes": [
        "libcamera-devel",
        "4/8"
    ]
}