From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Hans Verkuil <hverkuil@xs4all.nl>
Cc: "Sylwester Nawrocki" <sylvester.nawrocki@gmail.com>,
"Sakari Ailus" <sakari.ailus@iki.fi>,
"Rémi Denis-Courmont" <remi@remlab.net>,
linux-media@vger.kernel.org,
"Hans Verkuil" <hans.verkuil@cisco.com>
Subject: Re: [RFCv3 API PATCH 15/31] v4l2-core: Add new V4L2_CAP_MONOTONIC_TS capability.
Date: Sun, 16 Sep 2012 17:33:05 +0200 [thread overview]
Message-ID: <2870315.6PlfZS62FS@avalon> (raw)
In-Reply-To: <201209161557.15049.hverkuil@xs4all.nl>
On Sunday 16 September 2012 15:57:14 Hans Verkuil wrote:
> On Sat September 15 2012 22:16:24 Sylwester Nawrocki wrote:
> > On 09/15/2012 02:35 PM, Hans Verkuil wrote:
> > >>>> If we switch all existing drivers to monotonic timestamps in kernel
> > >>>> release
> > >>>> 3.x, v4l2-compliance can just use the version it gets from
> > >>>> VIDIOC_QUERYCAP and enforce monotonic timestamps verification if the
> > >>>> version is>= 3.x. This isn't more difficult for apps to check than a
> > >>>> dedicated flag (although it's less explicit).
> > >>>
> > >>> I think that checking for the driver (kernel) version is a very poor
> > >>> substitute for testing against a proper flag.
> > >>
> > >> That flag should be the default in this case. The flag should be set by
> > >> the framework instead giving every driver the job of setting it.
> > >>
> > >>> One alternative might be to use a v4l2_buffer flag instead. That does
> > >>> have the advantage that in the future we can add additional flags
> > >>> should we need to support different clocks. Should we ever add
> > >>> support to switch clocks dynamically, then a buffer flag is more
> > >>> suitable than a driver capability. In that scenario it does make real
> > >>> sense to have a flag (or really mask).
> > >>>
> > >>> Say something like this:
> > >>>
> > >>> /* Clock Mask */
> > >>> V4L2_BUF_FLAG_CLOCK_MASK 0xf000
> > >>> /* Possible Clocks */
> > >>> V4L2_BUF_FLAG_CLOCK_SYSTEM 0x0000
> > >
> > > I realized that this should be called:
> > >
> > > V4L2_BUF_FLAG_CLOCK_UNKNOWN 0x0000
> > >
> > > With a comment saying that is clock is either the system clock or a
> > > monotonic clock. That reflects the current situation correctly.
> > >
> > >>> V4L2_BUF_FLAG_CLOCK_MONOTONIC 0x1000
> >
> > There is already lots of overhead related to the buffers management, could
> > we perhaps have the most common option defined in a way that drivers don't
> > need to update each buffer's flags before dequeuing, only to indicate the
> > timestamp type (other than flags being modified in videobuf) ?
>
> Well, if all vb2 drivers use the monotonic clock, then you could do it in
> __fill_v4l2_buffer: instead of clearing just the state flags you'd clear
> state + clock flags, and you OR in the monotonic flag in the case statement
> below (adding just a single b->flags |= line in the DEQUEUED case).
>
> So that wouldn't add any overhead. Not that I think setting a flag will add
> any measurable overhead in any case.
>
> > This buffer flags idea sounds to me worse than the capability flag. After
> > all the drivers should use monotonic clock timestamps, shouldn't they ?
>
> Yes. But you have monotonic and raw monotonic clocks at the moment, and
> perhaps others will be added in the future. You can't change clocks if you
> put this in the querycap capabilities.
>
> > Have anyone has ever come with a use case for switching timestamps clock
> > type, can anyone give an example of it ? How likely is we will ever need
> > that ?
>
> Well, ALSA allows you to switch between gettimeofday and monotonic. So in
> theory at least if an app selects gettimeofday for alsa, that app might also
> want to select gettimeofday for v4l2.
>
> I'd really like to keep this door open. My experience is that if something
> is possible, then someone somewhere will want to use it.
As far as system timestamps are concerned I think the monotonic clock should
be enough, at least for now. Raw monotonic could possibly be useful later.
Another important use case I have in mind is to provide raw device timestamps.
For instance UVC devices send a device clock timestamp along with video
frames. That timestamp can be useful to userspace applications.
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2012-09-16 15:32 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-14 10:57 [RFCv3 API PATCH 00/31] Full series of API fixes from the 2012 Media Workshop Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 01/31] v4l: Remove experimental tag from certain API elements Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 02/31] videodev2.h: split off controls into v4l2-controls.h Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 03/31] DocBook: improve STREAMON/OFF documentation Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 04/31] DocBook: make the G/S/TRY_FMT specification more strict Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 05/31] DocBook: bus_info can no longer be empty Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 06/31] vivi/mem2mem_testdev: update to latest bus_info specification Hans Verkuil
2012-09-14 17:34 ` Sylwester Nawrocki
2012-09-14 10:57 ` [RFCv3 API PATCH 07/31] v4l2-core: deprecate V4L2_BUF_TYPE_PRIVATE Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 08/31] DocBook: " Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 09/31] v4l2: remove experimental tag from a number of old drivers Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 10/31] DocBook: document when to return ENODATA Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 11/31] v4l2-core: tvnorms may be 0 for a given input, handle that case Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 12/31] Rename V4L2_(IN|OUT)_CAP_CUSTOM_TIMINGS Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 13/31] Feature removal: Remove CUSTOM_TIMINGS defines in 3.9 Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 14/31] DocBook: fix awkward language and fix the documented return value Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 15/31] v4l2-core: Add new V4L2_CAP_MONOTONIC_TS capability Hans Verkuil
2012-09-14 20:25 ` Sakari Ailus
2012-09-14 20:27 ` Rémi Denis-Courmont
2012-09-14 21:05 ` Sakari Ailus
2012-09-15 7:41 ` Hans Verkuil
2012-09-15 9:31 ` Laurent Pinchart
2012-09-15 10:05 ` Hans Verkuil
2012-09-15 10:37 ` Sakari Ailus
2012-09-15 12:35 ` Hans Verkuil
2012-09-15 20:16 ` Sylwester Nawrocki
2012-09-16 13:57 ` Hans Verkuil
2012-09-16 15:33 ` Laurent Pinchart [this message]
2012-09-16 21:59 ` Sylwester Nawrocki
2012-09-17 7:13 ` Daniel Glöckner
2012-09-17 9:18 ` Laurent Pinchart
2012-09-17 9:28 ` Hans Verkuil
2012-09-17 9:30 ` Daniel Glöckner
2012-09-17 17:19 ` Sakari Ailus
2012-09-17 20:27 ` Sylwester Nawrocki
2012-09-18 7:42 ` Sakari Ailus
2012-09-15 10:26 ` Sylwester Nawrocki
2012-09-14 10:57 ` [RFCv3 API PATCH 16/31] Add V4L2_CAP_MONOTONIC_TS where applicable Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 17/31] DocBook: clarify that sequence is also set for output devices Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 18/31] DocBook: Mark CROPCAP as optional instead of as compulsory Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 19/31] v4l2: make vidioc_s_fbuf const Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 20/31] v4l2: make vidioc_s_jpegcomp const Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 21/31] v4l2: make vidioc_s_freq_hw_seek const Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 22/31] v4l2: make vidioc_(un)subscribe_event const Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 23/31] v4l2: make vidioc_s_audio const Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 24/31] v4l2: make vidioc_s_audout const Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 25/31] v4l2: make vidioc_s_modulator const Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 26/31] v4l2: make vidioc_s_crop const Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 27/31] v4l2-dev: add new VFL_DIR_ defines Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 28/31] Set vfl_dir for all display or m2m drivers Hans Verkuil
2012-09-14 17:34 ` Sylwester Nawrocki
2012-09-14 10:57 ` [RFCv3 API PATCH 29/31] v4l2-dev: improve ioctl validity checks Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 30/31] v4l2-dev: reorder checks into blocks of ioctls with similar properties Hans Verkuil
2012-09-14 10:57 ` [RFCv3 API PATCH 31/31] Add vfl_dir field documentation Hans Verkuil
2012-09-14 17:34 ` Sylwester Nawrocki
2012-09-14 17:59 ` Hans Verkuil
2012-09-14 21:26 ` [RFCv3 API PATCH 00/31] Full series of API fixes from the 2012 Media Workshop Sakari Ailus
2012-09-15 7:33 ` Hans Verkuil
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=2870315.6PlfZS62FS@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=hans.verkuil@cisco.com \
--cc=hverkuil@xs4all.nl \
--cc=linux-media@vger.kernel.org \
--cc=remi@remlab.net \
--cc=sakari.ailus@iki.fi \
--cc=sylvester.nawrocki@gmail.com \
/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).