<refentry id="vidioc-g-jpegcomp">
  <refmeta>
    <refentrytitle>ioctl VIDIOC_G_JPEGCOMP, VIDIOC_S_JPEGCOMP</refentrytitle>
    &manvol;
  </refmeta>

  <refnamediv>
    <refname>VIDIOC_G_JPEGCOMP</refname>
    <refname>VIDIOC_S_JPEGCOMP</refname>
    <refpurpose></refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <funcsynopsis>
      <funcprototype>
	<funcdef>int <function>ioctl</function></funcdef>
	<paramdef>int <parameter>fd</parameter></paramdef>
	<paramdef>int <parameter>request</parameter></paramdef>
	<paramdef>v4l2_jpegcompression *<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 v4l2_jpegcompression *<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_JPEGCOMP, VIDIOC_S_JPEGCOMP</para>
	</listitem>
      </varlistentry>
      <varlistentry>
	<term><parameter>argp</parameter></term>
	<listitem>
	  <para></para>
	</listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>Description</title>

    <para>These ioctls are <emphasis role="bold">deprecated</emphasis>.
    New drivers and applications should use <link linkend="jpeg-controls">
    JPEG class controls</link> for image quality and JPEG markers control.
    </para>

    <para>[to do]</para>

    <para>Ronald Bultje elaborates:</para>

    <!-- See video4linux-list@redhat.com on 16 Oct 2002, subject
"Re: [V4L] Re: v4l2 api / Zoran v4l2_jpegcompression" -->

    <para>APP is some application-specific information. The
application can set it itself, and it'll be stored in the JPEG-encoded
fields (eg; interlacing information for in an AVI or so). COM is the
same, but it's comments, like 'encoded by me' or so.</para>

    <para>jpeg_markers describes whether the huffman tables,
quantization tables and the restart interval information (all
JPEG-specific stuff) should be stored in the JPEG-encoded fields.
These define how the JPEG field is encoded. If you omit them,
applications assume you've used standard encoding. You usually do want
to add them.</para>

    <!-- NB VIDIOC_S_JPEGCOMP is w/o. -->

    <table pgwide="1" frame="none" id="v4l2-jpegcompression">
      <title>struct <structname>v4l2_jpegcompression</structname></title>
      <tgroup cols="3">
	&cs-str;
	<tbody valign="top">
	  <row>
	    <entry>int</entry>
	    <entry><structfield>quality</structfield></entry>
	    <entry>Deprecated. If <link linkend="jpeg-quality-control"><constant>
	    V4L2_CID_JPEG_IMAGE_QUALITY</constant></link> control is exposed by
	    a driver applications should use it instead and ignore this field.
	    </entry>
	  </row>
	  <row>
	    <entry>int</entry>
	    <entry><structfield>APPn</structfield></entry>
	    <entry></entry>
	  </row>
	  <row>
	    <entry>int</entry>
	    <entry><structfield>APP_len</structfield></entry>
	    <entry></entry>
	  </row>
	  <row>
	    <entry>char</entry>
	    <entry><structfield>APP_data</structfield>[60]</entry>
	    <entry></entry>
	  </row>
	  <row>
	    <entry>int</entry>
	    <entry><structfield>COM_len</structfield></entry>
	    <entry></entry>
	  </row>
	  <row>
	    <entry>char</entry>
	    <entry><structfield>COM_data</structfield>[60]</entry>
	    <entry></entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>jpeg_markers</structfield></entry>
	    <entry>See <xref linkend="jpeg-markers"/>. Deprecated.
	    If <link linkend="jpeg-active-marker-control"><constant>
	    V4L2_CID_JPEG_ACTIVE_MARKER</constant></link> control
	    is exposed by a driver applications should use it instead
	    and ignore this field.</entry>
	  </row>
	</tbody>
      </tgroup>
    </table>

    <table pgwide="1" frame="none" id="jpeg-markers">
      <title>JPEG Markers Flags</title>
      <tgroup cols="3">
	&cs-def;
	<tbody valign="top">
	  <row>
	    <entry><constant>V4L2_JPEG_MARKER_DHT</constant></entry>
	    <entry>(1&lt;&lt;3)</entry>
	    <entry>Define Huffman Tables</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_JPEG_MARKER_DQT</constant></entry>
	    <entry>(1&lt;&lt;4)</entry>
	    <entry>Define Quantization Tables</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_JPEG_MARKER_DRI</constant></entry>
	    <entry>(1&lt;&lt;5)</entry>
	    <entry>Define Restart Interval</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_JPEG_MARKER_COM</constant></entry>
	    <entry>(1&lt;&lt;6)</entry>
	    <entry>Comment segment</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_JPEG_MARKER_APP</constant></entry>
	    <entry>(1&lt;&lt;7)</entry>
	    <entry>App segment, driver will always use APP0</entry>
	  </row>
	</tbody>
      </tgroup>
    </table>
  </refsect1>

  <refsect1>
    &return-value;
  </refsect1>
</refentry>
