Add a new flag that tells userspace that the monotonic clock is used
for timestamps and update the documentation accordingly.

We decided on this new flag during the 2012 Media Workshop.

Signed-off-by: Hans Verkuil <hans.verk...@cisco.com>
Reviewed-by: Sylwester Nawrocki <s.nawro...@samsung.com>
Acked-by: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
---
 Documentation/DocBook/media/v4l/io.xml              |   10 +++++++---
 Documentation/DocBook/media/v4l/vidioc-dqevent.xml  |    3 ++-
 Documentation/DocBook/media/v4l/vidioc-querycap.xml |    7 +++++++
 include/linux/videodev2.h                           |    1 +
 4 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/Documentation/DocBook/media/v4l/io.xml 
b/Documentation/DocBook/media/v4l/io.xml
index 2dc39d8..b680d66 100644
--- a/Documentation/DocBook/media/v4l/io.xml
+++ b/Documentation/DocBook/media/v4l/io.xml
@@ -582,10 +582,14 @@ applications when an output stream.</entry>
            <entry>struct timeval</entry>
            <entry><structfield>timestamp</structfield></entry>
            <entry></entry>
-           <entry><para>For input streams this is the
+           <entry><para>This is either the
 system time (as returned by the <function>gettimeofday()</function>
-function) when the first data byte was captured. For output streams
-the data will not be displayed before this time, secondary to the
+function) or a monotonic timestamp (as returned by the
+<function>clock_gettime(CLOCK_MONOTONIC, &amp;ts)</function> function).
+A monotonic timestamp is used if the <constant>V4L2_CAP_MONOTONIC_TS</constant>
+capability is set, otherwise the system time is used.
+For input streams this is the timestamp when the first data byte was captured.
+For output streams the data will not be displayed before this time, secondary 
to the
 nominal frame rate determined by the current video standard in
 enqueued order. Applications can for example zero this field to
 display frames as soon as possible. The driver stores the time at
diff --git a/Documentation/DocBook/media/v4l/vidioc-dqevent.xml 
b/Documentation/DocBook/media/v4l/vidioc-dqevent.xml
index 98a856f..00757d4 100644
--- a/Documentation/DocBook/media/v4l/vidioc-dqevent.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-dqevent.xml
@@ -120,7 +120,8 @@
            <entry>struct timespec</entry>
            <entry><structfield>timestamp</structfield></entry>
             <entry></entry>
-           <entry>Event timestamp.</entry>
+           <entry>Event timestamp using the monotonic clock as returned by the
+           <function>clock_gettime(CLOCK_MONOTONIC, &amp;ts)</function> 
function.</entry>
          </row>
          <row>
            <entry>u32</entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-querycap.xml 
b/Documentation/DocBook/media/v4l/vidioc-querycap.xml
index 4c70215..fae2036 100644
--- a/Documentation/DocBook/media/v4l/vidioc-querycap.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-querycap.xml
@@ -315,6 +315,13 @@ linkend="async">asynchronous</link> I/O methods.</entry>
 linkend="mmap">streaming</link> I/O method.</entry>
          </row>
          <row>
+           <entry><constant>V4L2_CAP_MONOTONIC_TS</constant></entry>
+           <entry>0x40000000</entry>
+           <entry>The driver uses a monotonic timestamp instead of wallclock 
time for the
+           &v4l2-buffer; <structfield>timestamp</structfield> field.
+           </entry>
+         </row>
+         <row>
            <entry><constant>V4L2_CAP_DEVICE_CAPS</constant></entry>
            <entry>0x80000000</entry>
            <entry>The driver fills the <structfield>device_caps</structfield>
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
index 292a2ef..3aad418 100644
--- a/include/linux/videodev2.h
+++ b/include/linux/videodev2.h
@@ -290,6 +290,7 @@ struct v4l2_capability {
 #define V4L2_CAP_ASYNCIO                0x02000000  /* async I/O */
 #define V4L2_CAP_STREAMING              0x04000000  /* streaming I/O ioctls */
 
+#define V4L2_CAP_MONOTONIC_TS           0x40000000  /* uses monotonic 
timestamps */
 #define V4L2_CAP_DEVICE_CAPS            0x80000000  /* sets device 
capabilities field */
 
 /*
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to