<?xml version='1.0'?> <!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; <!ENTITY % version-entities SYSTEM "version.entities"> %version-entities; <!ENTITY INTRO SYSTEM "intro.xml"> <!ENTITY MOTIVATION SYSTEM "motivation.xml"> <!ENTITY GOALS SYSTEM "goals.xml"> <!ENTITY INIT SYSTEM "init.xml"> <!ENTITY ELEMENTS SYSTEM "elements.xml"> <!ENTITY PADS SYSTEM "pads.xml"> <!ENTITY LINKS SYSTEM "links.xml"> <!ENTITY BINS SYSTEM "bins.xml"> <!ENTITY BUFFERS SYSTEM "buffers.xml"> <!ENTITY STATES SYSTEM "states.xml"> <!ENTITY HELLOWORLD SYSTEM "helloworld.xml"> <!ENTITY FACTORIES SYSTEM "factories.xml"> <!ENTITY AUTOPLUGGING SYSTEM "autoplugging.xml"> <!ENTITY HELLOWORLD2 SYSTEM "helloworld2.xml"> <!ENTITY THREADS SYSTEM "threads.xml"> <!ENTITY QUEUES SYSTEM "queues.xml"> <!ENTITY COTHREADS SYSTEM "cothreads.xml"> <!ENTITY SCHEDULERS SYSTEM "schedulers.xml"> <!ENTITY CLOCKS SYSTEM "clocks.xml"> <!ENTITY DYNAMIC SYSTEM "dynamic.xml"> <!ENTITY TYPEDETECTION SYSTEM "typedetection.xml"> <!ENTITY UTILITY SYSTEM "utility.xml"> <!ENTITY DPARAMS SYSTEM "dparams-app.xml"> <!ENTITY XML SYSTEM "xml.xml"> <!ENTITY PLUGINS SYSTEM "plugins.xml"> <!ENTITY DEBUGGING SYSTEM "debugging.xml"> <!ENTITY PROGRAMS SYSTEM "programs.xml"> <!ENTITY COMPONENTS SYSTEM "components.xml"> <!ENTITY GNOME SYSTEM "gnome.xml"> <!ENTITY QUOTES SYSTEM "quotes.xml"> ]> <book id="index"> <bookinfo> <authorgroup> <author> <firstname>Wim</firstname> <surname>Taymans</surname> <authorblurb> <para> <email>wim.taymans@chello.be</email> </para> </authorblurb> </author> <author> <firstname>Steve</firstname> <surname>Baker</surname> <authorblurb> <para> <email>stevebaker_org@yahoo.co.uk</email> </para> </authorblurb> </author> <author> <firstname>Andy</firstname> <surname>Wingo</surname> <authorblurb> <para> <email>wingo@pobox.com</email> </para> </authorblurb> </author> </authorgroup> <legalnotice id="legalnotice"> <para> This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later (the latest version is presently available at <ulink url=" http://www.opencontent.org/openpub/" type="http">http://www.opencontent.org/openpub/</ulink> ) </para> </legalnotice> <title><application>GStreamer</application> Application Development Manual</title> </bookinfo> <!-- ############# Overview - part ############### --> <part id="overview"><title>Overview</title> <partintro> <para> <xref linkend="overview"/> gives you an overview of <application>GStreamer</application> design goals. <xref linkend="basic-concepts"/> rapidly covers the basics of <application>GStreamer</application> programming. In <xref linkend="build-app"/> we will move on to the examples. Since <application>GStreamer</application> 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>. For a gentle introduction to this system, you may wish to read the <emphasis><ulink url="http://www.gtk.org/tutorial/" type="http">GTK+ Tutorial</ulink></emphasis> or Eric Harlow's book <emphasis>Developing Linux Applications with GTK+ and GDK</emphasis>. </para> </partintro> <!-- ############ Introduction - chapter ############# --> &INTRO; &MOTIVATION; &GOALS; </part> <!-- ############ Basic concepts - part ############# --> <part id="basic-concepts"><title>Basic concepts</title> <partintro> <para> We will first describe the basics of <application>GStreamer</application> programming by introducing the different objects needed to create a media pipeline. </para> <para> We will use a visual representation of these objects so that we can visualize the more complex pipelines you will learn to build later on. </para> </partintro> <!-- ############ Basic concepts - chapter ############# --> &INIT; &ELEMENTS; &PADS; &PLUGINS; &LINKS; &BINS; &BUFFERS; &STATES; </part> <!-- ############ Building Apps - part ############# --> <part id="build-app"><title>Building an application</title> <partintro> <para> With the basic concepts out of the way, you're ready to start building a full-scale <application>GStreamer</application> application. </para> <para> We assume the reader is familiar with GTK+/GNOME programming. </para> </partintro> &HELLOWORLD; &FACTORIES; </part> <!-- ############ Advanced GStreamer - part ############# --> <part id="advanced"><title>Advanced <application>GStreamer</application> concepts</title> <partintro> <para> In this part we will cover the more advanced features of <application>GStreamer</application>. With the basics you learned in the prevous part you should be able to create a 'simple' pipeline. If you want more control over the media types and the pipeline you should use the more low-level features of <application>GStreamer</application>. </para> </partintro> &THREADS; &QUEUES; &COTHREADS; &SCHEDULERS; &CLOCKS; &DYNAMIC; &TYPEDETECTION; &AUTOPLUGGING; &HELLOWORLD2; &DPARAMS; </part> <!-- ############ XML in GStreamer - part ############# --> <part id="xml-gstreamer"><title>XML in <application>GStreamer</application></title> <partintro> <para> <application>GStreamer</application> has the possibility to serialize the pipelines you create using an XML format. You can load a previously created pipeline by loading the XML file. </para> </partintro> &XML; </part> <!-- ############ Appendices - part ############# --> <part id="appendices"> <title>Appendices</title> <partintro> <para> <application>GStreamer</application> comes prepackaged with a few programs, and some useful debugging options. </para> </partintro> &DEBUGGING; &PROGRAMS; &COMPONENTS; &GNOME; "ES; </part> </book>