blob: f21a69b554e18e90e419aa6ecfc02a6218a114fb [file] [log] [blame]
Markus Heiser5377d912016-06-30 15:18:56 +02001.. -*- coding: utf-8; mode: rst -*-
2
Mauro Carvalho Chehabaf4a4d02016-07-01 13:42:29 -03003.. _VIDIOC_CROPCAP:
Markus Heiser5377d912016-06-30 15:18:56 +02004
5********************
6ioctl VIDIOC_CROPCAP
7********************
8
Mauro Carvalho Chehab15e7d612016-07-05 15:14:35 -03009Name
Mauro Carvalho Chehab586027c2016-07-05 07:58:48 -030010====
Markus Heiser5377d912016-06-30 15:18:56 +020011
Mauro Carvalho Chehab586027c2016-07-05 07:58:48 -030012VIDIOC_CROPCAP - Information about the video cropping and scaling abilities
Markus Heiser5377d912016-06-30 15:18:56 +020013
Mauro Carvalho Chehab15e7d612016-07-05 15:14:35 -030014
15Synopsis
Markus Heiser5377d912016-06-30 15:18:56 +020016========
17
Mauro Carvalho Chehab41d80462016-08-19 16:53:38 -030018.. c:function:: int ioctl( int fd, VIDIOC_CROPCAP, struct v4l2_cropcap *argp )
19 :name: VIDIOC_CROPCAP
Markus Heiser5377d912016-06-30 15:18:56 +020020
Mauro Carvalho Chehab586027c2016-07-05 07:58:48 -030021
Mauro Carvalho Chehab15e7d612016-07-05 15:14:35 -030022Arguments
Markus Heiser5377d912016-06-30 15:18:56 +020023=========
24
25``fd``
26 File descriptor returned by :ref:`open() <func-open>`.
27
Markus Heiser5377d912016-06-30 15:18:56 +020028``argp``
29
30
Mauro Carvalho Chehab15e7d612016-07-05 15:14:35 -030031Description
Markus Heiser5377d912016-06-30 15:18:56 +020032===========
33
34Applications use this function to query the cropping limits, the pixel
35aspect of images and to calculate scale factors. They set the ``type``
36field of a v4l2_cropcap structure to the respective buffer (stream)
Mauro Carvalho Chehab2212ff22016-07-01 14:33:56 -030037type and call the :ref:`VIDIOC_CROPCAP` ioctl with a pointer to this
Markus Heiser5377d912016-06-30 15:18:56 +020038structure. Drivers fill the rest of the structure. The results are
39constant except when switching the video standard. Remember this switch
40can occur implicit when switching the video input or output.
41
42Do not use the multiplanar buffer types. Use
43``V4L2_BUF_TYPE_VIDEO_CAPTURE`` instead of
44``V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE`` and use
45``V4L2_BUF_TYPE_VIDEO_OUTPUT`` instead of
46``V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE``.
47
48This ioctl must be implemented for video capture or output devices that
49support cropping and/or scaling and/or have non-square pixels, and for
50overlay devices.
51
52
Mauro Carvalho Chehabe8be7e92016-08-29 17:37:59 -030053.. c:type:: v4l2_cropcap
Markus Heiser5377d912016-06-30 15:18:56 +020054
Mauro Carvalho Chehab5bd4bb72016-08-17 08:14:19 -030055.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
56
Markus Heiser5377d912016-06-30 15:18:56 +020057.. flat-table:: struct v4l2_cropcap
58 :header-rows: 0
59 :stub-columns: 0
60 :widths: 1 1 2
61
Laurent Pinchartc2b66ca2016-09-05 08:44:34 -030062 * - __u32
63 - ``type``
64 - Type of the data stream, set by the application. Only these types
65 are valid here: ``V4L2_BUF_TYPE_VIDEO_CAPTURE``,
66 ``V4L2_BUF_TYPE_VIDEO_OUTPUT`` and
67 ``V4L2_BUF_TYPE_VIDEO_OVERLAY``. See :c:type:`v4l2_buf_type`.
68 * - struct :ref:`v4l2_rect <v4l2-rect-crop>`
69 - ``bounds``
70 - Defines the window within capturing or output is possible, this
71 may exclude for example the horizontal and vertical blanking
72 areas. The cropping rectangle cannot exceed these limits. Width
73 and height are defined in pixels, the driver writer is free to
74 choose origin and units of the coordinate system in the analog
75 domain.
76 * - struct :ref:`v4l2_rect <v4l2-rect-crop>`
77 - ``defrect``
78 - Default cropping rectangle, it shall cover the "whole picture".
79 Assuming pixel aspect 1/1 this could be for example a 640 × 480
80 rectangle for NTSC, a 768 × 576 rectangle for PAL and SECAM
81 centered over the active picture area. The same co-ordinate system
82 as for ``bounds`` is used.
83 * - struct :c:type:`v4l2_fract`
84 - ``pixelaspect``
85 - This is the pixel aspect (y / x) when no scaling is applied, the
86 ratio of the actual sampling frequency and the frequency required
87 to get square pixels.
Markus Heiser5377d912016-06-30 15:18:56 +020088
Laurent Pinchartc2b66ca2016-09-05 08:44:34 -030089 When cropping coordinates refer to square pixels, the driver sets
90 ``pixelaspect`` to 1/1. Other common values are 54/59 for PAL and
91 SECAM, 11/10 for NTSC sampled according to [:ref:`itu601`].
Markus Heiser5377d912016-06-30 15:18:56 +020092
93
94
95.. _v4l2-rect-crop:
96
Mauro Carvalho Chehab5bd4bb72016-08-17 08:14:19 -030097.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
98
Markus Heiser5377d912016-06-30 15:18:56 +020099.. flat-table:: struct v4l2_rect
100 :header-rows: 0
101 :stub-columns: 0
102 :widths: 1 1 2
103
Laurent Pinchartc2b66ca2016-09-05 08:44:34 -0300104 * - __s32
105 - ``left``
106 - Horizontal offset of the top, left corner of the rectangle, in
107 pixels.
108 * - __s32
109 - ``top``
110 - Vertical offset of the top, left corner of the rectangle, in
111 pixels.
112 * - __u32
113 - ``width``
114 - Width of the rectangle, in pixels.
115 * - __u32
116 - ``height``
117 - Height of the rectangle, in pixels.
Markus Heiser5377d912016-06-30 15:18:56 +0200118
119
Mauro Carvalho Chehab15e7d612016-07-05 15:14:35 -0300120Return Value
Markus Heiser5377d912016-06-30 15:18:56 +0200121============
122
123On success 0 is returned, on error -1 and the ``errno`` variable is set
124appropriately. The generic error codes are described at the
125:ref:`Generic Error Codes <gen-errors>` chapter.
126
127EINVAL
Mauro Carvalho Chehabe8be7e92016-08-29 17:37:59 -0300128 The struct :c:type:`v4l2_cropcap` ``type`` is
Markus Heiser5377d912016-06-30 15:18:56 +0200129 invalid.
Hans Verkuil3f8d56b2016-07-20 09:39:42 -0300130
131ENODATA
132 Cropping is not supported for this input or output.