<refentry id="vidioc-g-crop">
  <refmeta>
    <refentrytitle>ioctl VIDIOC_G_CROP, VIDIOC_S_CROP</refentrytitle>
    &manvol;
  </refmeta>

  <refnamediv>
    <refname>VIDIOC_G_CROP</refname>
    <refname>VIDIOC_S_CROP</refname>
    <refpurpose>Get or set the current cropping rectangle</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <funcsynopsis>
      <funcprototype>
	<funcdef>int <function>ioctl</function></funcdef>
	<paramdef>int <parameter>fd</parameter></paramdef>
	<paramdef>int <parameter>request</parameter></paramdef>
	<paramdef>struct v4l2_crop *<parameter>argp</parameter></paramdef>
      </funcprototype>
    </funcsynopsis>
    <funcsynopsis>
      <funcprototype>
	<funcdef>int <function>ioctl</function></funcdef>
	<paramdef>int <parameter>fd</parameter></paramdef>
	<paramdef>int <parameter>request</parameter></paramdef>
	<paramdef>const struct v4l2_crop *<parameter>argp</parameter></paramdef>
      </funcprototype>
    </funcsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Arguments</title>

    <variablelist>
      <varlistentry>
	<term><parameter>fd</parameter></term>
	<listitem>
	  <para>&fd;</para>
	</listitem>
      </varlistentry>
      <varlistentry>
	<term><parameter>request</parameter></term>
	<listitem>
	  <para>VIDIOC_G_CROP, VIDIOC_S_CROP</para>
	</listitem>
      </varlistentry>
      <varlistentry>
	<term><parameter>argp</parameter></term>
	<listitem>
	  <para></para>
	</listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>Description</title>

    <para>To query the cropping rectangle size and position
applications set the <structfield>type</structfield> field of a
<structname>v4l2_crop</structname> structure to the respective buffer
(stream) type and call the <constant>VIDIOC_G_CROP</constant> ioctl
with a pointer to this structure. The driver fills the rest of the
structure or returns the &EINVAL; if cropping is not supported.</para>

    <para>To change the cropping rectangle applications initialize the
<structfield>type</structfield> and &v4l2-rect; substructure named
<structfield>c</structfield> of a v4l2_crop structure and call the
<constant>VIDIOC_S_CROP</constant> ioctl with a pointer to this
structure.</para>

    <para>The driver first adjusts the requested dimensions against
hardware limits, &ie; the bounds given by the capture/output window,
and it rounds to the closest possible values of horizontal and
vertical offset, width and height. In particular the driver must round
the vertical offset of the cropping rectangle to frame lines modulo
two, such that the field order cannot be confused.</para>

    <para>Second the driver adjusts the image size (the opposite
rectangle of the scaling process, source or target depending on the
data direction) to the closest size possible while maintaining the
current horizontal and vertical scaling factor.</para>

    <para>Finally the driver programs the hardware with the actual
cropping and image parameters. <constant>VIDIOC_S_CROP</constant> is a
write-only ioctl, it does not return the actual parameters. To query
them applications must call <constant>VIDIOC_G_CROP</constant> and
&VIDIOC-G-FMT;. When the parameters are unsuitable the application may
modify the cropping or image parameters and repeat the cycle until
satisfactory parameters have been negotiated.</para>

    <para>When cropping is not supported then no parameters are
changed and <constant>VIDIOC_S_CROP</constant> returns the
&EINVAL;.</para>

    <table pgwide="1" frame="none" id="v4l2-crop">
      <title>struct <structname>v4l2_crop</structname></title>
      <tgroup cols="3">
	&cs-str;
	<tbody valign="top">
	  <row>
	    <entry>&v4l2-buf-type;</entry>
	    <entry><structfield>type</structfield></entry>
	    <entry>Type of the data stream, set by the application.
Only these types are valid here: <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>,
<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>,
<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver
defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant>
and higher.</entry>
	  </row>
	  <row>
	    <entry>&v4l2-rect;</entry>
	    <entry><structfield>c</structfield></entry>
	    <entry>Cropping rectangle. The same co-ordinate system as
for &v4l2-cropcap; <structfield>bounds</structfield> is used.</entry>
	  </row>
	</tbody>
      </tgroup>
    </table>
  </refsect1>

  <refsect1>
    &return-value;

    <variablelist>
      <varlistentry>
	<term><errorcode>EINVAL</errorcode></term>
	<listitem>
	  <para>Cropping is not supported.</para>
	</listitem>
      </varlistentry>
    </variablelist>
  </refsect1>
</refentry>

<!--
Local Variables:
mode: sgml
sgml-parent-document: "v4l2.sgml"
indent-tabs-mode: nil
End:
-->
