Merge remote-tracking branches 'asoc/topic/ux500' and 'asoc/topic/wm8962' into asoc...
[deliverable/linux.git] / Documentation / media / uapi / 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
15e7d615 9Name
586027ce 10====
5377d91f 11
586027ce 12VIDIOC_G_FMT - VIDIOC_S_FMT - VIDIOC_TRY_FMT - Get or set the data format, try a format
5377d91f 13
15e7d615
MCC
14
15Synopsis
5377d91f
MH
16========
17
b7e67f6c 18.. cpp:function:: int ioctl( int fd, int request, struct v4l2_format *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_G_FMT, VIDIOC_S_FMT, VIDIOC_TRY_FMT
29
30``argp``
31
32
15e7d615 33Description
5377d91f
MH
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
acf309a2 40struct :ref:`struct v4l2_format <v4l2-format>` to the respective buffer (stream)
5377d91f
MH
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
cdb4af0f 50an ``EINVAL`` error code.
5377d91f
MH
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
acf309a2 58a pointer to a :ref:`struct v4l2_format <v4l2-format>` structure the driver
5377d91f
MH
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 71progress or the resource is not available for other reasons drivers
cdb4af0f 72return the ``EBUSY`` error code.
5377d91f 73
2212ff25 74The :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` ioctl is equivalent to :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` with one
5377d91f 75exception: it does not change driver state. It can also be called at any
cdb4af0f 76time, never returning ``EBUSY``. This function is provided to negotiate
5377d91f
MH
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
0579e6e3 98 -
5377d91f
MH
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
0579e6e3 109 -
5377d91f
MH
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
0579e6e3 115 capture and output devices.
5377d91f
MH
116
117 - .. row 4
118
0579e6e3 119 -
5377d91f
MH
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
0579e6e3
MCC
125 capture and output devices that support the
126 :ref:`multi-planar version of the API <planar-apis>`.
5377d91f
MH
127
128 - .. row 5
129
0579e6e3 130 -
5377d91f
MH
131 - struct :ref:`v4l2_window <v4l2-window>`
132
133 - ``win``
134
135 - Definition of an overlaid image, see :ref:`overlay`, used by
0579e6e3 136 video overlay devices.
5377d91f
MH
137
138 - .. row 6
139
0579e6e3 140 -
5377d91f
MH
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
0579e6e3
MCC
146 detail in :ref:`raw-vbi`. Used by raw VBI capture and output
147 devices.
5377d91f
MH
148
149 - .. row 7
150
0579e6e3 151 -
5377d91f
MH
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
0579e6e3 157 details. Used by sliced VBI capture and output devices.
5377d91f
MH
158
159 - .. row 8
160
0579e6e3 161 -
5377d91f
MH
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
0579e6e3 167 capture and output devices.
5377d91f
MH
168
169 - .. row 9
170
0579e6e3 171 -
5377d91f
MH
172 - __u8
173
8968da9b 174 - ``raw_data``\ [200]
5377d91f
MH
175
176 - Place holder for future extensions.
177
178
15e7d615 179Return Value
5377d91f
MH
180============
181
182On success 0 is returned, on error -1 and the ``errno`` variable is set
183appropriately. The generic error codes are described at the
184:ref:`Generic Error Codes <gen-errors>` chapter.
185
186EINVAL
187 The struct :ref:`v4l2_format <v4l2-format>` ``type`` field is
188 invalid or the requested buffer type not supported.
This page took 0.055644 seconds and 5 git commands to generate.