%image-entities; %version-entities; %url-entities; The code for this example is automatically extracted from the documentation and built under examples/manual in the GStreamer tarball. "> GStreamer"> ]> Wim Taymans wim.taymans@chello.be Steve Baker stevebaker_org@yahoo.co.uk Andy Wingo wingo@pobox.com Ronald S. Bultje rbultje@ronald.bitfreak.net 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 http://www.opencontent.org/opl.shtml). &GStreamer; Application Development Manual (&GST_VERSION;) Overview &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, CORBA), writing new applications is not always easy. This guide is intended to help you understand the &GStreamer; framework (version &GST_VERSION;) so you can develop applications based on it. The first chapters will focus on development of a simple audio player, with much effort going into helping you understand &GStreamer; concepts. Later chapters will go into more advanced topics related to media playback, but also at other forms of media processing (capture, editing, etc.). &INTRO; &MOTIVATION; &CONCEPTS; Basic Concepts In these chapters, we will discuss the basic concepts of &GStreamer; and the most-used objects, such as elements, pads and buffers. 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. You will get a first glance at the &GStreamer; API, which should be enough for building elementary applications. Later on in this part, you will also learn to build a basic command-line application. Note that this part will give a look into the low-level API and concepts of &GStreamer;. Once you're going to build applications, you might want to use higher-level APIs. Those will be discussed later on in this manual. &INIT; &ELEMENTS; &BINS; &PADS; &DATA; &HELLOWORLD; Advanced &GStreamer; concepts In this part we will cover the more advanced features of &GStreamer;. With the basics you learned in the previous part you should be able to create a simple application. However, &GStreamer; provides much more candy than just the basics of playing back audio files. In this chapter, you will learn more of the low-level features and internals of &GStreamer;, such as threads, scheduling, synchronization, metadata, interfaces and dynamic parameters. &QUERYEVENTS; &METADATA; &INTERFACES; &CLOCKS; &DPARAMS; &THREADS; &SCHEDULERS; &AUTOPLUGGING; Higher-level interfaces for &GStreamer; applications In the previous two parts, you have learned many of the internals and their corresponding low-level interfaces into &GStreamer; application programming. Many people will, however, not need so much control (and as much code), but will prefer to use a standard playback interface that does most of the difficult internals for them. In this chapter, we will introduce you into the concept of autopluggers, playback managing elements, XML-based pipelines and other such things. Those higher-level interfaces are intended to simplify &GStreamer;-based application programming. They do, however, also reduce the flexibility. It is up to the application developer to choose which interface he will want to use. &COMPONENTS; &XML; Appendices By now, you've learned all about the internals of &GStreamer; and application programming using the &GStreamer; framework. This part will go into some random bits that are useful to know if you're going to use &GStreamer; for serious application programming. It will touch upon things related to integration with popular desktop environments that we run on (GNOME, KDE, OS X, Windows), it will shortly explain how applications included with &GStreamer; can help making your life easier, and some information on debugging. &CHECKLIST; &INTEGRATION; &WIN32; "ES;