pwg.xml 5.65 KB
Newer Older
1
<?xml version='1.0'?>
2
3
4
5
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
                  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
<!ENTITY % image-entities SYSTEM "image.entities">
%image-entities;
6
7
8
9
10
11
12

<!ENTITY TITLEPAGE            SYSTEM "titlepage.xml">

<!ENTITY INTRO_PREFACE        SYSTEM "intro_preface.xml">
<!ENTITY INTRO_BASICS         SYSTEM "intro_basics.xml">

<!ENTITY BUILDING_BOILER      SYSTEM "building_boiler.xml">
13
<!ENTITY BUILDING_DEBUG       SYSTEM "building_debug.xml">
14
15
16
17
18
19
20
21
22
23
24
25
26
<!ENTITY BUILDING_PADS        SYSTEM "building_pads.xml">
<!ENTITY BUILDING_CHAINFN     SYSTEM "building_chainfn.xml">
<!ENTITY BUILDING_STATE       SYSTEM "building_state.xml">
<!ENTITY BUILDING_PROPS       SYSTEM "building_props.xml">
<!ENTITY BUILDING_SIGNALS     SYSTEM "building_signals.xml">
<!ENTITY BUILDING_TESTAPP     SYSTEM "building_testapp.xml">

<!ENTITY ADVANCED_SCHEDULING  SYSTEM "advanced_scheduling.xml">
<!ENTITY ADVANCED_TYPES       SYSTEM "advanced_types.xml">
<!ENTITY ADVANCED_REQUEST     SYSTEM "advanced_request.xml">
<!ENTITY ADVANCED_CLOCK       SYSTEM "advanced_clock.xml">
<!ENTITY ADVANCED_DPARAMS     SYSTEM "advanced_dparams.xml">
<!ENTITY ADVANCED_MIDI        SYSTEM "advanced_midi.xml">
27
<!ENTITY ADVANCED_INTERFACES  SYSTEM "advanced_interfaces.xml">
28
29
30
31
32
33
34
35
36

<!ENTITY OTHER_SOURCE         SYSTEM "other_source.xml">
<!ENTITY OTHER_SINK           SYSTEM "other_sink.xml">
<!ENTITY OTHER_AUTOPLUGGER    SYSTEM "other_autoplugger.xml">

<!ENTITY APPENDIX_CHECKLIST   SYSTEM "appendix_checklist.xml">
<!ENTITY APPENDIX_PYTHON      SYSTEM "appendix_python.xml">

<!ENTITY GStreamer    "<application>GStreamer</application>">
37
<!ENTITY GstVersion   "0.7.4">
38
39
40
41
<!ENTITY GstAppDevMan "<emphasis>GStreamer Application Development Manual</emphasis>">
<!ENTITY GstLibRef    "<emphasis>GStreamer Library Reference</emphasis>">
]>

42
<book id="index">
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
  &TITLEPAGE;

  <!-- ############# part ############### -->

  <part id="part-introduction" xreflabel="Introduction">
    <title>Introduction</title>
    <partintro>
      <para>
        &GStreamer; is an exremely powerful and versatile framework for creating
        streaming media applications. Many of the virtues of the &GStreamer;
        framework come from its modularity: &GStreamer; can seamlessly
        incorporate new plugin modules. But because modularity and power often
        come at a cost of greater complexity (consider, for example, <ulink
        type="http" url="http://www.omg.org/">CORBA</ulink>), writing new
        plugins is not always easy.
      </para>
      <para>
        This guide is intended to help you understand the &GStreamer; framework
61
62
        (version &GstVersion;) so you can develop new plugins to extend the
        existing functionality. The guide addresses most issues by following the
63
        development of an example plugin - an audio filter plugin -
64
65
66
        written in C. However, the later parts of the guide also present some
        issues involved in writing other types of plugins, and the end of the
        guide describes some of the Python bindings for &GStreamer;.
67
68
69
70
71
72
73
74
75
76
77
78
79
      </para>
    </partintro>

    &INTRO_PREFACE;
    &INTRO_BASICS;
  </part>

  <!-- ############ part ############# -->

  <part id="part-building" xreflabel="Building a Filter">
    <title>Building a Filter</title>
    <partintro>
      <para>
80
81
82
83
84
85
86
        You are now ready to learn how to build a plugin. In this part of the
        guide, you will learn how to apply basic &GStreamer; and GNOME
        programming concepts to write a simple plugin. The previous parts of the
        guide have contained no explicit example code, perhaps making things a
        bit abstract and difficult to understand. In contrast, this section will
        present both applications and code by following the development of an
        example audio filter plugin called <quote>ExampleFilter</quote>.
87
88
89
      </para>
      <para>
        The example filter will begin with a single input pad and a single
90
91
92
93
94
95
        output pad. The filter will, at first, simply pass media and event data
        from its sink pad to its source pad without modification. But by the end
        of this part of the guide, you will learn to add some more interesting
        functionality, including properties and signal handlers. And after
        reading the next part of the guide, <xref linkend="part-advanced"/>, you
        will be able to add even more functionality to your plugins.
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
      </para>
      <para>
        The example code used in this part of the guide can be found in
        <filename class="directory">examples/pwg/examplefilter/</filename> in
        your &GStreamer; directory.
      </para>
    </partintro>

    &BUILDING_BOILER;
    &BUILDING_PADS;
    &BUILDING_CHAINFN;
    &BUILDING_STATE;
    &BUILDING_PROPS;
    &BUILDING_SIGNALS;
    &BUILDING_TESTAPP;
  </part>

  <!-- ############ part ############# -->

  <part id="part-advanced" xreflabel="Advanced Filter Concepts">
    <title>Advanced Filter Concepts</title>
    <partintro>
      <para>
      </para>
    </partintro>

    &ADVANCED_SCHEDULING;
    &ADVANCED_TYPES;
    &ADVANCED_REQUEST;
    &ADVANCED_CLOCK;
    &ADVANCED_DPARAMS;
    &ADVANCED_MIDI;
128
    &ADVANCED_INTERFACES;
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
  </part>

  <!-- ############ part ############# -->

  <part id="part-other" xreflabel="Other Element Types">
    <title>Other Element Types</title>
    <partintro>
      <para>
      </para>
    </partintro>

    &OTHER_SOURCE;
    &OTHER_SINK;
    &OTHER_AUTOPLUGGER;
  </part>

  <!-- ############ part ############# -->

  <part id="part-appendix" xreflabel="Appendices">
    <title>Appendices</title>
    <partintro>
      <para>
      </para>
    </partintro>

      &APPENDIX_CHECKLIST;
      &APPENDIX_PYTHON;
  </part>

</book>