<!-- ##### SECTION Title ##### -->
Gstreamer

<!-- ##### SECTION Short_Description ##### -->
Media library supporting arbitrary formats and filter graphs.

<!-- ##### SECTION Long_Description ##### -->
<para>
GStreamer is a framework for constructing graphs of various filters
(termed elements here) that will handle streaming media.  Any discreet
(packetizable) media type is supported, with provisions for automatically
determining source type.  Formatting/framing information is provided with
a powerful negotiation framework.  Plugins are heavily used to provide for
all elements, allowing one to construct plugins outside of the GST
library, even released binary-only if license require (please don't).
</para>

<para>
GStreamer borrows heavily from both the <ulink 
url="http://www.cse.ogi.edu/sysl/">OGI media pipeline</ulink> and
Microsoft's DirectShow, hopefully taking the best of both and leaving the
cruft behind.  Its interface is still very fluid and thus can be changed 
to increase the sanity/noise ratio.
</para>

<para>
The <application>GStreamer</application> library should be initialized with gst_init() before
it can be used. You should pass a pointer to the main argc and argv variables so that GStreamer can 
process its own command line options, as shown in the following example.

  <programlisting>
  int 
  main (int argc, char *argv[])
  {
    /* initialize the GStreamer library */
    gst_init (&amp;argc, &amp;argv);
    ...
  }
  </programlisting>
</para>
<para>
It's allowed to pass two NULL pointers to gst_init() in case you don't want to pass the command
line args to GStreamer.
</para>

<para>
You can also use a popt table to initialize your own parameters as shown in the next code 
fragment:
  <programlisting>
  static gboolean stats = FALSE;
  ...

  int 
  main (int argc, char *argv[])
  {
    struct poptOption options[] = {
      { "stats",  's',  POPT_ARG_NONE|POPT_ARGFLAG_STRIP,   &amp;stats,   0,
          "Show pad stats", NULL},
        POPT_TABLEEND
      };

    /* initialize the GStreamer library */
    gst_init_with_popt_table (&amp;argc, &amp;argv, options);
      
    ...
  }
  </programlisting>
</para>
<para>
  Use gst_version() to query the library version at runtime or use the GST_VERSION_* macros
  to find the version at compile time.
</para>
<para>
gst_main() and gst_main_quit() enter and exit the main loop. GStreamer doesn't currently require
you to us a mainloop but can intergrate with it without problems.
</para>

<!-- ##### SECTION See_Also ##### -->
<para>
Check out both <ulink url="http://www.cse.ogi.edu/sysl/">OGI's
pipeline</ulink> and Microsoft's DirectShow for some background.
</para>

<!-- ##### FUNCTION gst_init ##### -->
<para>

</para>

@argc: 
@argv: 


<!-- ##### FUNCTION gst_init_with_popt_table ##### -->
<para>

</para>

@argc: 
@argv: 
@popt_options: 
@Returns: 


<!-- ##### FUNCTION gst_init_check ##### -->
<para>

</para>

@argc: 
@argv: 
@Returns: 


<!-- ##### FUNCTION gst_init_get_popt_table ##### -->
<para>

</para>

@Returns: 


<!-- ##### FUNCTION gst_version ##### -->
<para>

</para>

@major: 
@minor: 
@micro: 


<!-- ##### FUNCTION gst_main ##### -->
<para>

</para>



<!-- ##### FUNCTION gst_main_quit ##### -->
<para>

</para>



<!-- ##### FUNCTION gst_has_threads ##### -->
<para>

</para>

@Returns: 


<!-- ##### FUNCTION gst_use_threads ##### -->
<para>

</para>

@use_threads: 


<!-- ##### VARIABLE g_log_domain_gstreamer ##### -->
<para>
The variable that holds the GStreamer log domain
</para>


<!-- ##### MACRO GST_VERSION_MAJOR ##### -->
<para>
The major version of GStreamer at compile time
</para>



<!-- ##### MACRO GST_VERSION_MINOR ##### -->
<para>
The minor version of GStreamer at compile time
</para>



<!-- ##### MACRO GST_VERSION_MICRO ##### -->
<para>
The micro version of GStreamer at compile time
</para>



