2008-06-25 14:44:52 +00:00
|
|
|
<chapter id="chapter-gstreamer">
|
|
|
|
<title>What is &GStreamer;?</title>
|
|
|
|
|
|
|
|
<!-- ############ sect1 ############# -->
|
|
|
|
|
|
|
|
<!-- <sect1 id="section-intro-what"> --><!-- synchronize with PWG -->
|
|
|
|
<para>
|
|
|
|
&GStreamer; is a framework for creating streaming media applications.
|
|
|
|
The fundamental design comes from the video pipeline at Oregon Graduate
|
|
|
|
Institute, as well as some ideas from DirectShow.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
&GStreamer;'s development framework makes it possible to write any
|
|
|
|
type of streaming multimedia application. The &GStreamer; framework
|
|
|
|
is designed to make it easy to write applications that handle audio
|
|
|
|
or video or both. It isn't restricted to audio and video, and can
|
|
|
|
process any kind of data flow.
|
|
|
|
The pipeline design is made to have little overhead above what the
|
|
|
|
applied filters induce. This makes &GStreamer; a good framework for
|
|
|
|
designing even high-end audio applications which put high demands on
|
|
|
|
latency.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2011-09-07 11:14:38 +00:00
|
|
|
One of the most obvious uses of &GStreamer; is using it to build
|
2008-06-25 14:44:52 +00:00
|
|
|
a media player. &GStreamer; already includes components for building a
|
|
|
|
media player that can support a very wide variety of formats, including
|
|
|
|
MP3, Ogg/Vorbis, MPEG-1/2, AVI, Quicktime, mod, and more. &GStreamer;,
|
|
|
|
however, is much more than just another media player. Its main advantages
|
|
|
|
are that the pluggable components can be mixed and matched into arbitrary
|
|
|
|
pipelines so that it's possible to write a full-fledged video or audio
|
|
|
|
editing application.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The framework is based on plugins that will provide the various codec
|
|
|
|
and other functionality. The plugins can be linked and arranged in
|
|
|
|
a pipeline. This pipeline defines the flow of the data. Pipelines can
|
|
|
|
also be edited with a GUI editor and saved as XML so that pipeline
|
|
|
|
libraries can be made with a minimum of effort.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The &GStreamer; core function is to provide a framework for plugins,
|
|
|
|
data flow and media type handling/negotiation. It also provides an
|
|
|
|
API to write applications using the various plugins.
|
|
|
|
</para>
|
|
|
|
|
2008-06-27 07:03:05 +00:00
|
|
|
|
|
|
|
<para>
|
|
|
|
Specifically, &GStreamer; provides
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem><para>an API for multimedia applications</para></listitem>
|
|
|
|
<listitem><para>a plugin architecture</para></listitem>
|
|
|
|
<listitem><para>a pipeline architecture</para></listitem>
|
2008-11-04 11:55:08 +00:00
|
|
|
<listitem><para>a mechanism for media type handling/negotiation</para></listitem>
|
2012-10-11 15:10:04 +00:00
|
|
|
<listitem><para>a mechanism for synchronization</para></listitem>
|
|
|
|
<listitem><para>over 250 plug-ins providing more than 1000 elements</para></listitem>
|
2008-06-27 07:03:05 +00:00
|
|
|
<listitem><para>a set of tools</para></listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
&GStreamer; plug-ins could be classified into
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem><para>protocols handling</para></listitem>
|
|
|
|
<listitem><para>sources: for audio and video (involves protocol plugins)</para></listitem>
|
|
|
|
<listitem><para>formats: parsers, formaters, muxers, demuxers, metadata, subtitles</para></listitem>
|
|
|
|
<listitem><para>codecs: coders and decoders</para></listitem>
|
|
|
|
<listitem><para>filters: converters, mixers, effects, ...</para></listitem>
|
|
|
|
<listitem><para>sinks: for audio and video (involves protocol plugins)</para></listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<figure float="1" id="section-gstreamer-img">
|
|
|
|
<title>Gstreamer overview</title>
|
|
|
|
<mediaobject>
|
|
|
|
<imageobject>
|
|
|
|
<imagedata scale="75" fileref="images/gstreamer-overview.ℑ" format="&IMAGE;" />
|
|
|
|
</imageobject>
|
|
|
|
</mediaobject>
|
|
|
|
</figure>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
&GStreamer; is packaged into
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem><para>gstreamer: the core package</para></listitem>
|
|
|
|
<listitem><para>gst-plugins-base: an essential exemplary set of elements</para></listitem>
|
|
|
|
<listitem><para>gst-plugins-good: a set of good-quality plug-ins under LGPL</para></listitem>
|
|
|
|
<listitem><para>gst-plugins-ugly: a set of good-quality plug-ins that might pose distribution problems</para></listitem>
|
|
|
|
<listitem><para>gst-plugins-bad: a set of plug-ins that need more quality</para></listitem>
|
2012-09-24 14:50:50 +00:00
|
|
|
<listitem><para>gst-libav: a set of plug-ins that wrap libav for decoding and encoding</para></listitem>
|
2008-06-27 07:03:05 +00:00
|
|
|
<listitem><para>a few others packages</para></listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
2008-06-25 14:44:52 +00:00
|
|
|
</chapter>
|