summaryrefslogtreecommitdiffstats
path: root/Documentation/linux_tv/media/v4l/vidioc-query-dv-timings.rst
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/linux_tv/media/v4l/vidioc-query-dv-timings.rst')
-rw-r--r--Documentation/linux_tv/media/v4l/vidioc-query-dv-timings.rst91
1 files changed, 91 insertions, 0 deletions
diff --git a/Documentation/linux_tv/media/v4l/vidioc-query-dv-timings.rst b/Documentation/linux_tv/media/v4l/vidioc-query-dv-timings.rst
new file mode 100644
index 0000000..567faa7
--- /dev/null
+++ b/Documentation/linux_tv/media/v4l/vidioc-query-dv-timings.rst
@@ -0,0 +1,91 @@
+.. -*- coding: utf-8; mode: rst -*-
+
+.. _vidioc-query-dv-timings:
+
+*****************************
+ioctl VIDIOC_QUERY_DV_TIMINGS
+*****************************
+
+*man VIDIOC_QUERY_DV_TIMINGS(2)*
+
+VIDIOC_SUBDEV_QUERY_DV_TIMINGS
+Sense the DV preset received by the current input
+
+
+Synopsis
+========
+
+.. c:function:: int ioctl( int fd, int request, struct v4l2_dv_timings *argp )
+
+Arguments
+=========
+
+``fd``
+ File descriptor returned by :ref:`open() <func-open>`.
+
+``request``
+ VIDIOC_QUERY_DV_TIMINGS, VIDIOC_SUBDEV_QUERY_DV_TIMINGS
+
+``argp``
+
+
+Description
+===========
+
+The hardware may be able to detect the current DV timings automatically,
+similar to sensing the video standard. To do so, applications call
+``VIDIOC_QUERY_DV_TIMINGS`` with a pointer to a struct
+:ref:`v4l2_dv_timings <v4l2-dv-timings>`. Once the hardware detects
+the timings, it will fill in the timings structure.
+
+Please note that drivers shall *not* switch timings automatically if new
+timings are detected. Instead, drivers should send the
+``V4L2_EVENT_SOURCE_CHANGE`` event (if they support this) and expect
+that userspace will take action by calling ``VIDIOC_QUERY_DV_TIMINGS``.
+The reason is that new timings usually mean different buffer sizes as
+well, and you cannot change buffer sizes on the fly. In general,
+applications that receive the Source Change event will have to call
+``VIDIOC_QUERY_DV_TIMINGS``, and if the detected timings are valid they
+will have to stop streaming, set the new timings, allocate new buffers
+and start streaming again.
+
+If the timings could not be detected because there was no signal, then
+ENOLINK is returned. If a signal was detected, but it was unstable and
+the receiver could not lock to the signal, then ENOLCK is returned. If
+the receiver could lock to the signal, but the format is unsupported
+(e.g. because the pixelclock is out of range of the hardware
+capabilities), then the driver fills in whatever timings it could find
+and returns ERANGE. In that case the application can call
+:ref:`VIDIOC_DV_TIMINGS_CAP <vidioc-dv-timings-cap>` to compare the
+found timings with the hardware's capabilities in order to give more
+precise feedback to the user.
+
+
+Return Value
+============
+
+On success 0 is returned, on error -1 and the ``errno`` variable is set
+appropriately. The generic error codes are described at the
+:ref:`Generic Error Codes <gen-errors>` chapter.
+
+ENODATA
+ Digital video timings are not supported for this input or output.
+
+ENOLINK
+ No timings could be detected because no signal was found.
+
+ENOLCK
+ The signal was unstable and the hardware could not lock on to it.
+
+ERANGE
+ Timings were found, but they are out of range of the hardware
+ capabilities.
+
+
+.. ------------------------------------------------------------------------------
+.. This file was automatically converted from DocBook-XML with the dbxml
+.. library (https://github.com/return42/sphkerneldoc). The origin XML comes
+.. from the linux kernel, refer to:
+..
+.. * https://github.com/torvalds/linux/tree/master/Documentation/DocBook
+.. ------------------------------------------------------------------------------
OpenPOWER on IntegriCloud