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> |
---|