]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blame - Documentation/media/uapi/v4l/vidioc-g-fmt.rst
Merge tag 'powerpc-4.13-8' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc...
[mirror_ubuntu-artful-kernel.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
fc78c7c7 43struct :c:type:`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
e8be7e97
MCC
50:c:type:`v4l2_pix_format` ``pix`` or the struct
51:c:type:`v4l2_pix_format_mplane` ``pix_mp``
5377d91f 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
fc78c7c7 61a pointer to a struct :c:type:`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
e8be7e97 88.. c:type:: v4l2_format
5377d91f 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
c2b66caf
LP
96 * - __u32
97 - ``type``
98 -
99 - Type of the data stream, see :c:type:`v4l2_buf_type`.
100 * - union
101 - ``fmt``
102 * -
103 - struct :c:type:`v4l2_pix_format`
104 - ``pix``
105 - Definition of an image format, see :ref:`pixfmt`, used by video
106 capture and output devices.
107 * -
108 - struct :c:type:`v4l2_pix_format_mplane`
109 - ``pix_mp``
110 - Definition of an image format, see :ref:`pixfmt`, used by video
111 capture and output devices that support the
112 :ref:`multi-planar version of the API <planar-apis>`.
113 * -
114 - struct :c:type:`v4l2_window`
115 - ``win``
116 - Definition of an overlaid image, see :ref:`overlay`, used by
117 video overlay devices.
118 * -
119 - struct :c:type:`v4l2_vbi_format`
120 - ``vbi``
121 - Raw VBI capture or output parameters. This is discussed in more
122 detail in :ref:`raw-vbi`. Used by raw VBI capture and output
123 devices.
124 * -
125 - struct :c:type:`v4l2_sliced_vbi_format`
126 - ``sliced``
127 - Sliced VBI capture or output parameters. See :ref:`sliced` for
128 details. Used by sliced VBI capture and output devices.
129 * -
130 - struct :c:type:`v4l2_sdr_format`
131 - ``sdr``
132 - Definition of a data format, see :ref:`pixfmt`, used by SDR
133 capture and output devices.
134 * -
135 - __u8
136 - ``raw_data``\ [200]
137 - Place holder for future extensions.
5377d91f
MH
138
139
15e7d615 140Return Value
5377d91f
MH
141============
142
143On success 0 is returned, on error -1 and the ``errno`` variable is set
144appropriately. The generic error codes are described at the
145:ref:`Generic Error Codes <gen-errors>` chapter.
146
147EINVAL
e8be7e97 148 The struct :c:type:`v4l2_format` ``type`` field is
5377d91f 149 invalid or the requested buffer type not supported.
4ee92289
SA
150
151EBUSY
152 The device is busy and cannot change the format. This could be
153 because or the device is streaming or buffers are allocated or
154 queued to the driver. Relevant for :ref:`VIDIOC_S_FMT
155 <VIDIOC_G_FMT>` only.