<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML ><HEAD ><TITLE >Building a Filter</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="Mimetypes and Properties" HREF="section-basics-types.html"><LINK REL="NEXT" TITLE="Constructing the Boilerplate" HREF="chapter-building-boiler.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="section-basics-types.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="chapter-building-boiler.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="PART" ><A NAME="part-building" ></A ><DIV CLASS="TITLEPAGE" ><H1 CLASS="title" >II. Building a Filter</H1 ><DIV CLASS="PARTINTRO" ><A NAME="AEN323" ></A ><P > You are now ready to learn how to build a plugin. In this part of the guide, you will learn how to apply basic <SPAN CLASS="application" >GStreamer</SPAN > 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 <SPAN CLASS="QUOTE" >"ExampleFilter"</SPAN >. </P ><P > The example filter 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, <A HREF="part-advanced.html" >Advanced Filter Concepts</A >, you will be able to add even more functionality to your plugins. </P ><P > The example code used in this part of the guide can be found in <TT CLASS="filename" >examples/pwg/examplefilter/</TT > in your <SPAN CLASS="application" >GStreamer</SPAN > directory. </P ></DIV ><DIV CLASS="TOC" ><DL ><DT ><B >Table of Contents</B ></DT ><DT >3. <A HREF="chapter-building-boiler.html" >Constructing the Boilerplate</A ></DT ><DD ><DL ><DT >3.1. <A HREF="chapter-building-boiler.html#section-boiler-source" >Getting the GStreamer Plugin Templates</A ></DT ><DT >3.2. <A HREF="section-boiler-project-stamp.html" >Using the Project Stamp</A ></DT ><DT >3.3. <A HREF="section-boiler-examine.html" >Examining the Basic Code</A ></DT ><DT >3.4. <A HREF="section-boiler-details.html" >GstElementDetails</A ></DT ><DT >3.5. <A HREF="section-boiler-padtemplates.html" >GstStaticPadTemplate</A ></DT ><DT >3.6. <A HREF="section-boiler-constructors.html" >Constructor Functions</A ></DT ><DT >3.7. <A HREF="section-boiler-plugininit.html" >The plugin_init function</A ></DT ></DL ></DD ><DT >4. <A HREF="chapter-building-pads.html" >Specifying the pads</A ></DT ><DD ><DL ><DT >4.1. <A HREF="chapter-building-pads.html#section-pads-linkfn" >The link function</A ></DT ><DT >4.2. <A HREF="section-pads-getcapsfn.html" >The getcaps function</A ></DT ><DT >4.3. <A HREF="section-pads-explicitcaps.html" >Explicit caps</A ></DT ></DL ></DD ><DT >5. <A HREF="chapter-building-chainfn.html" >The chain function</A ></DT ><DT >6. <A HREF="chapter-statemanage-states.html" >What are states?</A ></DT ><DD ><DL ><DT >6.1. <A HREF="chapter-statemanage-states.html#section-statemanage-filters" >Mangaging filter state</A ></DT ></DL ></DD ><DT >7. <A HREF="chapter-building-args.html" >Adding Arguments</A ></DT ><DT >8. <A HREF="chapter-building-signals.html" >Signals</A ></DT ><DT >9. <A HREF="chapter-building-testapp.html" >Building a Test Application</A ></DT ><DT >10. <A HREF="chapter-building-filterfactory.html" >Creating a Filter with a Filter Factory</A ></DT ></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="section-basics-types.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-building-boiler.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Mimetypes and Properties</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" > </TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Constructing the Boilerplate</TD ></TR ></TABLE ></DIV ></BODY ></HTML >