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