[21447] | 1 | <chapter id="chapter-intro"> |
---|
| 2 | <title>Introduction</title> |
---|
| 3 | <para> |
---|
| 4 | This chapter gives you an overview of the technologies described in this |
---|
| 5 | book. |
---|
| 6 | </para> |
---|
| 7 | |
---|
| 8 | <sect1 id="section-intro-what"> |
---|
| 9 | <title>What is &GStreamer;?</title> |
---|
| 10 | <para> |
---|
| 11 | &GStreamer; is a framework for creating streaming media applications. |
---|
| 12 | The fundamental design comes from the video pipeline at Oregon Graduate |
---|
| 13 | Institute, as well as some ideas from DirectShow. |
---|
| 14 | </para> |
---|
| 15 | |
---|
| 16 | <para> |
---|
| 17 | &GStreamer;'s development framework makes it possible to write any |
---|
| 18 | type of streaming multimedia application. The &GStreamer; framework |
---|
| 19 | is designed to make it easy to write applications that handle audio |
---|
| 20 | or video or both. It isn't restricted to audio and video, and can |
---|
| 21 | process any kind of data flow. |
---|
| 22 | The pipeline design is made to have little overhead above what the |
---|
| 23 | applied filters induce. This makes &GStreamer; a good framework for |
---|
| 24 | designing even high-end audio applications which put high demands on |
---|
| 25 | latency. |
---|
| 26 | </para> |
---|
| 27 | |
---|
| 28 | <para> |
---|
| 29 | One of the the most obvious uses of &GStreamer; is using it to build |
---|
| 30 | a media player. &GStreamer; already includes components for building a |
---|
| 31 | media player that can support a very wide variety of formats, including |
---|
| 32 | MP3, Ogg/Vorbis, MPEG-1/2, AVI, Quicktime, mod, and more. &GStreamer;, |
---|
| 33 | however, is much more than just another media player. Its main advantages |
---|
| 34 | are that the pluggable components can be mixed and matched into arbitrary |
---|
| 35 | pipelines so that it's possible to write a full-fledged video or audio |
---|
| 36 | editing application. |
---|
| 37 | </para> |
---|
| 38 | |
---|
| 39 | <para> |
---|
| 40 | The framework is based on plugins that will provide the various codec |
---|
| 41 | and other functionality. The plugins can be linked and arranged in |
---|
| 42 | a pipeline. This pipeline defines the flow of the data. Pipelines can |
---|
| 43 | also be edited with a GUI editor and saved as XML so that pipeline |
---|
| 44 | libraries can be made with a minimum of effort. |
---|
| 45 | </para> |
---|
| 46 | |
---|
| 47 | <para> |
---|
| 48 | The &GStreamer; core function is to provide a framework for plugins, |
---|
| 49 | data flow and media type handling/negotiation. It also provides an |
---|
| 50 | API to write applications using the various plugins. |
---|
| 51 | </para> |
---|
| 52 | </sect1> |
---|
| 53 | |
---|
| 54 | <sect1 id="section-intro-structure"> |
---|
| 55 | <title>Structure of this Manual</title> |
---|
| 56 | <para> |
---|
| 57 | This book is about &GStreamer; from a developer's point of view; it |
---|
| 58 | describes how to write a &GStreamer; application using the &GStreamer; |
---|
| 59 | libraries and tools. For an explanation about writing plugins, we |
---|
| 60 | suggest the <ulink type="http" |
---|
| 61 | url="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/index.html">Plugin |
---|
| 62 | Writers Guide</ulink>. |
---|
| 63 | </para> |
---|
| 64 | |
---|
| 65 | <para> |
---|
| 66 | <xref linkend="part-overview"/> gives you an overview of &GStreamer;'s |
---|
| 67 | motivation design goals. |
---|
| 68 | </para> |
---|
| 69 | |
---|
| 70 | <para> |
---|
| 71 | <xref linkend="part-basics"/> rapidly covers the basics of &GStreamer; |
---|
| 72 | application programming. At the end of that chapter, you should be |
---|
| 73 | able to build your own audio player using &GStreamer; |
---|
| 74 | </para> |
---|
| 75 | |
---|
| 76 | <para> |
---|
| 77 | In <xref linkend="part-advanced"/>, we will move on to complicated |
---|
| 78 | subjects which make &GStreamer; stand out of its competitors. We |
---|
| 79 | will discuss application-pipeline interaction using dynamic parameters |
---|
| 80 | and interfaces, we will discuss threading and threaded pipelines, |
---|
| 81 | scheduling and clocks (and synchronization). Most of those topics are |
---|
| 82 | not just there to introduce you to their API, but primarily to give |
---|
| 83 | a deeper insight in solving application programming problems with |
---|
| 84 | &GStreamer; and understanding their concepts. |
---|
| 85 | </para> |
---|
| 86 | |
---|
| 87 | <para> |
---|
| 88 | Next, in <xref linkend="part-highlevel"/>, we will go into higher-level |
---|
| 89 | programming APIs for &GStreamer;. You don't exactly need to know all |
---|
| 90 | the details from the previous parts to understand this, but you will |
---|
| 91 | need to understand basic &GStreamer; concepts nevertheless. We will, |
---|
| 92 | amongst others, discuss XML, playbin and autopluggers. |
---|
| 93 | </para> |
---|
| 94 | |
---|
| 95 | <para> |
---|
| 96 | In <xref linkend="part-appendices"/>, you will find some random |
---|
| 97 | information on integrating with GNOME, KDE, OS X or Windows, some |
---|
| 98 | debugging help and general tips to improve and simplify &GStreamer; |
---|
| 99 | programming. |
---|
| 100 | </para> |
---|
| 101 | |
---|
| 102 | <para> |
---|
| 103 | In order to understand this manual, you will need to have a basic |
---|
| 104 | understanding of the C language. Since &GStreamer; uses <ulink |
---|
| 105 | url="http://developer.gnome.org/arch/gtk/glib.html" type="http">GLib |
---|
| 106 | 2.0</ulink>, the reader is assumed to understand the basics of the |
---|
| 107 | <ulink url="http://developer.gnome.org/doc/API/2.0/gobject/index.html" |
---|
| 108 | type="http">GObject object model</ulink>. It is recommended to have |
---|
| 109 | skimmed through the introduction of the <ulink type="http" |
---|
| 110 | url="http://www.le-hacker.org/papers/gobject/index.html">GObject |
---|
| 111 | tutorial</ulink> before reading this. You may also want to have a look |
---|
| 112 | at Eric Harlow's book <emphasis>Developing Linux Applications with |
---|
| 113 | GTK+ and GDK</emphasis>. |
---|
| 114 | </para> |
---|
| 115 | |
---|
| 116 | </sect1> |
---|
| 117 | </chapter> |
---|