1.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later 2 3.. _VIDIOC_SUBDEV_ENUM_FRAME_SIZE: 4 5*********************************** 6ioctl VIDIOC_SUBDEV_ENUM_FRAME_SIZE 7*********************************** 8 9Name 10==== 11 12VIDIOC_SUBDEV_ENUM_FRAME_SIZE - Enumerate media bus frame sizes 13 14 15Synopsis 16======== 17 18.. c:function:: int ioctl( int fd, VIDIOC_SUBDEV_ENUM_FRAME_SIZE, struct v4l2_subdev_frame_size_enum * argp ) 19 :name: VIDIOC_SUBDEV_ENUM_FRAME_SIZE 20 21 22Arguments 23========= 24 25``fd`` 26 File descriptor returned by :ref:`open() <func-open>`. 27 28``argp`` 29 Pointer to struct :c:type:`v4l2_subdev_frame_size_enum`. 30 31 32Description 33=========== 34 35This ioctl allows applications to enumerate all frame sizes supported by 36a sub-device on the given pad for the given media bus format. Supported 37formats can be retrieved with the 38:ref:`VIDIOC_SUBDEV_ENUM_MBUS_CODE` 39ioctl. 40 41To enumerate frame sizes applications initialize the ``pad``, ``which`` 42, ``code`` and ``index`` fields of the struct 43:c:type:`v4l2_subdev_mbus_code_enum` and 44call the :ref:`VIDIOC_SUBDEV_ENUM_FRAME_SIZE` ioctl with a pointer to the 45structure. Drivers fill the minimum and maximum frame sizes or return an 46EINVAL error code if one of the input parameters is invalid. 47 48Sub-devices that only support discrete frame sizes (such as most 49sensors) will return one or more frame sizes with identical minimum and 50maximum values. 51 52Not all possible sizes in given [minimum, maximum] ranges need to be 53supported. For instance, a scaler that uses a fixed-point scaling ratio 54might not be able to produce every frame size between the minimum and 55maximum values. Applications must use the 56:ref:`VIDIOC_SUBDEV_S_FMT <VIDIOC_SUBDEV_G_FMT>` ioctl to try the 57sub-device for an exact supported frame size. 58 59Available frame sizes may depend on the current 'try' formats at other 60pads of the sub-device, as well as on the current active links and the 61current values of V4L2 controls. See 62:ref:`VIDIOC_SUBDEV_G_FMT` for more 63information about try formats. 64 65 66.. c:type:: v4l2_subdev_frame_size_enum 67 68.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| 69 70.. flat-table:: struct v4l2_subdev_frame_size_enum 71 :header-rows: 0 72 :stub-columns: 0 73 :widths: 1 1 2 74 75 * - __u32 76 - ``index`` 77 - Number of the format in the enumeration, set by the application. 78 * - __u32 79 - ``pad`` 80 - Pad number as reported by the media controller API. 81 * - __u32 82 - ``code`` 83 - The media bus format code, as defined in 84 :ref:`v4l2-mbus-format`. 85 * - __u32 86 - ``min_width`` 87 - Minimum frame width, in pixels. 88 * - __u32 89 - ``max_width`` 90 - Maximum frame width, in pixels. 91 * - __u32 92 - ``min_height`` 93 - Minimum frame height, in pixels. 94 * - __u32 95 - ``max_height`` 96 - Maximum frame height, in pixels. 97 * - __u32 98 - ``which`` 99 - Frame sizes to be enumerated, from enum 100 :ref:`v4l2_subdev_format_whence <v4l2-subdev-format-whence>`. 101 * - __u32 102 - ``reserved``\ [8] 103 - Reserved for future extensions. Applications and drivers must set 104 the array to zero. 105 106 107Return Value 108============ 109 110On success 0 is returned, on error -1 and the ``errno`` variable is set 111appropriately. The generic error codes are described at the 112:ref:`Generic Error Codes <gen-errors>` chapter. 113 114EINVAL 115 The struct 116 :c:type:`v4l2_subdev_frame_size_enum` 117 ``pad`` references a non-existing pad, the ``code`` is invalid for 118 the given pad or the ``index`` field is out of bounds. 119