{"id":26362,"url":"https://patchwork.libcamera.org/api/1.1/patches/26362/?format=json","web_url":"https://patchwork.libcamera.org/patch/26362/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260325151416.2114564-21-stefan.klug@ideasonboard.com>","date":"2026-03-25T15:13:52","name":"[v2,20/32] libcamera: v4l2_videodevice: Do not hide frame drops","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"bc0b92fba53590d761a6026ceaa995494d1fdeaf","submitter":{"id":184,"url":"https://patchwork.libcamera.org/api/1.1/people/184/?format=json","name":"Stefan Klug","email":"stefan.klug@ideasonboard.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/26362/mbox/","series":[{"id":5849,"url":"https://patchwork.libcamera.org/api/1.1/series/5849/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=5849","date":"2026-03-25T15:13:32","name":"rkisp1: pipeline rework for PFC","version":2,"mbox":"https://patchwork.libcamera.org/series/5849/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/26362/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/26362/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 36277C32F7\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 25 Mar 2026 15:15:39 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D02AF62C4E;\n\tWed, 25 Mar 2026 16:15:38 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 37F2D62BF0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 25 Mar 2026 16:15:37 +0100 (CET)","from ideasonboard.com (unknown\n\t[IPv6:2a00:6020:448c:6c00:b16a:5ed9:4ada:a95a])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 2DD2F1ADE; \n\tWed, 25 Mar 2026 16:14:19 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"qILCJV6h\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1774451659;\n\tbh=Nh+/HjRT8Ow0xkr2/Ni0Fr/5sJvQgPPeB+GRIqLevtM=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=qILCJV6htDiLKZGrDUUTPSP3ce1t3k+y7+bOLVmxVLJA61worFRKpzmmiTr2lqQPP\n\tJFpBDcPzmHzdY4umYIoVVG4MH4mdvlnUCLSnZUYIfWPKO7LdqexIYTlg/PSA9JyxY2\n\tOvPNF0bu3euZCzizAUs5NTapZkOseJWy0LpgvbpI=","From":"Stefan Klug <stefan.klug@ideasonboard.com>","To":"libcamera-devel@lists.libcamera.org","Cc":"Stefan Klug <stefan.klug@ideasonboard.com>,\n\tJacopo Mondi <jacopo.mondi@ideasonboard.com>","Subject":"[PATCH v2 20/32] libcamera: v4l2_videodevice: Do not hide frame\n\tdrops","Date":"Wed, 25 Mar 2026 16:13:52 +0100","Message-ID":"<20260325151416.2114564-21-stefan.klug@ideasonboard.com>","X-Mailer":"git-send-email 2.51.0","In-Reply-To":"<20260325151416.2114564-1-stefan.klug@ideasonboard.com>","References":"<20260325151416.2114564-1-stefan.klug@ideasonboard.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","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":"From: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n\nAutocorrecting the sequence number in case it doesn't start with 0\nproduces difficult to debug problems in cases where the first frame got\nlost. We need to handle these properly in the pipeline handler (and fix\nkernel drivers if needed).\n\nSigned-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\nSigned-off-by: Stefan Klug <stefan.klug@ideasonboard.com>\n\n---\n\nChanges in v2:\n- Rewrote commit message.\n---\n include/libcamera/internal/v4l2_videodevice.h |  1 -\n src/libcamera/v4l2_videodevice.cpp            | 15 ---------------\n 2 files changed, 16 deletions(-)","diff":"diff --git a/include/libcamera/internal/v4l2_videodevice.h b/include/libcamera/internal/v4l2_videodevice.h\nindex 57db0036db6b..de91fbd0f8dc 100644\n--- a/include/libcamera/internal/v4l2_videodevice.h\n+++ b/include/libcamera/internal/v4l2_videodevice.h\n@@ -286,7 +286,6 @@ private:\n \tEventNotifier *fdBufferNotifier_;\n \n \tState state_;\n-\tstd::optional<unsigned int> firstFrame_;\n \n \tTimer watchdog_;\n \tutils::Duration watchdogDuration_;\ndiff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp\nindex d877df29ee6e..2c911a11dba7 100644\n--- a/src/libcamera/v4l2_videodevice.cpp\n+++ b/src/libcamera/v4l2_videodevice.cpp\n@@ -1904,19 +1904,6 @@ FrameBuffer *V4L2VideoDevice::dequeueBuffer()\n \tif (V4L2_TYPE_IS_OUTPUT(buf.type))\n \t\treturn buffer;\n \n-\t/*\n-\t * Detect kernel drivers which do not reset the sequence number to zero\n-\t * on stream start.\n-\t */\n-\tif (!firstFrame_.has_value()) {\n-\t\tif (buf.sequence)\n-\t\t\tLOG(V4L2, Info)\n-\t\t\t\t<< \"Zero sequence expected for first frame (got \"\n-\t\t\t\t<< buf.sequence << \")\";\n-\t\tfirstFrame_ = buf.sequence;\n-\t}\n-\tmetadata.sequence -= firstFrame_.value();\n-\n \tSpan<const FrameBuffer::Plane> framebufferPlanes = buffer->planes();\n \tunsigned int numV4l2Planes = multiPlanar ? buf.length : 1;\n \n@@ -1993,8 +1980,6 @@ int V4L2VideoDevice::streamOn()\n {\n \tint ret;\n \n-\tfirstFrame_.reset();\n-\n \tret = ioctl(VIDIOC_STREAMON, &bufferType_);\n \tif (ret < 0) {\n \t\tLOG(V4L2, Error)\n","prefixes":["v2","20/32"]}