gstreamer/docs/manual/intro-gstreamer.xml

99 lines
4.3 KiB
XML
Raw Normal View History

<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>
One of the the most obvious uses of &GStreamer; is using it to build
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>
docs/manual/: Add scale factor for pdf output. Original commit message from CVS: patch by: Luc Pionchon <luc.pionchon@nokia.com> * docs/manual/advanced-autoplugging.xml: * docs/manual/advanced-threads.xml: * docs/manual/basics-bins.xml: * docs/manual/basics-elements.xml: * docs/manual/basics-helloworld.xml: * docs/manual/basics-pads.xml: Add scale factor for pdf output. * docs/manual/intro-basics.xml: Switched sections "pads" and "bins" and added a pipeline diagram. * docs/manual/intro-gstreamer.xml: Added more info on gstreamer. * docs/manual/intro-motivation.xml: Commented out the whole section "current problem", which sounds historical and somehow osolete; it could be turned in a positive way and reused to improve the design principles. * docs/manual/intro-preface.xml: - Update URLs to library.gnome.org. - Do not mention GTK+ in preliminary reading (irrelevant). - Mention Plugin Writer's Manual and further reading only in the previous section. - Added a list of most relevant GObject/glib topics. * docs/manual/Makefile.am: * docs/manual/bin-element-ghost.fig: * docs/manual/bin-element-ghost.png: * docs/manual/bin-element-noghost.fig: * docs/manual/bin-element-noghost.png: * docs/manual/bin-element.fig: * docs/manual/bin-element.png: * docs/manual/filter-element-multi.fig: * docs/manual/filter-element-multi.png: * docs/manual/filter-element.fig: * docs/manual/filter-element.png: * docs/manual/gstreamer-overview.png: * docs/manual/hello-world.fig: * docs/manual/hello-world.png: * docs/manual/linked-elements.fig: * docs/manual/linked-elements.png: * docs/manual/mime-world.fig: * docs/manual/mime-world.png: * docs/manual/queue.fig: * docs/manual/queue.png: * docs/manual/simple-player.png: * docs/manual/sink-element.fig: * docs/manual/sink-element.png: * docs/manual/src-element.fig: * docs/manual/src-element.png: * docs/manual/diagrams-general.svg: * docs/manual/diagrams-pipelines.svg: Removed .fig, added .png counterpart. Fixes: #539137
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>
<listitem><para>a mechanism for media type handling/negociation</para></listitem>
<listitem><para>over 150 plug-ins</para></listitem>
<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.&image;" 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>
<listitem><para>gst-python: the python bindings</para></listitem>
<listitem><para>a few others packages</para></listitem>
</itemizedlist>
</para>
</chapter>