mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-27 02:30:35 +00:00
d0bcc34dad
Original commit message from CVS: * docs/manual/advanced-autoplugging.xml: * docs/manual/advanced-clocks.xml: * docs/manual/advanced-interfaces.xml: * docs/manual/advanced-metadata.xml: * docs/manual/advanced-position.xml: * docs/manual/advanced-schedulers.xml: * docs/manual/advanced-threads.xml: * docs/manual/appendix-gnome.xml: * docs/manual/appendix-programs.xml: * docs/manual/appendix-quotes.xml: * docs/manual/autoplugging.xml: * docs/manual/basics-bins.xml: * docs/manual/basics-data.xml: * docs/manual/basics-elements.xml: * docs/manual/basics-helloworld.xml: * docs/manual/basics-init.xml: * docs/manual/basics-pads.xml: * docs/manual/basics-plugins.xml: * docs/manual/bins-api.xml: * docs/manual/bins.xml: * docs/manual/buffers-api.xml: * docs/manual/buffers.xml: * docs/manual/clocks.xml: * docs/manual/components.xml: * docs/manual/cothreads.xml: * docs/manual/debugging.xml: * docs/manual/dparams-app.xml: * docs/manual/dynamic.xml: * docs/manual/elements-api.xml: * docs/manual/elements.xml: * docs/manual/factories.xml: * docs/manual/gnome.xml: * docs/manual/goals.xml: * docs/manual/helloworld.xml: * docs/manual/helloworld2.xml: * docs/manual/highlevel-components.xml: * docs/manual/highlevel-xml.xml: * docs/manual/init-api.xml: * docs/manual/intro-basics.xml: * docs/manual/intro-motivation.xml: * docs/manual/intro-preface.xml: * docs/manual/intro.xml: * docs/manual/links-api.xml: * docs/manual/links.xml: * docs/manual/manual.xml: * docs/manual/motivation.xml: * docs/manual/pads-api.xml: * docs/manual/pads.xml: * docs/manual/plugins-api.xml: * docs/manual/plugins.xml: * docs/manual/programs.xml: * docs/manual/queues.xml: * docs/manual/quotes.xml: * docs/manual/schedulers.xml: * docs/manual/states-api.xml: * docs/manual/states.xml: * docs/manual/threads.xml: * docs/manual/typedetection.xml: * docs/manual/win32.xml: * docs/manual/xml.xml: Try 2. This time, include a short preface as a "general introduction", also add code blocks around all code samples so they get compiled. We still need a way to tell readers the filename of the code sample. In some cases, don't show all code in the documentation, but do include it in the generated code. This allows for focussing on specific bits in the docs, while still having a full test application available. * examples/manual/Makefile.am: Fix up examples for new ADM. Add several of the new examples that were either added or were missing from the build system. * examples/manual/extract.pl: Allow nameless blocks.
117 lines
5.1 KiB
XML
117 lines
5.1 KiB
XML
<chapter id="chapter-intro">
|
|
<title>Introduction</title>
|
|
<para>
|
|
This chapter gives you an overview of the technologies described in this
|
|
book.
|
|
</para>
|
|
|
|
<sect1 id="section-intro-what">
|
|
<title>What is &GStreamer;?</title>
|
|
<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>
|
|
</sect1>
|
|
|
|
<sect1 id="section-intro-structure">
|
|
<title>Structure of this Manual</title>
|
|
<para>
|
|
This book is about &GStreamer; from a developer's point of view; it
|
|
describes how to write a &GStreamer; application using the &GStreamer;
|
|
libraries and tools. For an explanation about writing plugins, we
|
|
suggest the <ulink type="http"
|
|
url="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/index.html">Plugin
|
|
Writers Guide</ulink>.
|
|
</para>
|
|
|
|
<para>
|
|
<xref linkend="part-overview"/> gives you an overview of &GStreamer;'s
|
|
motivation design goals.
|
|
</para>
|
|
|
|
<para>
|
|
<xref linkend="part-basics"/> rapidly covers the basics of &GStreamer;
|
|
application programming. At the end of that chapter, you should be
|
|
able to build your own audio player using &GStreamer;
|
|
</para>
|
|
|
|
<para>
|
|
In <xref linkend="part-advanced"/>, we will move on to complicated
|
|
subjects which make &GStreamer; stand out of its competitors. We
|
|
will discuss application-pipeline interaction using dynamic parameters
|
|
and interfaces, we will discuss threading and threaded pipelines,
|
|
scheduling and clocks (and synchronization). Most of those topics are
|
|
not just there to introduce you to their API, but primarily to give
|
|
a deeper insight in solving application programming problems with
|
|
&GStreamer; and understanding their concepts.
|
|
</para>
|
|
|
|
<para>
|
|
Next, in <xref linkend="part-highlevel"/>, we will go into higher-level
|
|
programming APIs for &GStreamer;. You don't exactly need to know all
|
|
the details from the previous parts to understand this, but you will
|
|
need to understand basic &GStreamer; concepts nevertheless. We will,
|
|
amongst others, discuss XML, playbin and autopluggers.
|
|
</para>
|
|
|
|
<para>
|
|
In <xref linkend="part-appendices"/>, you will find some random
|
|
information on integrating with GNOME, KDE, OS X or Windows, some
|
|
debugging help and general tips to improve and simplify &GStreamer;
|
|
programming.
|
|
</para>
|
|
|
|
<para>
|
|
In order to understand this manual, you will need to have a basic
|
|
understanding of the C language. Since &GStreamer; uses <ulink
|
|
url="http://developer.gnome.org/arch/gtk/glib.html" type="http">GLib
|
|
2.0</ulink>, the reader is assumed to understand the basics of the
|
|
<ulink url="http://developer.gnome.org/doc/API/2.0/gobject/index.html"
|
|
type="http">GObject object model</ulink>. It is recommended to have
|
|
skimmed through the introduction of the <ulink type="http"
|
|
url="http://www.le-hacker.org/papers/gobject/index.html">GObject
|
|
tutorial</ulink> before reading this. You may also want to have a look
|
|
at Eric Harlow's book <emphasis>Developing Linux Applications with
|
|
GTK+ and GDK</emphasis>.
|
|
</para>
|
|
|
|
</sect1>
|
|
</chapter>
|