<!-- ############ chapter ############# -->

<chapter id="chapter-building-types">
  <title>Types and Properties</title>
  <para>
    There is a very large set of possible types that may be used to pass data
    between elements. Indeed, each new element that is defined may use a new
    data format (though unless at least one other element recognises that
    format, it will be most likely be useless since nothing will be able to
    link with it).
  </para>
  <para>
    In order for types to be useful, and for systems like autopluggers to
    work, it is necessary that all elements agree on the type definitions,
    and which properties are required for each type. The &GStreamer; framework
    itself simply provides the ability to define types and parameters, but
    does not fix the meaning of types and parameters, and does not enforce
    standards on the creation of new types. This is a matter for a policy to
    decide, not technical systems to enforce.
  </para>
  <para>
    For now, the policy is simple:
    <itemizedlist>
      <listitem>
        <para>
          Do not create a new type if you could use one which already exists.
        </para>
      </listitem>
      <listitem>
        <para>
          If creating a new type, discuss it first with the other &GStreamer;
          developers, on at least one of: IRC, mailing lists.
        </para>
      </listitem>
      <listitem>
        <para>
          Try to ensure that the name for a new format is as unlikely to
          conflict with anything else created already, and is not a more
          generalised name than it should be. For example: "audio/compressed"
          would be too generalised a name to represent audio data compressed
          with an mp3 codec. Instead "audio/mp3" might be an appropriate name,
          or "audio/compressed" could exist and have a property indicating the
          type of compression used.
        </para>
      </listitem>
      <listitem>
        <para>
          Ensure that, when you do create a new type, you specify it clearly,
          and get it added to the list of known types so that other developers
          can use the type correctly when writing their elements.
        </para>
      </listitem>
    </itemizedlist>
  </para>

  <!-- ############ sect1 ############# -->

  <sect1 id="section-types-test" xreflabel="Building a Simple Format for Testing">
    <title>Building a Simple Format for Testing</title>
    <para>
      If you need a new format that has not yet been defined in our <xref
      linkend="section-types-definitions"/>, you will want to have some general
      guidelines on media type naming, properties and such. A media type would
      ideally be equivalent to the Mime-type defined by IANA; else, it should
      be in the form type/x-name, where type is the sort of data this media type
      handles (audio, video, ...) and name should be something specific for
      this specific type.  Audio and video media types should try to support the
      general audio/video properties (see the list), and can use their own
      properties, too. To get an idea of what properties we think are useful,
      see (again) the list.
    </para>
    <para>
      Take your time to find the right set of properties for your type. There
      is no reason to hurry. Also, experimenting with this is generally a good
      idea. Experience learns that theoretically thought-out types are good,
      but they still need practical use to assure that they serve their needs.
      Make sure that your property names do not clash with similar properties
      used in other types. If they match, make sure they mean the same thing;
      properties with different types but the same names are
      <emphasis>not</emphasis> allowed.
    </para>
  </sect1>

  <!-- ############ sect1 ############# -->

  <sect1 id="section-types-typefind" xreflabel="Typefind Functions and Autoplugging">
    <title>Typefind Functions and Autoplugging</title>
    <para>
      With only <emphasis>defining</emphasis> the types, we're not yet there.
      In order for a random data file to be recognized and played back as
      such, we need a way of recognizing their type out of the blue. For this
      purpose, <quote>typefinding</quote> was introduced. Typefinding is the
      process of detecting the type of a data stream. Typefinding consists of
      two separate parts: first, there's an unlimited number of functions
      that we call <emphasis>typefind functions</emphasis>, which are each
      able to recognize one or more types from an input stream. Then,
      secondly, there's a small engine which registers and calls each of
      those functions. This is the typefind core. On top of this typefind
      core, you would normally write an autoplugger, which is able to use
      this type detection system to dynamically build a pipeline around an
      input stream. Here, we will focus only on typefind functions.
    </para>
    <para>
      A typefind function usually lives in
      <filename>gst-plugins-base/gst/typefind/gsttypefindfunctions.c</filename>,
      unless there's a good reason (like library dependencies) to put it
      elsewhere. The reason for this centralization is to reduce the
      number of plugins that need to be loaded in order to detect a stream's
      type. Below is an example that will recognize AVI files, which start
      with a <quote>RIFF</quote> tag, then the size of the file and then an
      <quote>AVI </quote> tag:
    </para>
    <programlisting>
static void
gst_my_typefind_function (GstTypeFind *tf,
			  gpointer     data)
{
  guint8 *data = gst_type_find_peek (tf, 0, 12);

  if (data &amp;&amp;
      GUINT32_FROM_LE (&amp;((guint32 *) data)[0]) == GST_MAKE_FOURCC ('R','I','F','F') &amp;&amp;
      GUINT32_FROM_LE (&amp;((guint32 *) data)[2]) == GST_MAKE_FOURCC ('A','V','I',' ')) {
    gst_type_find_suggest (tf, GST_TYPE_FIND_MAXIMUM,
			   gst_caps_new_simple ("video/x-msvideo", NULL));
  }
}

static gboolean
plugin_init (GstPlugin *plugin)
{
  if (!gst_type_find_register (plugin, "", GST_RANK_PRIMARY,
			       gst_my_typefind_function, "avi",
			       gst_caps_new_simple ("video/x-msvideo",
						    NULL), NULL))
    return FALSE;
}
    </programlisting>
    <para>
      Note that
      <filename>gst-plugins/gst/typefind/gsttypefindfunctions.c</filename>
      has some simplification macros to decrease the amount of code. Make
      good use of those if you want to submit typefinding patches with new
      typefind functions.
    </para>
    <para>
      Autoplugging has been discussed in great detail in the Application
      Development Manual.
    </para>
  </sect1>

  <!-- ############ sect1 ############# -->

  <sect1 id="section-types-definitions" xreflabel="List of Defined Types">
    <title>List of Defined Types</title>
      <para>
        Below is a list of all the defined types in &GStreamer;. They are split
        up in separate tables for audio, video, container, subtitle and other
        types, for the sake of readability. Below each table might follow a
        list of notes that apply to that table. In the definition of each type,
        we try to follow the types and rules as defined by <ulink type="http"
        url="http://www.iana.org/assignments/media-types">
        IANA</ulink> for as far as possible.
      </para>
      <para>
        Jump directly to a specific table:
	<itemizedlist>
          <listitem>
            <para><xref linkend="table-audio-types"/></para>
          </listitem>
          <listitem>
            <para><xref linkend="table-video-types"/></para>
          </listitem>
          <listitem>
            <para><xref linkend="table-container-types"/></para>
          </listitem>
          <listitem>
            <para><xref linkend="table-subtitle-types"/></para>
          </listitem>
          <listitem>
            <para><xref linkend="table-other-types"/></para>
          </listitem>
        </itemizedlist>
      </para>
      <para>
        Note that many of the properties are not <emphasis>required</emphasis>,
        but rather <emphasis>optional</emphasis> properties. This means that
        most of these properties can be extracted from the container header,
        but that - in case the container header does not provide these - they
        can also be extracted by parsing the stream header or the stream
        content. The policy is that your element should provide the data that
        it knows about by only parsing its own content, not another element's
        content. Example: the AVI header provides samplerate of the contained
        audio stream in the header. MPEG system streams don't. This means that
        an AVI stream demuxer would provide samplerate as a property for MPEG
        audio streams, whereas an MPEG demuxer would not. A decoder needing
        this data would require a stream parser in between two extract this
        from the header or calculate it from the stream.
      </para>

      <table frame="all" id="table-audio-types" xreflabel="Table of Audio Types">
        <title>Table of Audio Types</title>
        <tgroup cols="6" align="left" colsep="1" rowsep="1">
        <colspec colnum="1" colname="cola1" colwidth="1*"/>
        <colspec colnum="6" colname="cola6" colwidth="6*"/>
        <spanspec spanname="fullwidth" namest="cola1" nameend="cola6"/>

        <thead>
          <row>
            <entry>Media Type</entry>
            <entry>Description</entry>
            <entry>Property</entry>
            <entry>Property Type</entry>
            <entry>Property Values</entry>
            <entry>Property Description</entry>
          </row>
        </thead>

        <tbody valign="top">

          <!-- ############ subtitle ############# -->

          <row>
            <entry spanname="fullwidth">
              <emphasis>All audio types.</emphasis>
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry morerows="4">audio/*</entry>
            <entry morerows="4">
              <emphasis>All audio types</emphasis>
            </entry>
            <entry>rate</entry>
            <entry>integer</entry>
            <entry>greater than 0</entry>
            <entry>
              The sample rate of the data, in samples (per channel) per second.
            </entry>
          </row>
          <row>
            <entry>channels</entry>
            <entry>integer</entry>
            <entry>greater than 0</entry>
            <entry>
              The number of channels of audio data.
            </entry>
          </row>
          <row>
            <entry>channel-mask</entry>
            <entry>bitmask</entry>
            <entry></entry>
            <entry>
              Channel positions present. See <quote>GstAudioChannelPosition</quote>.
              0 means unpositioned.
            </entry>
          </row>
          <row>
            <entry>format</entry>
            <entry>string</entry>
            <entry>
              S8 U8 S16LE S16BE U16LE U16BE S24_32LE S24_32BE U24_32LE U24_32BE S32LE S32BE U32LE U32BE
              S24LE S24BE U24LE U24BE S20LE S20BE U20LE U20BE S18LE S18BE U18LE U18BE F32LE F32BE F64LE F64BE
            </entry>
            <entry>
              The format of the sample data.
            </entry>
          </row>
          <row>
            <entry>layout</entry>
            <entry>string</entry>
            <entry>"interleaved" or "non-interleaved"</entry>
            <entry>
              Layout of channels within a buffer.
            </entry>
          </row>

          <!-- ############ subtitle ############# -->

          <row>
            <entry spanname="fullwidth">
              <emphasis>All raw audio types.</emphasis>
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>audio/x-raw</entry>
            <entry>
              Unstructured and uncompressed raw audio data.
            </entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              All properties (except channel-mask, in the mono and stereo cases) are mandatory.
            </entry>
          </row>

          <!-- ############ subtitle ############# -->

          <row>
            <entry spanname="fullwidth">
              <emphasis>All encoded audio types.</emphasis>
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>audio/x-ac3</entry>
            <entry>AC-3 or A52 audio streams.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry morerows="1">audio/x-adpcm</entry>
            <entry morerows="1">ADPCM Audio streams.</entry>
            <entry>layout</entry>
            <entry>string</entry>
            <entry>
              <quote>quicktime</quote>, <quote>dvi</quote>,
              <quote>microsoft</quote> or <quote>4xm</quote>.
            </entry>
            <entry>
              The layout defines the packing of the samples in the stream. In
              ADPCM, most formats store multiple samples per channel together.
              This number of samples differs per format, hence the different
              layouts. On the long term, we probably want this variable to die
              and use something more descriptive, but this will do for now.
            </entry>
          </row>
          <row>
            <entry>block_align</entry>
            <entry>integer</entry>
            <entry>
              Any
            </entry>
            <entry>
              Chunk buffer size.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>audio/x-cinepak</entry>
            <entry>Audio as provided in a Cinepak (Quicktime) stream.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>audio/x-dv</entry>
            <entry>Audio as provided in a Digital Video stream.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>audio/x-flac</entry>
            <entry>Free Lossless Audio codec (FLAC).</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>audio/x-gsm</entry>
            <entry>Data encoded by the GSM codec.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>audio/x-alaw</entry>
            <entry>A-Law Audio.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>audio/x-mulaw</entry>
            <entry>Mu-Law Audio.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>audio/x-mace</entry>
            <entry>MACE Audio (used in Quicktime).</entry>
            <entry>maceversion</entry>
            <entry>integer</entry>
            <entry>3 or 6</entry>
            <entry>
              The version of the MACE audio codec used to encode the stream.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry morerows="3">audio/mpeg</entry>
            <entry morerows="3">
              Audio data compressed using the MPEG audio encoding scheme.
            </entry>
            <entry>mpegversion</entry>
            <entry>integer</entry>
            <entry>1, 2 or 4</entry>
            <entry>
              The MPEG-version used for encoding the data. The value 1 refers
              to MPEG-1, -2 and -2.5 layer 1, 2 or 3. The values 2 and 4 refer
              to the MPEG-AAC audio encoding schemes.
            </entry>
          </row>
          <row>
            <entry>framed</entry>
            <entry>boolean</entry>
            <entry>0 or 1</entry>
            <entry>
              A true value indicates that each buffer contains exactly one
              frame. A false value indicates that frames and buffers do not
              necessarily match up.
            </entry>
          </row>
          <row>
            <entry>layer</entry>
            <entry>integer</entry>
            <entry>1, 2, or 3</entry>
            <entry>
              The compression scheme layer used to compress the data
              <emphasis>(only if mpegversion=1)</emphasis>.
            </entry>
          </row>
          <row>
            <entry>bitrate</entry>
            <entry>integer</entry>
            <entry>greater than 0</entry>
            <entry>
              The bitrate, in bits per second. For VBR (variable bitrate)
              MPEG data, this is the average bitrate.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>audio/x-qdm2</entry>
            <entry>Data encoded by the QDM version 2 codec.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>audio/x-pn-realaudio</entry>
            <entry>Realmedia Audio data.</entry>
            <entry>raversion</entry>
            <entry>integer</entry>
            <entry>1 or 2</entry>
            <entry>
              The version of the Real Audio codec used to encode the stream.
              1 stands for a 14k4 stream, 2 stands for a 28k8 stream.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>audio/x-speex</entry>
            <entry>Data encoded by the Speex audio codec</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>audio/x-vorbis</entry>
            <entry>Vorbis audio data</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>audio/x-wma</entry>
            <entry>Windows Media Audio</entry>
            <entry>wmaversion</entry>
            <entry>integer</entry>
            <entry>1,2 or 3</entry>
            <entry>
              The version of the WMA codec used to encode the stream.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>audio/x-paris</entry>
            <entry>Ensoniq PARIS audio</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>audio/x-svx</entry>
            <entry>Amiga IFF / SVX8 / SV16 audio</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>audio/x-nist</entry>
            <entry>Sphere NIST audio</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>audio/x-voc</entry>
            <entry>Sound Blaster VOC audio</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>audio/x-ircam</entry>
            <entry>Berkeley/IRCAM/CARL audio</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>audio/x-w64</entry>
            <entry>Sonic Foundry's 64 bit RIFF/WAV</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

        </tbody>
        </tgroup>
      </table>

      <table frame="all" id="table-video-types" xreflabel="Table of Video Types">
        <title>Table of Video Types</title>
        <tgroup cols="6" align="left" colsep="1" rowsep="1">
        <colspec colnum="1" colname="colv1" colwidth="1*"/>
        <colspec colnum="6" colname="colv6" colwidth="6*"/>
        <spanspec spanname="fullwidth" namest="colv1" nameend="colv6"/>

        <thead>
          <row>
            <entry>Media Type</entry>
            <entry>Description</entry>
            <entry>Property</entry>
            <entry>Property Type</entry>
            <entry>Property Values</entry>
            <entry>Property Description</entry>
          </row>
        </thead>

        <tbody valign="top">

          <!-- ############ subtitle ############# -->

          <row>
            <entry spanname="fullwidth">
              <emphasis>All video types.</emphasis>
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry morerows="9">video/*</entry>
            <entry morerows="9">
              <emphasis>All video types</emphasis>
            </entry>
            <entry>width</entry>
            <entry>integer</entry>
            <entry>greater than 0</entry>
            <entry>The width of the video image</entry>
          </row>
          <row>
            <entry>height</entry>
            <entry>integer</entry>
            <entry>greater than 0</entry>
            <entry>The height of the video image</entry>
          </row>
          <row>
            <entry>framerate</entry>
            <entry>fraction</entry>
            <entry>greater or equal 0; default 0/1</entry>
            <entry>
              The (average) framerate in frames per second. Note that this
              property does not guarantee in <emphasis>any</emphasis> way that
              it will actually come close to this value. If you need a fixed
              framerate, please use an element that provides that (such as
              <quote>videorate</quote>). 0/1 means a variable framerate.
            </entry>
          </row>
          <row>
            <entry>max-framerate</entry>
            <entry>fraction</entry>
            <entry>greater or equal 0; default as framerate</entry>
            <entry>
              For variable framerates, the maximum framerate that is expected.
              Only valid when framerate is 0/1.
            </entry>
          </row>
          <row>
            <entry>views</entry>
            <entry>integer</entry>
            <entry>greater than 0; default 1</entry>
            <entry>
              The number of views for multiview video. Each buffer contains
              multiple <quote>GstVideoMeta</quote> buffers that describe each view. Use the
              frame ID to get access to the different views.
            </entry>
          </row>
          <row>
            <entry>interlace-mode</entry>
            <entry>string</entry>
            <entry>progressive, interleaved, mixed, fields; default progressive</entry>
            <entry>
              The interlace mode. Extra buffer flags describe the frame and fields.
            </entry>
          </row>
          <row>
            <entry>chroma-site</entry>
            <entry>string</entry>
            <entry>jpeg, mpeg2, dv; default UNKNOWN</entry>
            <entry>
              The chroma siting of the video frames.
            </entry>
          </row>
          <row>
            <entry>colorimetry</entry>
            <entry>string</entry>
            <entry>bt601, bt709, smpte240m; default UNKNOWN</entry>
            <entry>
              The colorimetry of the video frames.
            </entry>
          </row>
          <row>
            <entry>pixel-aspect-ratio</entry>
            <entry>fraction</entry>
            <entry>greater than 0; default 1/1</entry>
            <entry>
              The pixel aspect ratio of the video.
            </entry>
          </row>
          <row>
            <entry>format</entry>
            <entry>string</entry>
            <entry>
              I420 YV12 YUY2 UYVY AYUV RGBx BGRx xRGB xBGR RGBA BGRA ARGB ABGR RGB BGR Y41B Y42B
              YVYU Y444 v210 v216 NV12 NV21 GRAY8 GRAY16_BE GRAY16_LE
              v308 RGB16 BGR16 RGB15 BGR15 UYVP A420 RGB8P YUV9 YVU9
              IYU1 ARGB64 AYUV64 r210 I420_10LE I420_10BE I422_10LE I422_10BE
            </entry>
            <entry>
              The format of the video. See <ulink type="http"
              url="http://www.fourcc.org/">FourCC definition site</ulink>
              for references and definitions. YUY2, YVYU and UYVY are 4:2:2
              packed-pixel, Y41P is 4:1:1 packed-pixel and IYU2 is 4:4:4
              packed-pixel. Y42B is 4:2:2 planar, YV12 and I420 are 4:2:0
              planar, Y41B is 4:1:1 planar and YUV9 and YVU9 are 4:1:0 planar.
              Y800 contains Y-samples only (black/white).
            </entry>
          </row>

          <!-- ############ subtitle ############# -->

          <row>
            <entry spanname="fullwidth">
              <emphasis>All raw video types.</emphasis>
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/x-raw</entry>
            <entry>Unstructured and uncompressed raw video data.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              The properties width, height and format are mandatory.
            </entry>
          </row>

          <!-- ############ subtitle ############# -->

          <row>
            <entry spanname="fullwidth">
              <emphasis>All encoded video types.</emphasis>
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/x-3ivx</entry>
            <entry>3ivx video.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/x-divx</entry>
            <entry>DivX video.</entry>
            <entry>divxversion</entry>
            <entry>integer</entry>
            <entry>3, 4 or 5</entry>
            <entry>
              Version of the DivX codec used to encode the stream.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/x-dv</entry>
            <entry>Digital Video.</entry>
            <entry>systemstream</entry>
            <entry>boolean</entry>
            <entry>FALSE</entry>
            <entry>
              Indicates that this stream is <emphasis>not</emphasis> a system
              container stream.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/x-ffv</entry>
            <entry>FFMpeg video.</entry>
            <entry>ffvversion</entry>
            <entry>integer</entry>
            <entry>1</entry>
            <entry>
              Version of the FFMpeg video codec used to encode the stream.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry morerows="1">video/x-h263</entry>
            <entry morerows="1">H-263 video.</entry>
            <entry>variant</entry>
            <entry>string</entry>
            <entry>itu, lead, microsoft, vdolive, vivo, xirlink </entry>
            <entry>
              Vendor specific variant of the format. 'itu' is the standard.
            </entry>
          </row>
          <row>
            <entry>h263version</entry>
            <entry>string</entry>
            <entry>h263, h263p, h263pp</entry>
            <entry>
              Enhanced versions of the h263 codec.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/x-h264</entry>
            <entry>H-264 video.</entry>
            <entry>variant</entry>
            <entry>string</entry>
            <entry>itu, videosoft</entry>
            <entry>
              Vendor specific variant of the format. 'itu' is the standard.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/x-huffyuv</entry>
            <entry>Huffyuv video.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/x-indeo</entry>
            <entry>Indeo video.</entry>
            <entry>indeoversion</entry>
            <entry>integer</entry>
            <entry>3</entry>
            <entry>
              Version of the Indeo codec used to encode this stream.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/x-intel-h263</entry>
            <entry>H-263 video.</entry>
            <entry>variant</entry>
            <entry>string</entry>
            <entry>intel</entry>
            <entry>
              Vendor specific variant of the format.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/x-jpeg</entry>
            <entry>Motion-JPEG video.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type. Note that video/x-jpeg only applies to Motion-JPEG
              pictures (YUY2 colourspace). RGB colourspace JPEG images are
              referred to as image/jpeg (JPEG image).
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry morerows="1">video/mpeg</entry>
            <entry morerows="1">MPEG video.</entry>
            <entry>mpegversion</entry>
            <entry>integer</entry>
            <entry>1, 2 or 4</entry>
            <entry>
              Version of the MPEG codec that this stream was encoded with.
              Note that we have different media types for 3ivx, XviD, DivX and
              "standard" ISO MPEG-4. This is <emphasis>not</emphasis> a good
              thing and we're fully aware of this. However, we do not have a
              solution yet.
            </entry>
          </row>
          <row>
            <entry>systemstream</entry>
            <entry>boolean</entry>
            <entry>FALSE</entry>
            <entry>
              Indicates that this stream is <emphasis>not</emphasis> a system
              container stream.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/x-msmpeg</entry>
            <entry>Microsoft MPEG-4 video deviations.</entry>
            <entry>msmpegversion</entry>
            <entry>integer</entry>
            <entry>41, 42 or 43</entry>
            <entry>
              Version of the MS-MPEG-4-like codec that was used to encode this
              version. A value of 41 refers to MS MPEG 4.1, 42 to 4.2 and 43
              to version 4.3.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/x-msvideocodec</entry>
            <entry>Microsoft Video 1 (oldish codec).</entry>
            <entry>msvideoversion</entry>
            <entry>integer</entry>
            <entry>1</entry>
            <entry>
              Version of the codec - always 1.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/x-pn-realvideo</entry>
            <entry>Realmedia video.</entry>
            <entry>rmversion</entry>
            <entry>integer</entry>
            <entry>1, 2 or 3</entry>
            <entry>
              Version of the Real Video codec that this stream was encoded
              with.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry morerows="2">video/x-rle</entry>
            <entry morerows="2">RLE animation format.</entry>
            <entry>layout</entry>
            <entry>string</entry>
            <entry>"microsoft" or "quicktime"</entry>
            <entry>
              The RLE format inside the Microsoft AVI container has a
              different byte layout than the RLE format inside Apple's
              Quicktime container; this property keeps track of the
              layout.
            </entry>
          </row>
          <row>
            <entry>depth</entry>
            <entry>integer</entry>
            <entry>1 to 64</entry>
            <entry>
              Bit depth of the used palette. This means that the palette
              that belongs to this format defines 2^depth colors.
            </entry>
          </row>
          <row>
            <entry>palette_data</entry>
            <entry>GstBuffer</entry>
            <entry></entry>
            <entry>
              Buffer containing a color palette (in native-endian RGBA) used
              by this format. The buffer is of size 4*2^depth.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/x-svq</entry>
            <entry>Sorensen Video.</entry>
            <entry>svqversion</entry>
            <entry>integer</entry>
            <entry>1 or 3</entry>
            <entry>
              Version of the Sorensen codec that the stream was encoded with.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/x-tarkin</entry>
            <entry>Tarkin video.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/x-theora</entry>
            <entry>Theora video.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/x-vp3</entry>
            <entry>VP-3 video.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type. Note that we have different media types for VP-3 and
              Theora, which is not necessarily a good idea. This could probably
              be improved.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/x-wmv</entry>
            <entry>Windows Media Video</entry>
            <entry>wmvversion</entry>
            <entry>integer</entry>
            <entry>1,2 or 3</entry>
            <entry>
              Version of the WMV codec that the stream was encoded with.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/x-xvid</entry>
            <entry>XviD video.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ subtitle ############# -->

          <row>
            <entry spanname="fullwidth">
              <emphasis>All image types.</emphasis>
            </entry>
          </row>

	  <!-- ############ type ############# -->

          <row>
            <entry>image/gif</entry>
            <entry>Graphics Interchange Format.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>image/jpeg</entry>
            <entry>Joint Picture Expert Group Image.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type. Note that image/jpeg only applies to RGB-colourspace
              JPEG images; YUY2-colourspace JPEG pictures are referred to as
              video/x-jpeg ("Motion JPEG").
            </entry>
          </row>

	  <!-- ############ type ############# -->

          <row>
            <entry>image/png</entry>
            <entry>Portable Network Graphics Image.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

	  <!-- ############ type ############# -->

          <row>
            <entry>image/tiff</entry>
            <entry>Tagged Image File Format.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>
        </tbody>
        </tgroup>
      </table>

      <table frame="all" id="table-container-types" xreflabel="Table of Container Types">
        <title>Table of Container Types</title>
        <tgroup cols="6" align="left" colsep="1" rowsep="1">
        <colspec colnum="1" colname="colc1" colwidth="1*"/>
        <colspec colnum="6" colname="colc6" colwidth="6*"/>
        <spanspec spanname="fullwidth" namest="colc1" nameend="colc6"/>

        <thead>
          <row>
            <entry>Media Type</entry>
            <entry>Description</entry>
            <entry>Property</entry>
            <entry>Property Type</entry>
            <entry>Property Values</entry>
            <entry>Property Description</entry>
          </row>
        </thead>

        <tbody valign="top">

          <!-- ############ type ############# -->

          <row>
            <entry>video/x-ms-asf</entry>
            <entry>Advanced Streaming Format (ASF).</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/x-msvideo</entry>
            <entry>AVI.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/x-dv</entry>
            <entry>Digital Video.</entry>
            <entry>systemstream</entry>
            <entry>boolean</entry>
            <entry>TRUE</entry>
            <entry>
              Indicates that this is a container system stream rather than an
              elementary video stream.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/x-matroska</entry>
            <entry>Matroska.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/mpeg</entry>
            <entry>Motion Pictures Expert Group System Stream.</entry>
            <entry>systemstream</entry>
            <entry>boolean</entry>
            <entry>TRUE</entry>
            <entry>
              Indicates that this is a container system stream rather than an
              elementary video stream.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>application/ogg</entry>
            <entry>Ogg.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>video/quicktime</entry>
            <entry>Quicktime.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>application/vnd.rn-realmedia</entry>
            <entry>RealMedia.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>

          <!-- ############ type ############# -->

          <row>
            <entry>audio/x-wav</entry>
            <entry>WAV.</entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              There are currently no specific properties defined or needed for
              this type.
            </entry>
          </row>
	  </tbody>
        </tgroup>
      </table>

      <table frame="all" id="table-subtitle-types" xreflabel="Table of Subtitle Types">
        <title>Table of Subtitle Types</title>
        <tgroup cols="6" align="left" colsep="1" rowsep="1">
        <colspec colnum="1" colname="colt1" colwidth="1*"/>
        <colspec colnum="6" colname="colt6" colwidth="6*"/>
        <spanspec spanname="fullwidth" namest="colt1" nameend="colt6"/>

        <thead>
          <row>
            <entry>Media Type</entry>
            <entry>Description</entry>
            <entry>Property</entry>
            <entry>Property Type</entry>
            <entry>Property Values</entry>
            <entry>Property Description</entry>
          </row>
        </thead>

        <tbody valign="top">

          <!-- ############ type ############# -->

          <row>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              None defined yet.
            </entry>
          </row>
	  </tbody>
        </tgroup>
      </table>

      <table frame="all" id="table-other-types" xreflabel="Table of Other Types">
        <title>Table of Other Types</title>
        <tgroup cols="6" align="left" colsep="1" rowsep="1">
        <colspec colnum="1" colname="colo1" colwidth="1*"/>
        <colspec colnum="6" colname="colo6" colwidth="6*"/>
        <spanspec spanname="fullwidth" namest="colo1" nameend="colo6"/>

        <thead>
          <row>
            <entry>Media Type</entry>
            <entry>Description</entry>
            <entry>Property</entry>
            <entry>Property Type</entry>
            <entry>Property Values</entry>
            <entry>Property Description</entry>
          </row>
        </thead>

        <tbody valign="top">

          <!-- ############ type ############# -->

          <row>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry></entry>
            <entry>
              None defined yet.
            </entry>
          </row>
	  </tbody>
        </tgroup>
      </table>
  </sect1>
</chapter>
