.. -*- coding: utf-8; mode: rst -*-

******************************
Multi-planar format structures
******************************

The :ref:`struct v4l2_plane_pix_format <v4l2-plane-pix-format>` structures define size
and layout for each of the planes in a multi-planar format. The
:ref:`struct v4l2_pix_format_mplane <v4l2-pix-format-mplane>` structure contains
information common to all planes (such as image width and height) and an
array of :ref:`struct v4l2_plane_pix_format <v4l2-plane-pix-format>` structures,
describing all planes of that format.


.. _v4l2-plane-pix-format:

.. flat-table:: struct v4l2_plane_pix_format
    :header-rows:  0
    :stub-columns: 0
    :widths:       1 1 2


    -  .. row 1

       -  __u32

       -  ``sizeimage``

       -  Maximum size in bytes required for image data in this plane.

    -  .. row 2

       -  __u32

       -  ``bytesperline``

       -  Distance in bytes between the leftmost pixels in two adjacent
	  lines. See struct :ref:`v4l2_pix_format <v4l2-pix-format>`.

    -  .. row 3

       -  __u16

       -  ``reserved[6]``

       -  Reserved for future extensions. Should be zeroed by drivers and
	  applications.



.. _v4l2-pix-format-mplane:

.. flat-table:: struct v4l2_pix_format_mplane
    :header-rows:  0
    :stub-columns: 0
    :widths:       1 1 2


    -  .. row 1

       -  __u32

       -  ``width``

       -  Image width in pixels. See struct
	  :ref:`v4l2_pix_format <v4l2-pix-format>`.

    -  .. row 2

       -  __u32

       -  ``height``

       -  Image height in pixels. See struct
	  :ref:`v4l2_pix_format <v4l2-pix-format>`.

    -  .. row 3

       -  __u32

       -  ``pixelformat``

       -  The pixel format. Both single- and multi-planar four character
	  codes can be used.

    -  .. row 4

       -  enum :ref:`v4l2_field <v4l2-field>`

       -  ``field``

       -  See struct :ref:`v4l2_pix_format <v4l2-pix-format>`.

    -  .. row 5

       -  enum :ref:`v4l2_colorspace <v4l2-colorspace>`

       -  ``colorspace``

       -  See struct :ref:`v4l2_pix_format <v4l2-pix-format>`.

    -  .. row 6

       -  struct :ref:`v4l2_plane_pix_format <v4l2-plane-pix-format>`

       -  ``plane_fmt[VIDEO_MAX_PLANES]``

       -  An array of structures describing format of each plane this pixel
	  format consists of. The number of valid entries in this array has
	  to be put in the ``num_planes`` field.

    -  .. row 7

       -  __u8

       -  ``num_planes``

       -  Number of planes (i.e. separate memory buffers) for this format
	  and the number of valid entries in the ``plane_fmt`` array.

    -  .. row 8

       -  __u8

       -  ``flags``

       -  Flags set by the application or driver, see :ref:`format-flags`.

    -  .. row 9

       -  enum :ref:`v4l2_ycbcr_encoding <v4l2-ycbcr-encoding>`

       -  ``ycbcr_enc``

       -  This information supplements the ``colorspace`` and must be set by
	  the driver for capture streams and by the application for output
	  streams, see :ref:`colorspaces`.

    -  .. row 10

       -  enum :ref:`v4l2_quantization <v4l2-quantization>`

       -  ``quantization``

       -  This information supplements the ``colorspace`` and must be set by
	  the driver for capture streams and by the application for output
	  streams, see :ref:`colorspaces`.

    -  .. row 11

       -  enum :ref:`v4l2_xfer_func <v4l2-xfer-func>`

       -  ``xfer_func``

       -  This information supplements the ``colorspace`` and must be set by
	  the driver for capture streams and by the application for output
	  streams, see :ref:`colorspaces`.

    -  .. row 12

       -  __u8

       -  ``reserved[7]``

       -  Reserved for future extensions. Should be zeroed by drivers and
	  applications.
