[media] doc-rst: update CEC_RECEIVE
[deliverable/linux.git] / Documentation / media / uapi / v4l / vidioc-subdev-g-frame-interval.rst
CommitLineData
5377d91f
MH
1.. -*- coding: utf-8; mode: rst -*-
2
af4a4d0d 3.. _VIDIOC_SUBDEV_G_FRAME_INTERVAL:
5377d91f
MH
4
5********************************************************************
6ioctl VIDIOC_SUBDEV_G_FRAME_INTERVAL, VIDIOC_SUBDEV_S_FRAME_INTERVAL
7********************************************************************
8
15e7d615 9Name
586027ce 10====
5377d91f 11
586027ce 12VIDIOC_SUBDEV_G_FRAME_INTERVAL - VIDIOC_SUBDEV_S_FRAME_INTERVAL - Get or set the frame interval on a subdev pad
5377d91f 13
15e7d615
MCC
14
15Synopsis
5377d91f
MH
16========
17
b7e67f6c 18.. cpp:function:: int ioctl( int fd, int request, struct v4l2_subdev_frame_interval *argp )
5377d91f 19
586027ce 20
15e7d615 21Arguments
5377d91f
MH
22=========
23
24``fd``
25 File descriptor returned by :ref:`open() <func-open>`.
26
27``request``
28 VIDIOC_SUBDEV_G_FRAME_INTERVAL,
29 VIDIOC_SUBDEV_S_FRAME_INTERVAL
30
31``argp``
32
33
15e7d615 34Description
5377d91f
MH
35===========
36
37These ioctls are used to get and set the frame interval at specific
38subdev pads in the image pipeline. The frame interval only makes sense
39for sub-devices that can control the frame period on their own. This
40includes, for instance, image sensors and TV tuners. Sub-devices that
41don't support frame intervals must not implement these ioctls.
42
43To retrieve the current frame interval applications set the ``pad``
44field of a struct
45:ref:`v4l2_subdev_frame_interval <v4l2-subdev-frame-interval>` to
46the desired pad number as reported by the media controller API. When
47they call the ``VIDIOC_SUBDEV_G_FRAME_INTERVAL`` ioctl with a pointer to
48this structure the driver fills the members of the ``interval`` field.
49
50To change the current frame interval applications set both the ``pad``
51field and all members of the ``interval`` field. When they call the
52``VIDIOC_SUBDEV_S_FRAME_INTERVAL`` ioctl with a pointer to this
53structure the driver verifies the requested interval, adjusts it based
54on the hardware capabilities and configures the device. Upon return the
55struct
56:ref:`v4l2_subdev_frame_interval <v4l2-subdev-frame-interval>`
57contains the current frame interval as would be returned by a
58``VIDIOC_SUBDEV_G_FRAME_INTERVAL`` call.
59
60Drivers must not return an error solely because the requested interval
61doesn't match the device capabilities. They must instead modify the
62interval to match what the hardware can provide. The modified interval
63should be as close as possible to the original request.
64
65Sub-devices that support the frame interval ioctls should implement them
66on a single pad only. Their behaviour when supported on multiple pads of
67the same sub-device is not defined.
68
69
70.. _v4l2-subdev-frame-interval:
71
72.. flat-table:: struct v4l2_subdev_frame_interval
73 :header-rows: 0
74 :stub-columns: 0
75 :widths: 1 1 2
76
77
78 - .. row 1
79
80 - __u32
81
82 - ``pad``
83
84 - Pad number as reported by the media controller API.
85
86 - .. row 2
87
88 - struct :ref:`v4l2_fract <v4l2-fract>`
89
90 - ``interval``
91
92 - Period, in seconds, between consecutive video frames.
93
94 - .. row 3
95
96 - __u32
97
ffbab694 98 - ``reserved``\ \[9\]
5377d91f
MH
99
100 - Reserved for future extensions. Applications and drivers must set
0579e6e3 101 the array to zero.
5377d91f
MH
102
103
15e7d615 104Return Value
5377d91f
MH
105============
106
107On success 0 is returned, on error -1 and the ``errno`` variable is set
108appropriately. The generic error codes are described at the
109:ref:`Generic Error Codes <gen-errors>` chapter.
110
111EBUSY
112 The frame interval can't be changed because the pad is currently
113 busy. This can be caused, for instance, by an active video stream on
114 the pad. The ioctl must not be retried without performing another
115 action to fix the problem first. Only returned by
116 ``VIDIOC_SUBDEV_S_FRAME_INTERVAL``
117
118EINVAL
119 The struct
120 :ref:`v4l2_subdev_frame_interval <v4l2-subdev-frame-interval>`
121 ``pad`` references a non-existing pad, or the pad doesn't support
122 frame intervals.
This page took 0.038701 seconds and 5 git commands to generate.