mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 08:46:40 +00:00
fd8df4039c
Original commit message from CVS: * docs/pwg/pwg.xml: Just found out that this so-called "ima-wav" format is really just "dvi adpcm" (according to the MS WAV documentation). So renaming it. We didn't use it yet anyway.
189 lines
7.4 KiB
XML
189 lines
7.4 KiB
XML
<?xml version='1.0'?>
|
|
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
|
"/usr/share/sgml/docbook/xml-dtd-4.2-1.0-17/docbookx.dtd" [
|
|
<!ENTITY % image-entities SYSTEM "image.entities">
|
|
%image-entities;
|
|
<!ENTITY % version-entities SYSTEM "version.entities">
|
|
%version-entities;
|
|
|
|
<!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">
|
|
<!ENTITY BUILDING_DEBUG SYSTEM "building-debug.xml">
|
|
<!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 BUILDING_FILTERFACT SYSTEM "building-filterfactory.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">
|
|
<!ENTITY ADVANCED_INTERFACES SYSTEM "advanced-interfaces.xml">
|
|
<!ENTITY ADVANCED_TAGGING SYSTEM "advanced-tagging.xml">
|
|
<!ENTITY ADVANCED_EVENTS SYSTEM "advanced-events.xml">
|
|
|
|
<!ENTITY OTHER_SOURCE SYSTEM "other-source.xml">
|
|
<!ENTITY OTHER_SINK SYSTEM "other-sink.xml">
|
|
<!ENTITY OTHER_ONETON SYSTEM "other-oneton.xml">
|
|
<!ENTITY OTHER_NTOONE SYSTEM "other-ntoone.xml">
|
|
<!ENTITY OTHER_NTON SYSTEM "other-nton.xml">
|
|
<!ENTITY OTHER_AUTOPLUGGER SYSTEM "other-autoplugger.xml">
|
|
<!ENTITY OTHER_MANAGER SYSTEM "other-manager.xml">
|
|
|
|
<!ENTITY APPENDIX_CHECKLIST SYSTEM "appendix-checklist.xml">
|
|
<!ENTITY APPENDIX_PYTHON SYSTEM "appendix-python.xml">
|
|
|
|
<!ENTITY GStreamer "<application>GStreamer</application>">
|
|
<!ENTITY GstAppDevMan "<emphasis>GStreamer Application Development Manual</emphasis>">
|
|
<!ENTITY GstLibRef "<emphasis>GStreamer Library Reference</emphasis>">
|
|
]>
|
|
|
|
<book id="index">
|
|
&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
|
|
(version &GST_VERSION;) so you can develop new plugins to extend the
|
|
existing functionality. The guide addresses most issues by following the
|
|
development of an example plugin - an audio filter plugin -
|
|
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;.
|
|
</para>
|
|
</partintro>
|
|
|
|
&INTRO_PREFACE;
|
|
&INTRO_BASICS;
|
|
</part>
|
|
|
|
<!-- ############ part ############# -->
|
|
|
|
<part id="part-building" xreflabel="Building a Plugin">
|
|
<title>Building a Plugin</title>
|
|
<partintro>
|
|
<para>
|
|
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;
|
|
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>.
|
|
</para>
|
|
<para>
|
|
The example filter element will begin with a single input pad and a
|
|
single
|
|
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.
|
|
</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;
|
|
&BUILDING_FILTERFACT;
|
|
</part>
|
|
|
|
<!-- ############ part ############# -->
|
|
|
|
<part id="part-advanced" xreflabel="Advanced Filter Concepts">
|
|
<title>Advanced Filter Concepts</title>
|
|
<partintro>
|
|
<para>
|
|
By now, you should be able to create basic filter elements that can
|
|
receive and send data. This is the simple model that &GStreamer; stands
|
|
for. But &GStreamer; can do much more than only this! In this chapter,
|
|
various advanced topics will be discussed, such as scheduling, special
|
|
pad types, clocking, events, interfaces, tagging and more. These topics
|
|
are the sugar that makes &GStreamer; so easy to use for applications.
|
|
</para>
|
|
</partintro>
|
|
|
|
&ADVANCED_SCHEDULING;
|
|
&ADVANCED_TYPES;
|
|
&ADVANCED_REQUEST;
|
|
&ADVANCED_CLOCK;
|
|
&ADVANCED_DPARAMS;
|
|
&ADVANCED_MIDI;
|
|
&ADVANCED_INTERFACES;
|
|
&ADVANCED_TAGGING;
|
|
&ADVANCED_EVENTS;
|
|
</part>
|
|
|
|
<!-- ############ part ############# -->
|
|
|
|
<part id="part-other" xreflabel="Other Element Types">
|
|
<title>Other Element Types</title>
|
|
<partintro>
|
|
<para>
|
|
By now, we have looked at pretty much any feature that can be embedded
|
|
into a &GStreamer; element. However, we have limited ourselves to the
|
|
simple model of a filter element. In this chapter, we will look at the
|
|
specific difficulties and things to keep in mind when writing specific
|
|
types of elements. We will discuss output elements (sinks), input
|
|
elements (sources), 1-to-N elements, N-to-1 elements, N-to-N elements,
|
|
autopluggers and managers. Some of these represent elements that don't
|
|
actually exist. Rather, they represent a general concept.
|
|
</para>
|
|
</partintro>
|
|
|
|
&OTHER_SOURCE;
|
|
&OTHER_SINK;
|
|
&OTHER_ONETON;
|
|
&OTHER_NTOONE;
|
|
&OTHER_NTON;
|
|
&OTHER_AUTOPLUGGER;
|
|
&OTHER_MANAGER;
|
|
</part>
|
|
|
|
<!-- ############ part ############# -->
|
|
|
|
<part id="part-appendix" xreflabel="Appendices">
|
|
<title>Appendices</title>
|
|
<partintro>
|
|
<para>
|
|
This chapter contains things that don't belong anywhere else.
|
|
</para>
|
|
</partintro>
|
|
|
|
&APPENDIX_CHECKLIST;
|
|
&APPENDIX_PYTHON;
|
|
</part>
|
|
|
|
</book>
|