<!-- ############ 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)
{
  static gchar *exts[] = { "avi", NULL };
  if (!gst_type_find_register (plugin, "", GST_RANK_PRIMARY,
			       gst_my_typefind_function, exts,
			       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>
