From: p.zabel@pengutronix.de (Philipp Zabel)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 29/36] media: imx: mipi-csi2: enable setting and getting of frame rates
Date: Tue, 14 Mar 2017 11:43:07 +0100 [thread overview]
Message-ID: <1489488187.8406.3.camel@pengutronix.de> (raw)
In-Reply-To: <4ed15eae-b6c6-55f7-1c6c-9ea84466ed71@xs4all.nl>
On Tue, 2017-03-14 at 08:34 +0100, Hans Verkuil wrote:
> On 03/13/2017 10:03 PM, Sakari Ailus wrote:
> > Hi Steve,
> >
> > On Mon, Mar 13, 2017 at 11:06:22AM -0700, Steve Longerbeam wrote:
> >>
> >>
> >> On 03/13/2017 06:55 AM, Philipp Zabel wrote:
> >>> On Mon, 2017-03-13 at 13:27 +0000, Russell King - ARM Linux wrote:
> >>>> On Mon, Mar 13, 2017 at 03:16:48PM +0200, Sakari Ailus wrote:
> >>>>> The vast majority of existing drivers do not implement them nor the user
> >>>>> space expects having to set them. Making that mandatory would break existing
> >>>>> user space.
> >>>>>
> >>>>> In addition, that does not belong to link validation either: link validation
> >>>>> should only include static properties of the link that are required for
> >>>>> correct hardware operation. Frame rate is not such property: hardware that
> >>>>> supports the MC interface generally does not recognise such concept (with
> >>>>> the exception of some sensors). Additionally, it is dynamic: the frame rate
> >>>>> can change during streaming, making its validation at streamon time useless.
> >>>>
> >>>> So how do we configure the CSI, which can do frame skipping?
> >>>>
> >>>> With what you're proposing, it means it's possible to configure the
> >>>> camera sensor source pad to do 50fps. Configure the CSI sink pad to
> >>>> an arbitary value, such as 30fps, and configure the CSI source pad to
> >>>> 15fps.
> >>>>
> >>>> What you actually get out of the CSI is 25fps, which bears very little
> >>>> with the actual values used on the CSI source pad.
> >>>>
> >>>> You could say "CSI should ask the camera sensor" - well, that's fine
> >>>> if it's immediately downstream, but otherwise we'd need to go walking
> >>>> down the graph to find something that resembles its source - there may
> >>>> be mux and CSI2 interface subdev blocks in that path. Or we just accept
> >>>> that frame rates are completely arbitary and bear no useful meaning what
> >>>> so ever.
> >>>
> >>> Which would include the frame interval returned by VIDIOC_G_PARM on the
> >>> connected video device, as that gets its information from the CSI output
> >>> pad's frame interval.
> >>>
> >>
> >> I'm kinda in the middle on this topic. I agree with Sakari that
> >> frame rate can fluctuate, but that should only be temporary. If
> >> the frame rate permanently shifts from what a subdev reports via
> >> g_frame_interval, then that is a system problem. So I agree with
> >> Phillip and Russell that a link validation of frame interval still
> >> makes sense.
> >>
> >> But I also have to agree with Sakari that a subdev that has no
> >> control over frame rate has no business implementing those ops.
> >>
> >> And then I agree with Russell that for subdevs that do have control
> >> over frame rate, they would have to walk the graph to find the frame
> >> rate source.
> >>
> >> So we're stuck in a broken situation: either the subdevs have to walk
> >> the graph to find the source of frame rate, or s_frame_interval
> >> would have to be mandatory and validated between pads, same as set_fmt.
> >
> > It's not broken; what we are missing though is documentation on how to
> > control devices that can change the frame rate i.e. presumably drop frames
> > occasionally.
> >
> > If you're doing something that hasn't been done before, it may be that new
> > documentation needs to be written to accomodate that use case. As we have an
> > existing interface (VIDIOC_SUBDEV_[GS]_FRAME_INTERVAL) it does make sense
> > to use that. What is not possible, though, is to mandate its use in link
> > validation everywhere.
> >
> > If you had a hardware limitation that would require that the frame rate is
> > constant, then we'd need to handle that in link validation for that
> > particular piece of hardware. But there really is no case for doing that for
> > everything else.
> >
>
> General note: I would strongly recommend that g/s_parm support is removed in
> v4l2_subdev in favor of g/s_frame_interval.
>
> g/s_parm is an abomination...
Agreed. Just in this specific case I was talking about G_PARM on
the /dev/video node, not the v4l2_subdev nodes. This is currently used
by non-subdev-aware userspace to obtain the framerate from the video
capture device.
> There seem to be only a few i2c drivers that use g/s_parm, so this shouldn't
> be a lot of work.
>
> Having two APIs for the same thing is always very bad.
>
> Regards,
>
> Hans
>
regards
Philipp
next prev parent reply other threads:[~2017-03-14 10:43 UTC|newest]
Thread overview: 228+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-16 2:19 [PATCH v4 00/36] i.MX Media Driver Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 01/36] [media] dt-bindings: Add bindings for i.MX media driver Steve Longerbeam
2017-02-16 11:54 ` Philipp Zabel
2017-02-16 19:20 ` Steve Longerbeam
2017-02-27 14:38 ` Rob Herring
2017-03-01 0:00 ` Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 02/36] ARM: dts: imx6qdl: Add compatible, clocks, irqs to MIPI CSI-2 node Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 03/36] ARM: dts: imx6qdl: Add mipi_ipu1/2 multiplexers, mipi_csi, and their connections Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 04/36] ARM: dts: imx6qdl: add capture-subsystem device Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 05/36] ARM: dts: imx6qdl-sabrelite: remove erratum ERR006687 workaround Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 06/36] ARM: dts: imx6-sabrelite: add OV5642 and OV5640 camera sensors Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 07/36] ARM: dts: imx6-sabresd: " Steve Longerbeam
2017-02-17 0:51 ` Fabio Estevam
2017-02-17 0:56 ` Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 08/36] ARM: dts: imx6-sabreauto: create i2cmux for i2c3 Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 09/36] ARM: dts: imx6-sabreauto: add reset-gpios property for max7310_b Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 10/36] ARM: dts: imx6-sabreauto: add pinctrl for gpt input capture Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 11/36] ARM: dts: imx6-sabreauto: add the ADV7180 video decoder Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 12/36] add mux and video interface bridge entity functions Steve Longerbeam
2017-02-19 21:28 ` Pavel Machek
2017-02-22 17:19 ` Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 13/36] [media] v4l2: add a frame timeout event Steve Longerbeam
2017-03-02 15:53 ` Sakari Ailus
2017-03-02 23:07 ` Steve Longerbeam
2017-03-03 11:45 ` Sakari Ailus
2017-03-03 22:43 ` Steve Longerbeam
2017-03-04 10:56 ` Sakari Ailus
2017-03-05 0:37 ` Steve Longerbeam
2017-03-05 21:31 ` Sakari Ailus
2017-03-05 22:41 ` Russell King - ARM Linux
2017-03-10 2:38 ` Steve Longerbeam
2017-03-10 9:33 ` Russell King - ARM Linux
2017-02-16 2:19 ` [PATCH v4 14/36] [media] v4l2-mc: add a function to inherit controls from a pipeline Steve Longerbeam
2017-02-19 21:44 ` Pavel Machek
2017-03-02 16:02 ` Sakari Ailus
2017-03-02 23:48 ` Steve Longerbeam
2017-03-03 0:46 ` Steve Longerbeam
2017-03-03 2:12 ` Steve Longerbeam
2017-03-03 19:17 ` Sakari Ailus
2017-03-03 22:47 ` Steve Longerbeam
2017-03-03 23:06 ` Russell King - ARM Linux
2017-03-04 0:36 ` Steve Longerbeam
2017-03-04 13:13 ` Sakari Ailus
2017-03-10 12:54 ` Hans Verkuil
2017-03-10 13:07 ` Russell King - ARM Linux
2017-03-10 13:22 ` Hans Verkuil
2017-03-10 14:01 ` Russell King - ARM Linux
2017-03-10 14:20 ` Hans Verkuil
2017-03-10 15:53 ` Mauro Carvalho Chehab
2017-03-10 22:37 ` Sakari Ailus
2017-03-11 11:25 ` Mauro Carvalho Chehab
2017-03-11 21:52 ` Pavel Machek
2017-03-11 23:14 ` Russell King - ARM Linux
2017-03-12 0:19 ` Steve Longerbeam
2017-03-12 21:29 ` Pavel Machek
2017-03-12 22:37 ` Mauro Carvalho Chehab
2017-03-14 18:26 ` Pavel Machek
2017-03-13 12:46 ` Sakari Ailus
2017-03-14 3:45 ` Mauro Carvalho Chehab
2017-03-14 7:55 ` Hans Verkuil
2017-03-14 10:21 ` Mauro Carvalho Chehab
2017-03-14 22:32 ` media / v4l2-mc: wishlist for complex cameras (was Re: [PATCH v4 14/36] [media] v4l2-mc: add a function to inherit controls from a pipeline) Pavel Machek
2017-03-15 0:54 ` Mauro Carvalho Chehab
2017-03-15 10:50 ` Philippe De Muyter
2017-03-15 18:55 ` Nicolas Dufresne
2017-03-16 9:26 ` Philipp Zabel
2017-03-16 9:47 ` Philippe De Muyter
2017-03-16 10:01 ` Philipp Zabel
2017-03-16 10:19 ` Philippe De Muyter
2017-03-15 18:04 ` Pavel Machek
2017-03-15 20:26 ` Mauro Carvalho Chehab
2017-03-16 22:11 ` Pavel Machek
2017-03-20 13:24 ` [PATCH v4 14/36] [media] v4l2-mc: add a function to inherit controls from a pipeline Hans Verkuil
2017-03-20 15:39 ` Mauro Carvalho Chehab
2017-03-20 16:10 ` Russell King - ARM Linux
2017-03-20 17:37 ` Mauro Carvalho Chehab
2017-03-17 11:42 ` Russell King - ARM Linux
2017-03-17 11:55 ` Sakari Ailus
2017-03-17 13:24 ` Mauro Carvalho Chehab
2017-03-17 13:51 ` Philipp Zabel
2017-03-17 14:37 ` Russell King - ARM Linux
2017-03-20 13:10 ` Hans Verkuil
2017-03-20 15:06 ` Mauro Carvalho Chehab
2017-03-21 11:11 ` Pavel Machek
2017-03-20 11:16 ` Hans Verkuil
2017-03-17 12:02 ` Philipp Zabel
2017-03-17 12:16 ` Russell King - ARM Linux
2017-03-17 17:49 ` Mauro Carvalho Chehab
2017-03-19 13:25 ` Pavel Machek
2017-03-26 16:44 ` Laurent Pinchart
2017-03-10 15:26 ` Mauro Carvalho Chehab
2017-03-10 15:57 ` Russell King - ARM Linux
2017-03-10 17:06 ` Russell King - ARM Linux
2017-03-10 20:42 ` Mauro Carvalho Chehab
2017-03-10 21:55 ` Pavel Machek
2017-03-10 15:09 ` Mauro Carvalho Chehab
2017-03-11 11:32 ` Hans Verkuil
2017-03-11 13:14 ` Mauro Carvalho Chehab
2017-03-11 15:32 ` Sakari Ailus
2017-03-11 17:32 ` Russell King - ARM Linux
2017-03-11 18:08 ` Steve Longerbeam
2017-03-11 18:45 ` Russell King - ARM Linux
2017-03-11 18:54 ` Steve Longerbeam
2017-03-11 18:59 ` Russell King - ARM Linux
2017-03-11 19:06 ` Steve Longerbeam
2017-03-11 20:41 ` Russell King - ARM Linux
2017-03-12 3:31 ` Steve Longerbeam
2017-03-12 7:37 ` Russell King - ARM Linux
2017-03-12 17:56 ` Steve Longerbeam
2017-03-12 21:58 ` Mauro Carvalho Chehab
2017-03-26 9:12 ` script to setup pipeline was " Pavel Machek
2017-03-13 10:44 ` Hans Verkuil
2017-03-13 10:58 ` Russell King - ARM Linux
2017-03-13 11:08 ` Hans Verkuil
2017-03-13 11:42 ` Mauro Carvalho Chehab
2017-03-13 12:35 ` Russell King - ARM Linux
2017-03-12 18:14 ` Pavel Machek
2017-03-11 20:26 ` Pavel Machek
2017-03-11 20:33 ` Steve Longerbeam
2017-03-11 21:30 ` Pavel Machek
2017-02-16 2:19 ` [PATCH v4 15/36] platform: add video-multiplexer subdevice driver Steve Longerbeam
2017-02-19 22:02 ` Pavel Machek
2017-02-21 9:11 ` Philipp Zabel
2017-02-24 20:09 ` Pavel Machek
2017-02-27 14:41 ` Rob Herring
2017-03-01 0:20 ` Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 16/36] UAPI: Add media UAPI Kbuild file Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 17/36] media: Add userspace header file for i.MX Steve Longerbeam
2017-02-16 11:33 ` Philipp Zabel
2017-02-22 23:54 ` Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 18/36] media: Add i.MX media core driver Steve Longerbeam
2017-02-16 10:27 ` Russell King - ARM Linux
2017-02-16 17:53 ` Steve Longerbeam
2017-02-16 13:02 ` Philipp Zabel
2017-02-16 13:44 ` Russell King - ARM Linux
2017-02-17 1:33 ` Steve Longerbeam
2017-02-17 8:34 ` Philipp Zabel
2017-02-16 2:19 ` [PATCH v4 19/36] media: imx: Add Capture Device Interface Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 20/36] media: imx: Add CSI subdev driver Steve Longerbeam
2017-02-16 11:52 ` Russell King - ARM Linux
2017-02-16 12:40 ` Russell King - ARM Linux
2017-02-16 13:09 ` Russell King - ARM Linux
2017-02-16 14:20 ` Russell King - ARM Linux
2017-02-16 19:07 ` Steve Longerbeam
2017-02-16 18:44 ` Steve Longerbeam
2017-02-16 19:09 ` Russell King - ARM Linux
2017-02-16 2:19 ` [PATCH v4 21/36] media: imx: Add VDIC " Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 22/36] media: imx: Add IC subdev drivers Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 23/36] media: imx: Add MIPI CSI-2 Receiver subdev driver Steve Longerbeam
2017-02-16 10:28 ` Russell King - ARM Linux
2017-02-16 17:54 ` Steve Longerbeam
2017-02-17 10:47 ` Philipp Zabel
2017-02-17 11:06 ` Russell King - ARM Linux
2017-02-17 11:38 ` Philipp Zabel
2017-02-22 23:38 ` Steve Longerbeam
2017-02-22 23:41 ` Steve Longerbeam
2017-02-23 0:06 ` Steve Longerbeam
2017-02-23 0:09 ` Steve Longerbeam
2017-02-17 14:16 ` Philipp Zabel
2017-02-17 18:27 ` Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 24/36] [media] add Omnivision OV5640 sensor driver Steve Longerbeam
2017-02-27 14:45 ` Rob Herring
2017-03-01 0:43 ` Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 25/36] ARM: imx_v6_v7_defconfig: Enable staging video4linux drivers Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 26/36] media: imx: add support for bayer formats Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 27/36] media: imx: csi: " Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 28/36] media: imx: csi: fix crop rectangle changes in set_fmt Steve Longerbeam
2017-02-16 11:05 ` Russell King - ARM Linux
2017-02-16 18:16 ` Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 29/36] media: imx: mipi-csi2: enable setting and getting of frame rates Steve Longerbeam
2017-02-18 1:11 ` Steve Longerbeam
2017-02-18 1:12 ` Steve Longerbeam
2017-02-18 9:23 ` Russell King - ARM Linux
2017-02-18 17:29 ` Steve Longerbeam
2017-02-18 18:08 ` Russell King - ARM Linux
2017-02-20 22:04 ` Sakari Ailus
2017-02-20 22:56 ` Steve Longerbeam
2017-02-20 23:47 ` Steve Longerbeam
2017-02-21 12:15 ` Sakari Ailus
2017-02-21 22:21 ` Steve Longerbeam
2017-02-21 23:34 ` Steve Longerbeam
2017-02-21 0:13 ` Russell King - ARM Linux
2017-02-21 0:18 ` Steve Longerbeam
2017-02-21 8:50 ` Philipp Zabel
2017-03-13 13:16 ` Sakari Ailus
2017-03-13 13:27 ` Russell King - ARM Linux
2017-03-13 13:55 ` Philipp Zabel
2017-03-13 18:06 ` Steve Longerbeam
2017-03-13 21:03 ` Sakari Ailus
2017-03-13 21:29 ` Russell King - ARM Linux
2017-03-14 7:34 ` Hans Verkuil
2017-03-14 10:43 ` Philipp Zabel [this message]
2017-03-13 20:56 ` Sakari Ailus
2017-03-13 21:07 ` Russell King - ARM Linux
2017-02-21 12:37 ` Sakari Ailus
2017-02-21 13:21 ` Russell King - ARM Linux
2017-02-21 15:38 ` Sakari Ailus
2017-02-21 16:03 ` Russell King - ARM Linux
2017-02-21 16:15 ` Sakari Ailus
2017-02-16 2:19 ` [PATCH v4 30/36] media: imx: update capture dev format on IDMAC output pad set_fmt Steve Longerbeam
2017-02-16 11:29 ` Philipp Zabel
2017-02-16 2:19 ` [PATCH v4 31/36] media: imx: csi: add __csi_get_fmt Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 32/36] media: imx: csi/fim: add support for frame intervals Steve Longerbeam
2017-02-16 2:38 ` Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 33/36] media: imx: redo pixel format enumeration and negotiation Steve Longerbeam
2017-02-16 11:32 ` Philipp Zabel
2017-02-22 23:52 ` Steve Longerbeam
2017-02-23 9:10 ` Philipp Zabel
2017-02-24 1:30 ` Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 34/36] media: imx: csi: add frame skipping support Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 35/36] media: imx: csi: fix crop rectangle reset in sink set_fmt Steve Longerbeam
2017-02-16 2:19 ` [PATCH v4 36/36] media: imx: propagate sink pad formats to source pads Steve Longerbeam
2017-02-16 11:29 ` Philipp Zabel
2017-02-16 18:19 ` Steve Longerbeam
2017-02-16 11:37 ` [PATCH v4 00/36] i.MX Media Driver Russell King - ARM Linux
2017-02-16 18:30 ` Steve Longerbeam
2017-02-16 22:20 ` Russell King - ARM Linux
2017-02-16 22:27 ` Steve Longerbeam
2017-02-16 22:57 ` Russell King - ARM Linux
2017-02-17 10:39 ` Philipp Zabel
2017-02-17 10:56 ` Russell King - ARM Linux
2017-02-17 11:21 ` Philipp Zabel
2017-02-18 17:21 ` Steve Longerbeam
2017-02-17 11:43 ` Philipp Zabel
2017-02-17 12:22 ` Sakari Ailus
2017-02-17 12:31 ` Russell King - ARM Linux
2017-02-17 15:04 ` Philipp Zabel
2017-02-18 11:58 ` Sakari Ailus
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1489488187.8406.3.camel@pengutronix.de \
--to=p.zabel@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).