<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML ><HEAD ><TITLE >Different Types of Dynamic Parameter</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" TITLE="GStreamer Application Development Manual" HREF="index.html"><LINK REL="UP" TITLE="Dynamic Parameters" HREF="chapter-dparams.html"><LINK REL="PREVIOUS" TITLE="Changing Dynamic Parameter Values" HREF="section-dparams-changing.html"><LINK REL="NEXT" TITLE="XML in GStreamer" HREF="part-xml-gstreamer.html"></HEAD ><BODY CLASS="sect1" 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 > Application Development Manual</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="section-dparams-changing.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" >Chapter 30. Dynamic Parameters</TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="part-xml-gstreamer.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="sect1" ><H1 CLASS="sect1" ><A NAME="section-dparams-types" >30.4. Different Types of Dynamic Parameter</A ></H1 ><P > There are currently only two implementations of dparams so far. They are both for real-time use so should be run in the <TT CLASS="filename" >"synchronous"</TT > mode. </P ><DIV CLASS="sect2" ><H2 CLASS="sect2" ><A NAME="AEN1063" >30.4.1. GstDParam - the base dparam type</A ></H2 ><P > All dparam implementations will subclass from this type. It provides a basic implementation which simply propagates any value changes as soon as it can. A new instance can be created with the function <TT CLASS="filename" >GstDParam* gst_dparam_new (GType type)</TT >. It has the following object properties: </P ><P ></P ><UL ><LI ><P ><TT CLASS="filename" >"value_float"</TT > - the property to set and get if it is a float dparam </P ></LI ><LI ><P ><TT CLASS="filename" >"value_int"</TT > - the property to set and get if it is an integer dparam </P ></LI ><LI ><P ><TT CLASS="filename" >"value_int64"</TT > - the property to set and get if it is a 64 bit integer dparam </P ></LI ><LI ><P ><TT CLASS="filename" >"is_log"</TT > - readonly boolean which is TRUE if the param should be displayed on a log scale </P ></LI ><LI ><P ><TT CLASS="filename" >"is_rate"</TT > - readonly boolean which is TRUE if the value is a proportion of the sample rate. For example with a sample rate of 44100, 0.5 would be 22050 Hz and 0.25 would be 11025 Hz. </P ></LI ></UL ></DIV ><DIV CLASS="sect2" ><H2 CLASS="sect2" ><A NAME="AEN1083" >30.4.2. GstDParamSmooth - smoothing real-time dparam</A ></H2 ><P > Some parameter changes can create audible artifacts if they change too rapidly. The GstDParamSmooth implementation can greatly reduce these artifacts by limiting the rate at which the value can change. This is currently only supported for float dparams - the other types fall back to the default implementation. A new instance can be created with the function <TT CLASS="filename" >GstDParam* gst_dpsmooth_new (GType type)</TT >. It has the following object properties: </P ><P ></P ><UL ><LI ><P ><TT CLASS="filename" >"update_period"</TT > - an int64 value specifying the number nanoseconds between updates. This will be ignored in <TT CLASS="filename" >"synchronous"</TT > mode since the buffer size dictates the update period. </P ></LI ><LI ><P ><TT CLASS="filename" >"slope_time"</TT > - an int64 value specifying the time period to use in the maximum slope calculation </P ></LI ><LI ><P ><TT CLASS="filename" >"slope_delta_float"</TT > - a float specifying the amount a float value can change in the given slope_time. </P ></LI ></UL ><P > Audible artifacts may not be completely eliminated by using this dparam. The only way to eliminate artifacts such as "zipper noise" would be for the element to implement its required dparams using the array method. This would allow dparams to change parameters at the sample rate which should eliminate any artifacts. </P ></DIV ><DIV CLASS="sect2" ><H2 CLASS="sect2" ><A NAME="AEN1099" >30.4.3. Timelined dparams</A ></H2 ><P > A yet-to-be-implemented subclass of GstDParam will add an API which allows the creation and manipulation of points on a timeline. This subclass will also provide a dparam implementation which uses linear interpolation between these points to find the dparam value at any given time. Further subclasses can extend this functionality to implement more exotic interpolation algorithms such as splines. </P ></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-dparams-changing.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="part-xml-gstreamer.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Changing Dynamic Parameter Values</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="chapter-dparams.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >XML in <SPAN CLASS="application" >GStreamer</SPAN ></TD ></TR ></TABLE ></DIV ></BODY ></HTML >