.. -*- coding: utf-8; mode: rst -*- .. _VIDIOC_SUBDEV_ENUM_FRAME_SIZE: *********************************** ioctl VIDIOC_SUBDEV_ENUM_FRAME_SIZE *********************************** Name ==== VIDIOC_SUBDEV_ENUM_FRAME_SIZE - Enumerate media bus frame sizes Synopsis ======== .. c:function:: int ioctl( int fd, VIDIOC_SUBDEV_ENUM_FRAME_SIZE, struct v4l2_subdev_frame_size_enum * argp ) :name: VIDIOC_SUBDEV_ENUM_FRAME_SIZE Arguments ========= ``fd`` File descriptor returned by :ref:`open() `. ``argp`` Description =========== This ioctl allows applications to enumerate all frame sizes supported by a sub-device on the given pad for the given media bus format. Supported formats can be retrieved with the :ref:`VIDIOC_SUBDEV_ENUM_MBUS_CODE` ioctl. To enumerate frame sizes applications initialize the ``pad``, ``which`` , ``code`` and ``index`` fields of the struct :ref:`v4l2_subdev_mbus_code_enum ` and call the :ref:`VIDIOC_SUBDEV_ENUM_FRAME_SIZE` ioctl with a pointer to the structure. Drivers fill the minimum and maximum frame sizes or return an EINVAL error code if one of the input parameters is invalid. Sub-devices that only support discrete frame sizes (such as most sensors) will return one or more frame sizes with identical minimum and maximum values. Not all possible sizes in given [minimum, maximum] ranges need to be supported. For instance, a scaler that uses a fixed-point scaling ratio might not be able to produce every frame size between the minimum and maximum values. Applications must use the :ref:`VIDIOC_SUBDEV_S_FMT ` ioctl to try the sub-device for an exact supported frame size. Available frame sizes may depend on the current 'try' formats at other pads of the sub-device, as well as on the current active links and the current values of V4L2 controls. See :ref:`VIDIOC_SUBDEV_G_FMT` for more information about try formats. .. _v4l2-subdev-frame-size-enum: .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. flat-table:: struct v4l2_subdev_frame_size_enum :header-rows: 0 :stub-columns: 0 :widths: 1 1 2 - .. row 1 - __u32 - ``index`` - Number of the format in the enumeration, set by the application. - .. row 2 - __u32 - ``pad`` - Pad number as reported by the media controller API. - .. row 3 - __u32 - ``code`` - The media bus format code, as defined in :ref:`v4l2-mbus-format`. - .. row 4 - __u32 - ``min_width`` - Minimum frame width, in pixels. - .. row 5 - __u32 - ``max_width`` - Maximum frame width, in pixels. - .. row 6 - __u32 - ``min_height`` - Minimum frame height, in pixels. - .. row 7 - __u32 - ``max_height`` - Maximum frame height, in pixels. - .. row 8 - __u32 - ``which`` - Frame sizes to be enumerated, from enum :ref:`v4l2_subdev_format_whence `. - .. row 9 - __u32 - ``reserved``\ [8] - Reserved for future extensions. Applications and drivers must set the array to zero. Return Value ============ On success 0 is returned, on error -1 and the ``errno`` variable is set appropriately. The generic error codes are described at the :ref:`Generic Error Codes ` chapter. EINVAL The struct :ref:`v4l2_subdev_frame_size_enum ` ``pad`` references a non-existing pad, the ``code`` is invalid for the given pad or the ``index`` field is out of bounds.