<refentry id="vidioc-g-enc-index">
  <refmeta>
    <refentrytitle>ioctl VIDIOC_G_ENC_INDEX</refentrytitle>
    &manvol;
  </refmeta>

  <refnamediv>
    <refname>VIDIOC_G_ENC_INDEX</refname>
    <refpurpose>Get meta data about a compressed video stream</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_enc_idx *<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_ENC_INDEX</para>
	</listitem>
      </varlistentry>
      <varlistentry>
	<term><parameter>argp</parameter></term>
	<listitem>
	  <para></para>
	</listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>Description</title>

    <para>The <constant>VIDIOC_G_ENC_INDEX</constant> ioctl provides
meta data about a compressed video stream the same or another
application currently reads from the driver, which is useful for
random access into the stream without decoding it.</para>

    <para>To read the data applications must call
<constant>VIDIOC_G_ENC_INDEX</constant> with a pointer to a
&v4l2-enc-idx;. On success the driver fills the
<structfield>entry</structfield> array, stores the number of elements
written in the <structfield>entries</structfield> field, and
initializes the <structfield>entries_cap</structfield> field.</para>

    <para>Each element of the <structfield>entry</structfield> array
contains meta data about one picture. A
<constant>VIDIOC_G_ENC_INDEX</constant> call reads up to
<constant>V4L2_ENC_IDX_ENTRIES</constant> entries from a driver
buffer, which can hold up to <structfield>entries_cap</structfield>
entries. This number can be lower or higher than
<constant>V4L2_ENC_IDX_ENTRIES</constant>, but not zero. When the
application fails to read the meta data in time the oldest entries
will be lost. When the buffer is empty or no capturing/encoding is in
progress, <structfield>entries</structfield> will be zero.</para>

    <para>Currently this ioctl is only defined for MPEG-2 program
streams and video elementary streams.</para>

    <table pgwide="1" frame="none" id="v4l2-enc-idx">
      <title>struct <structname>v4l2_enc_idx</structname></title>
      <tgroup cols="3">
	&cs-str;
	<tbody valign="top">
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>entries</structfield></entry>
	    <entry>The number of entries the driver stored in the
<structfield>entry</structfield> array.</entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>entries_cap</structfield></entry>
	    <entry>The number of entries the driver can
buffer. Must be greater than zero.</entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>reserved</structfield>[4]</entry>
	    <entry spanname="hspan">Reserved for future extensions.
Drivers must set the array to zero.</entry>
	  </row>
	  <row>
	    <entry>&v4l2-enc-idx-entry;</entry>
	    <entry><structfield>entry</structfield>[<constant>V4L2_ENC_IDX_ENTRIES</constant>]</entry>
	    <entry>Meta data about a compressed video stream. Each
element of the array corresponds to one picture, sorted in ascending
order by their <structfield>offset</structfield>.</entry>
	  </row>
	</tbody>
      </tgroup>
    </table>

    <table pgwide="1" frame="none" id="v4l2-enc-idx-entry">
      <title>struct <structname>v4l2_enc_idx_entry</structname></title>
      <tgroup cols="3">
	&cs-str;
	<tbody valign="top">
	  <row>
	    <entry>__u64</entry>
	    <entry><structfield>offset</structfield></entry>
	    <entry>The offset in bytes from the beginning of the
compressed video stream to the beginning of this picture, that is a
<wordasword>PES packet header</wordasword> as defined in <xref
	    linkend="mpeg2part1" /> or a <wordasword>picture
header</wordasword> as defined in <xref linkend="mpeg2part2" />. When
the encoder is stopped, the driver resets the offset to zero.</entry>
	  </row>
	  <row>
	    <entry>__u64</entry>
	    <entry><structfield>pts</structfield></entry>
	    <entry>The 33 bit <wordasword>Presentation Time
Stamp</wordasword> of this picture as defined in <xref
		linkend="mpeg2part1" />.</entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>length</structfield></entry>
	    <entry>The length of this picture in bytes.</entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>flags</structfield></entry>
	    <entry>Flags containing the coding type of this picture, see <xref
		linkend="enc-idx-flags" />.</entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>reserved</structfield>[2]</entry>
	    <entry>Reserved for future extensions.
Drivers must set the array to zero.</entry>
	  </row>
	</tbody>
      </tgroup>
    </table>

    <table pgwide="1" frame="none" id="enc-idx-flags">
      <title>Index Entry Flags</title>
      <tgroup cols="3">
	&cs-def;
	<tbody valign="top">
	  <row>
	    <entry><constant>V4L2_ENC_IDX_FRAME_I</constant></entry>
	    <entry>0x00</entry>
	    <entry>This is an Intra-coded picture.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_ENC_IDX_FRAME_P</constant></entry>
	    <entry>0x01</entry>
	    <entry>This is a Predictive-coded picture.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_ENC_IDX_FRAME_B</constant></entry>
	    <entry>0x02</entry>
	    <entry>This is a Bidirectionally predictive-coded
picture.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_ENC_IDX_FRAME_MASK</constant></entry>
	    <entry>0x0F</entry>
	    <entry><wordasword>AND</wordasword> the flags field with
this mask to obtain the picture coding type.</entry>
	  </row>
       </tbody>
      </tgroup>
    </table>
  </refsect1>

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