doc-rst: linux_tv: supress lots of warnings
[deliverable/linux.git] / Documentation / linux_tv / media / v4l / vidioc-g-fmt.rst
CommitLineData
5377d91f
MH
1.. -*- coding: utf-8; mode: rst -*-
2
af4a4d0d 3.. _VIDIOC_G_FMT:
5377d91f
MH
4
5************************************************
6ioctl VIDIOC_G_FMT, VIDIOC_S_FMT, VIDIOC_TRY_FMT
7************************************************
8
9*man VIDIOC_G_FMT(2)*
10
11VIDIOC_S_FMT
12VIDIOC_TRY_FMT
13Get or set the data format, try a format
14
15
16Synopsis
17========
18
b7e67f6c 19.. cpp:function:: int ioctl( int fd, int request, struct v4l2_format *argp )
5377d91f
MH
20
21Arguments
22=========
23
24``fd``
25 File descriptor returned by :ref:`open() <func-open>`.
26
27``request``
28 VIDIOC_G_FMT, VIDIOC_S_FMT, VIDIOC_TRY_FMT
29
30``argp``
31
32
33Description
34===========
35
36These ioctls are used to negotiate the format of data (typically image
37format) exchanged between driver and application.
38
39To query the current parameters applications set the ``type`` field of a
40struct :c:type:`struct v4l2_format` to the respective buffer (stream)
41type. For example video capture devices use
42``V4L2_BUF_TYPE_VIDEO_CAPTURE`` or
43``V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE``. When the application calls the
4e03cb76 44:ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl with a pointer to this structure the driver fills
5377d91f
MH
45the respective member of the ``fmt`` union. In case of video capture
46devices that is either the struct
47:ref:`v4l2_pix_format <v4l2-pix-format>` ``pix`` or the struct
48:ref:`v4l2_pix_format_mplane <v4l2-pix-format-mplane>` ``pix_mp``
49member. When the requested buffer type is not supported drivers return
50an EINVAL error code.
51
52To change the current format parameters applications initialize the
53``type`` field and all fields of the respective ``fmt`` union member.
54For details see the documentation of the various devices types in
55:ref:`devices`. Good practice is to query the current parameters
56first, and to modify only those parameters not suitable for the
2212ff25 57application. When the application calls the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl with
5377d91f
MH
58a pointer to a :c:type:`struct v4l2_format` structure the driver
59checks and adjusts the parameters against hardware abilities. Drivers
60should not return an error code unless the ``type`` field is invalid,
61this is a mechanism to fathom device capabilities and to approach
62parameters acceptable for both the application and driver. On success
63the driver may program the hardware, allocate resources and generally
2212ff25 64prepare for data exchange. Finally the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl returns
4e03cb76 65the current format parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does. Very simple,
5377d91f
MH
66inflexible devices may even ignore all input and always return the
67default parameters. However all V4L2 devices exchanging data with the
4e03cb76 68application must implement the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`
5377d91f 69ioctl. When the requested buffer type is not supported drivers return an
2212ff25 70EINVAL error code on a :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` attempt. When I/O is already in
5377d91f
MH
71progress or the resource is not available for other reasons drivers
72return the EBUSY error code.
73
2212ff25 74The :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` ioctl is equivalent to :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` with one
5377d91f
MH
75exception: it does not change driver state. It can also be called at any
76time, never returning EBUSY. This function is provided to negotiate
77parameters, to learn about hardware limitations, without disabling I/O
78or possibly time consuming hardware preparations. Although strongly
79recommended drivers are not required to implement this ioctl.
80
2212ff25
MCC
81The format as returned by :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` must be identical to what
82:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` returns for the same input or output.
5377d91f
MH
83
84
85.. _v4l2-format:
86
87.. flat-table:: struct v4l2_format
88 :header-rows: 0
89 :stub-columns: 0
90
91
92 - .. row 1
93
94 - __u32
95
96 - ``type``
97
98 -
99 - Type of the data stream, see :ref:`v4l2-buf-type`.
100
101 - .. row 2
102
103 - union
104
105 - ``fmt``
106
107 - .. row 3
108
109 -
110 - struct :ref:`v4l2_pix_format <v4l2-pix-format>`
111
112 - ``pix``
113
114 - Definition of an image format, see :ref:`pixfmt`, used by video
115 capture and output devices.
116
117 - .. row 4
118
119 -
120 - struct :ref:`v4l2_pix_format_mplane <v4l2-pix-format-mplane>`
121
122 - ``pix_mp``
123
124 - Definition of an image format, see :ref:`pixfmt`, used by video
125 capture and output devices that support the
126 :ref:`multi-planar version of the API <planar-apis>`.
127
128 - .. row 5
129
130 -
131 - struct :ref:`v4l2_window <v4l2-window>`
132
133 - ``win``
134
135 - Definition of an overlaid image, see :ref:`overlay`, used by
136 video overlay devices.
137
138 - .. row 6
139
140 -
141 - struct :ref:`v4l2_vbi_format <v4l2-vbi-format>`
142
143 - ``vbi``
144
145 - Raw VBI capture or output parameters. This is discussed in more
146 detail in :ref:`raw-vbi`. Used by raw VBI capture and output
147 devices.
148
149 - .. row 7
150
151 -
152 - struct :ref:`v4l2_sliced_vbi_format <v4l2-sliced-vbi-format>`
153
154 - ``sliced``
155
156 - Sliced VBI capture or output parameters. See :ref:`sliced` for
157 details. Used by sliced VBI capture and output devices.
158
159 - .. row 8
160
161 -
162 - struct :ref:`v4l2_sdr_format <v4l2-sdr-format>`
163
164 - ``sdr``
165
166 - Definition of a data format, see :ref:`pixfmt`, used by SDR
167 capture and output devices.
168
169 - .. row 9
170
171 -
172 - __u8
173
174 - ``raw_data``\ [200]
175
176 - Place holder for future extensions.
177
178
179
180Return Value
181============
182
183On success 0 is returned, on error -1 and the ``errno`` variable is set
184appropriately. The generic error codes are described at the
185:ref:`Generic Error Codes <gen-errors>` chapter.
186
187EINVAL
188 The struct :ref:`v4l2_format <v4l2-format>` ``type`` field is
189 invalid or the requested buffer type not supported.
190
191
192.. ------------------------------------------------------------------------------
193.. This file was automatically converted from DocBook-XML with the dbxml
194.. library (https://github.com/return42/sphkerneldoc). The origin XML comes
195.. from the linux kernel, refer to:
196..
197.. * https://github.com/torvalds/linux/tree/master/Documentation/DocBook
198.. ------------------------------------------------------------------------------
This page took 0.034706 seconds and 5 git commands to generate.