Merge remote-tracking branch 'xen-tip/linux-next'
[deliverable/linux.git] / Documentation / media / uapi / v4l / vidioc-subdev-g-crop.rst
CommitLineData
5377d91f
MH
1.. -*- coding: utf-8; mode: rst -*-
2
af4a4d0d 3.. _VIDIOC_SUBDEV_G_CROP:
5377d91f
MH
4
5************************************************
6ioctl VIDIOC_SUBDEV_G_CROP, VIDIOC_SUBDEV_S_CROP
7************************************************
8
15e7d615 9Name
586027ce 10====
5377d91f 11
586027ce 12VIDIOC_SUBDEV_G_CROP - VIDIOC_SUBDEV_S_CROP - Get or set the crop rectangle on a subdev pad
5377d91f 13
15e7d615
MCC
14
15Synopsis
5377d91f
MH
16========
17
41d80465
MCC
18.. c:function:: int ioctl( int fd, VIDIOC_SUBDEV_G_CROP, struct v4l2_subdev_crop *argp )
19 :name: VIDIOC_SUBDEV_G_CROP
5377d91f 20
41d80465
MCC
21.. c:function:: int ioctl( int fd, VIDIOC_SUBDEV_S_CROP, const struct v4l2_subdev_crop *argp )
22 :name: VIDIOC_SUBDEV_S_CROP
5377d91f 23
586027ce 24
15e7d615 25Arguments
5377d91f
MH
26=========
27
28``fd``
29 File descriptor returned by :ref:`open() <func-open>`.
30
5377d91f
MH
31``argp``
32
33
15e7d615 34Description
5377d91f
MH
35===========
36
706f8a99 37.. note::
5377d91f 38
7347081e 39 This is an :ref:`obsolete` interface and may be removed
5377d91f 40 in the future. It is superseded by
af4a4d0d 41 :ref:`the selection API <VIDIOC_SUBDEV_G_SELECTION>`.
5377d91f
MH
42
43To retrieve the current crop rectangle applications set the ``pad``
56683d7d 44field of a struct :c:type:`v4l2_subdev_crop` to the
5377d91f
MH
45desired pad number as reported by the media API and the ``which`` field
46to ``V4L2_SUBDEV_FORMAT_ACTIVE``. They then call the
47``VIDIOC_SUBDEV_G_CROP`` ioctl with a pointer to this structure. The
cdb4af0f 48driver fills the members of the ``rect`` field or returns ``EINVAL`` error
5377d91f
MH
49code if the input arguments are invalid, or if cropping is not supported
50on the given pad.
51
52To change the current crop rectangle applications set both the ``pad``
53and ``which`` fields and all members of the ``rect`` field. They then
54call the ``VIDIOC_SUBDEV_S_CROP`` ioctl with a pointer to this
55structure. The driver verifies the requested crop rectangle, adjusts it
56based on the hardware capabilities and configures the device. Upon
56683d7d 57return the struct :c:type:`v4l2_subdev_crop`
5377d91f
MH
58contains the current format as would be returned by a
59``VIDIOC_SUBDEV_G_CROP`` call.
60
61Applications can query the device capabilities by setting the ``which``
62to ``V4L2_SUBDEV_FORMAT_TRY``. When set, 'try' crop rectangles are not
63applied to the device by the driver, but are mangled exactly as active
64crop rectangles and stored in the sub-device file handle. Two
65applications querying the same sub-device would thus not interact with
66each other.
67
68Drivers must not return an error solely because the requested crop
69rectangle doesn't match the device capabilities. They must instead
70modify the rectangle to match what the hardware can provide. The
71modified format should be as close as possible to the original request.
72
73
56683d7d 74.. c:type:: v4l2_subdev_crop
5377d91f 75
5bd4bb78
MCC
76.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
77
5377d91f
MH
78.. flat-table:: struct v4l2_subdev_crop
79 :header-rows: 0
80 :stub-columns: 0
81 :widths: 1 1 2
82
83
84 - .. row 1
85
86 - __u32
87
88 - ``pad``
89
90 - Pad number as reported by the media framework.
91
92 - .. row 2
93
94 - __u32
95
96 - ``which``
97
98 - Crop rectangle to get or set, from enum
0579e6e3 99 :ref:`v4l2_subdev_format_whence <v4l2-subdev-format-whence>`.
5377d91f
MH
100
101 - .. row 3
102
e8be7e97 103 - struct :c:type:`v4l2_rect`
5377d91f
MH
104
105 - ``rect``
106
107 - Crop rectangle boundaries, in pixels.
108
109 - .. row 4
110
111 - __u32
112
8968da9b 113 - ``reserved``\ [8]
5377d91f
MH
114
115 - Reserved for future extensions. Applications and drivers must set
0579e6e3 116 the array to zero.
5377d91f
MH
117
118
15e7d615 119Return Value
5377d91f
MH
120============
121
122On success 0 is returned, on error -1 and the ``errno`` variable is set
123appropriately. The generic error codes are described at the
124:ref:`Generic Error Codes <gen-errors>` chapter.
125
126EBUSY
127 The crop rectangle can't be changed because the pad is currently
128 busy. This can be caused, for instance, by an active video stream on
129 the pad. The ioctl must not be retried without performing another
130 action to fix the problem first. Only returned by
131 ``VIDIOC_SUBDEV_S_CROP``
132
133EINVAL
56683d7d 134 The struct :c:type:`v4l2_subdev_crop` ``pad``
5377d91f
MH
135 references a non-existing pad, the ``which`` field references a
136 non-existing format, or cropping is not supported on the given
137 subdev pad.
This page took 0.05357 seconds and 5 git commands to generate.