<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML ><HEAD ><TITLE >Advanced Filter Concepts</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" TITLE="GStreamer Plugin Writer's Guide" HREF="index.html"><LINK REL="PREVIOUS" TITLE="Creating a Filter with a Filter Factory" HREF="chapter-building-filterfactory.html"><LINK REL="NEXT" TITLE="How scheduling works" HREF="chapter-loopbased-sched.html"></HEAD ><BODY CLASS="part" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" ><SPAN CLASS="application" >GStreamer</SPAN > Plugin Writer's Guide</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="chapter-building-filterfactory.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="chapter-loopbased-sched.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="PART" ><A NAME="part-advanced" ></A ><DIV CLASS="TITLEPAGE" ><H1 CLASS="title" >III. Advanced Filter Concepts</H1 ><DIV CLASS="PARTINTRO" ><A NAME="AEN581" ></A ><P > By now, you should be able to create basic filter elements that can receive and send data. This is the simple model that <SPAN CLASS="application" >GStreamer</SPAN > stands for. But <SPAN CLASS="application" >GStreamer</SPAN > 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 <SPAN CLASS="application" >GStreamer</SPAN > so easy to use for applications. </P ></DIV ><DIV CLASS="TOC" ><DL ><DT ><B >Table of Contents</B ></DT ><DT >11. <A HREF="chapter-loopbased-sched.html" >How scheduling works</A ></DT ><DD ><DL ><DT >11.1. <A HREF="chapter-loopbased-sched.html#section-sched-basic" >The Basic Scheduler</A ></DT ><DT >11.2. <A HREF="section-sched-opt.html" >The Optimal Scheduler</A ></DT ></DL ></DD ><DT >12. <A HREF="chapter-loopbased-loopfn.html" >How a loopfunc works</A ></DT ><DD ><DL ><DT >12.1. <A HREF="chapter-loopbased-loopfn.html#section-loopfn-multiinput" >Multi-Input Elements</A ></DT ><DT >12.2. <A HREF="section-loopfn-bytestream.html" >The Bytestream Object</A ></DT ><DT >12.3. <A HREF="section-loopbased-secnd.html" >Adding a second output</A ></DT ><DT >12.4. <A HREF="section-loopbased-modappl.html" >Modifying the test application</A ></DT ></DL ></DD ><DT >13. <A HREF="chapter-building-types.html" >Types and Properties</A ></DT ><DD ><DL ><DT >13.1. <A HREF="chapter-building-types.html#section-types-test" >Building a Simple Format for Testing</A ></DT ><DT >13.2. <A HREF="section-types-typefind.html" >Typefind Functions and Autoplugging</A ></DT ><DT >13.3. <A HREF="section-types-definitions.html" >List of Defined Types</A ></DT ></DL ></DD ><DT >14. <A HREF="chapter-advanced-request.html" >Request and Sometimes pads</A ></DT ><DD ><DL ><DT >14.1. <A HREF="chapter-advanced-request.html#section-reqpad-sometimes" >Sometimes pads</A ></DT ><DT >14.2. <A HREF="section-reqpad-request.html" >Request pads</A ></DT ></DL ></DD ><DT >15. <A HREF="chapter-advanced-clock.html" >Clocking</A ></DT ><DT >16. <A HREF="chapter-dparams.html" >Supporting Dynamic Parameters</A ></DT ><DD ><DL ><DT >16.1. <A HREF="chapter-dparams.html#section-dparams-compare" >Comparing Dynamic Parameters with GObject Properties</A ></DT ><DT >16.2. <A HREF="section-dparam-start.html" >Getting Started</A ></DT ><DT >16.3. <A HREF="section-dparam-define.html" >Defining Parameter Specificiations</A ></DT ><DD ><DL ><DT >16.3.1. <A HREF="section-dparam-define.html#section-dparam-direct" >Direct Method</A ></DT ><DT >16.3.2. <A HREF="section-dparam-define.html#section-dparam-callback" >Callback Method</A ></DT ><DT >16.3.3. <A HREF="section-dparam-define.html#section-dparam-array" >Array Method</A ></DT ></DL ></DD ><DT >16.4. <A HREF="chapter-dparam-loop.html" >The Data Processing Loop</A ></DT ><DD ><DL ><DT >16.4.1. <A HREF="chapter-dparam-loop.html#section-dparam-modes" >DParam Manager Modes</A ></DT ><DT >16.4.2. <A HREF="chapter-dparam-loop.html#section-dparam-audio-video" >DParam Manager Modes</A ></DT ></DL ></DD ></DL ></DD ><DT >17. <A HREF="chapter-advanced-midi.html" >MIDI</A ></DT ><DT >18. <A HREF="chapter-advanced-interfaces.html" >Interfaces</A ></DT ><DD ><DL ><DT >18.1. <A HREF="chapter-advanced-interfaces.html#section-iface-general" >How to Implement Interfaces</A ></DT ><DT >18.2. <A HREF="section-iface-mixer.html" >Mixer Interface</A ></DT ><DT >18.3. <A HREF="section-iface-tuner.html" >Tuner Interface</A ></DT ><DT >18.4. <A HREF="section-iface-colorbalance.html" >Color Balance Interface</A ></DT ><DT >18.5. <A HREF="section-iface-propprobe.html" >Property Probe Interface</A ></DT ><DT >18.6. <A HREF="section-iface-profile.html" >Profile Interface</A ></DT ><DT >18.7. <A HREF="section-iface-xoverlay.html" >X Overlay Interface</A ></DT ><DT >18.8. <A HREF="section-iface-navigation.html" >Navigation Interface</A ></DT ></DL ></DD ><DT >19. <A HREF="chapter-advanced-tagging.html" >Tagging (Metadata and Streaminfo)</A ></DT ><DD ><DL ><DT >19.1. <A HREF="chapter-advanced-tagging.html#section-tagging-read" >Reading Tags from Streams</A ></DT ><DT >19.2. <A HREF="section-tagging-write.html" >Writing Tags to Streams</A ></DT ></DL ></DD ><DT >20. <A HREF="chapter-advanced-events.html" >Events: Seeking, Navigation and More</A ></DT ><DD ><DL ><DT >20.1. <A HREF="chapter-advanced-events.html#section-events-downstream" >Downstream events</A ></DT ><DT >20.2. <A HREF="section-events-upstream.html" >Upstream events</A ></DT ><DT >20.3. <A HREF="section-events-definitions.html" >All Events Together</A ></DT ><DD ><DL ><DT >20.3.1. <A HREF="section-events-definitions.html#section-events-eos" >End of Stream (EOS)</A ></DT ><DT >20.3.2. <A HREF="section-events-definitions.html#section-events-flush" >Flush</A ></DT ><DT >20.3.3. <A HREF="section-events-definitions.html#section-events-discont" >Stream Discontinuity</A ></DT ><DT >20.3.4. <A HREF="section-events-definitions.html#section-events-seek" >Seek Request</A ></DT ><DT >20.3.5. <A HREF="section-events-definitions.html#section-events-filler" >Stream Filler</A ></DT ><DT >20.3.6. <A HREF="section-events-definitions.html#section-events-interrupt" >Interruption</A ></DT ><DT >20.3.7. <A HREF="section-events-definitions.html#section-events-nav" >Navigation</A ></DT ><DT >20.3.8. <A HREF="section-events-definitions.html#section-events-tag" >Tag (metadata)</A ></DT ></DL ></DD ></DL ></DD ></DL ></DIV ></DIV ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="chapter-building-filterfactory.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="chapter-loopbased-sched.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Creating a Filter with a Filter Factory</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" > </TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >How scheduling works</TD ></TR ></TABLE ></DIV ></BODY ></HTML >