{"id":11592,"url":"https://patchwork.libcamera.org/api/covers/11592/?format=json","web_url":"https://patchwork.libcamera.org/cover/11592/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/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":"<20210316155211.6679-1-m.cichy@pengutronix.de>","date":"2021-03-16T15:52:05","name":"[libcamera-devel,RFC,0/6] Add propagation of sensor frame interval","submitter":{"id":80,"url":"https://patchwork.libcamera.org/api/people/80/?format=json","name":"Marian Cichy","email":"m.cichy@pengutronix.de"},"mbox":"https://patchwork.libcamera.org/cover/11592/mbox/","series":[{"id":1798,"url":"https://patchwork.libcamera.org/api/series/1798/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=1798","date":"2021-03-16T15:52:05","name":"Add propagation of sensor frame interval","version":1,"mbox":"https://patchwork.libcamera.org/series/1798/mbox/"}],"comments":"https://patchwork.libcamera.org/api/covers/11592/comments/","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 8D16CBD80C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 16 Mar 2021 15:52:30 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D43DF68D4A;\n\tTue, 16 Mar 2021 16:52:29 +0100 (CET)","from metis.ext.pengutronix.de (metis.ext.pengutronix.de\n\t[IPv6:2001:67c:670:201:290:27ff:fe1d:cc33])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 98CB068D48\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 16 Mar 2021 16:52:27 +0100 (CET)","from dude02.hi.pengutronix.de ([2001:67c:670:100:1d::28])\n\tby metis.ext.pengutronix.de with esmtps\n\t(TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92)\n\t(envelope-from <mci@pengutronix.de>)\n\tid 1lMBze-0000V0-R9; Tue, 16 Mar 2021 16:52:26 +0100","from mci by dude02.hi.pengutronix.de with local (Exim 4.92)\n\t(envelope-from <mci@pengutronix.de>)\n\tid 1lMBze-0003DL-HC; Tue, 16 Mar 2021 16:52:26 +0100"],"From":"Marian Cichy <m.cichy@pengutronix.de>","To":"libcamera-devel@lists.libcamera.org","Date":"Tue, 16 Mar 2021 16:52:05 +0100","Message-Id":"<20210316155211.6679-1-m.cichy@pengutronix.de>","X-Mailer":"git-send-email 2.29.2","MIME-Version":"1.0","X-SA-Exim-Connect-IP":"2001:67c:670:100:1d::28","X-SA-Exim-Mail-From":"mci@pengutronix.de","X-SA-Exim-Scanned":"No (on metis.ext.pengutronix.de);\n\tSAEximRunCond expanded to false","X-PTX-Original-Recipient":"libcamera-devel@lists.libcamera.org","Subject":"[libcamera-devel] [RFC PATCH 0/6] Add propagation of sensor frame\n\tinterval","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>","Cc":"graphics@pengutronix.de, Marian Cichy <m.cichy@pengutronix.de>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"This patch series is meant to demonstrate my use-case and to start a\ndiscussion. The main target is to have a mechanism where the\napplication, e.g. libcamerasrc can read out the frame interval set by\nthe driver.\n\nIt is generally useful for applications to know the framerate, e.g. one\ncan build pipelines with Gstreamer where the framerate is used to\npre-allocate a proper amount of memory or to compute the latency. It is\nalso an useful debug-information in general.\n\nthis approach uses the frame_interval ioctls which is for my driver the\nonly way to get the frame rate. I suspect there is also a different\napproach using controls::FrameDurations which I find in some parts of\nlibcamera. However, it is not clear to me, how I would use this and what\nthe driver needs to do here or if it even would be the better approach\nfor my use-case. Any comments to this are welcome.\n\n\nMarian Cichy (6):\n  libcamera: Add fraction.h\n  libcamera: stream: Add frame interval attribute\n  libcamera: v4l2_subdevice: Add methods to get/set frame interval\n  pipeline: simple: Propagate frame interval through pipeline\n  pipeline: simple: rename setupFormats to setupStreamProperties\n  gst: utils: Add framerate to caps\n\n include/libcamera/fraction.h                | 34 ++++++++++++\n include/libcamera/internal/v4l2_subdevice.h |  4 ++\n include/libcamera/stream.h                  |  2 +\n src/gstreamer/gstlibcamera-utils.cpp        |  2 +\n src/libcamera/fraction.cpp                  | 60 +++++++++++++++++++++\n src/libcamera/meson.build                   |  1 +\n src/libcamera/pipeline/simple/simple.cpp    | 31 +++++++++--\n src/libcamera/v4l2_subdevice.cpp            | 43 +++++++++++++++\n 8 files changed, 173 insertions(+), 4 deletions(-)\n create mode 100644 include/libcamera/fraction.h\n create mode 100644 src/libcamera/fraction.cpp"}