vidioc-subdev-enum-frame-size.rst 3.6 KB
Newer Older
1 2
.. -*- coding: utf-8; mode: rst -*-

3
.. _VIDIOC_SUBDEV_ENUM_FRAME_SIZE:
4 5 6 7 8

***********************************
ioctl VIDIOC_SUBDEV_ENUM_FRAME_SIZE
***********************************

9
Name
10
====
11

12
VIDIOC_SUBDEV_ENUM_FRAME_SIZE - Enumerate media bus frame sizes
13

14 15

Synopsis
16 17
========

18
.. c:function:: int ioctl( int fd, int request, struct v4l2_subdev_frame_size_enum * argp )
19

20

21
Arguments
22 23 24 25 26 27 28 29 30 31 32
=========

``fd``
    File descriptor returned by :ref:`open() <func-open>`.

``request``
    VIDIOC_SUBDEV_ENUM_FRAME_SIZE

``argp``


33
Description
34 35 36 37 38
===========

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
39
:ref:`VIDIOC_SUBDEV_ENUM_MBUS_CODE`
40 41 42 43 44
ioctl.

To enumerate frame sizes applications initialize the ``pad``, ``which``
, ``code`` and ``index`` fields of the struct
:ref:`v4l2_subdev_mbus_code_enum <v4l2-subdev-mbus-code-enum>` and
45
call the :ref:`VIDIOC_SUBDEV_ENUM_FRAME_SIZE` ioctl with a pointer to the
46 47 48 49 50 51 52 53 54 55 56
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
57
:ref:`VIDIOC_SUBDEV_S_FMT <VIDIOC_SUBDEV_G_FMT>` ioctl to try the
58 59 60 61 62
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
63
:ref:`VIDIOC_SUBDEV_G_FMT` for more
64 65 66 67 68
information about try formats.


.. _v4l2-subdev-frame-size-enum:

69 70
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|

71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
.. 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
100
	  :ref:`v4l2-mbus-format`.
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140

    -  .. 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
141
	  :ref:`v4l2_subdev_format_whence <v4l2-subdev-format-whence>`.
142 143 144 145 146

    -  .. row 9

       -  __u32

147
       -  ``reserved``\ [8]
148 149

       -  Reserved for future extensions. Applications and drivers must set
150
	  the array to zero.
151 152


153
Return Value
154 155 156 157 158 159 160 161 162 163 164
============

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 <gen-errors>` chapter.

EINVAL
    The struct
    :ref:`v4l2_subdev_frame_size_enum <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.