<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>rtpjitterbuffer</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-rtpdtmfsrc.html" title="rtpdtmfsrc"> <link rel="next" href="gst-plugins-good-plugins-rtpmux.html" title="rtpmux"> <meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> <tr valign="middle"> <td><a accesskey="p" href="gst-plugins-good-plugins-rtpdtmfsrc.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> <td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> <th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> <td><a accesskey="n" href="gst-plugins-good-plugins-rtpmux.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> </tr> <tr><td colspan="5" class="shortcuts"> <a href="#gst-plugins-good-plugins-rtpjitterbuffer.synopsis" class="shortcut">Top</a> | <a href="#gst-plugins-good-plugins-rtpjitterbuffer.description" class="shortcut">Description</a> | <a href="#gst-plugins-good-plugins-rtpjitterbuffer.object-hierarchy" class="shortcut">Object Hierarchy</a> | <a href="#gst-plugins-good-plugins-rtpjitterbuffer.properties" class="shortcut">Properties</a> | <a href="#gst-plugins-good-plugins-rtpjitterbuffer.signals" class="shortcut">Signals</a> </td></tr> </table> <div class="refentry"> <a name="gst-plugins-good-plugins-rtpjitterbuffer"></a><div class="titlepage"></div> <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtpjitterbuffer.top_of_page"></a>rtpjitterbuffer</span></h2> <p>rtpjitterbuffer — A buffer that deals with network jitter and other transmission faults</p> </td> <td valign="top" align="right"></td> </tr></table></div> <div class="refsynopsisdiv"> <a name="gst-plugins-good-plugins-rtpjitterbuffer.synopsis"></a><h2>Synopsis</h2> <a name="GstRtpJitterBuffer"></a><pre class="synopsis">struct <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-struct" title="struct GstRtpJitterBuffer">GstRtpJitterBuffer</a>; </pre> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpjitterbuffer.object-hierarchy"></a><h2>Object Hierarchy</h2> <pre class="synopsis"> <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a> +----<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a> +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a> +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a> +----GstRtpJitterBuffer </pre> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpjitterbuffer.properties"></a><h2>Properties</h2> <pre class="synopsis"> "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--do-lost" title='The "do-lost" property'>do-lost</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--drop-on-latency" title='The "drop-on-latency" property'>drop-on-latency</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--latency" title='The "latency" property'>latency</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--ts-offset" title='The "ts-offset" property'>ts-offset</a>" <span class="type">gint64</span> : Read / Write "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--mode" title='The "mode" property'>mode</a>" <span class="type">RTPJitterBufferMode</span> : Read / Write "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--percent" title='The "percent" property'>percent</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--do-retransmission" title='The "do-retransmission" property'>do-retransmission</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-delay" title='The "rtx-delay" property'>rtx-delay</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-delay-reorder" title='The "rtx-delay-reorder" property'>rtx-delay-reorder</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-retry-period" title='The "rtx-retry-period" property'>rtx-retry-period</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-retry-timeout" title='The "rtx-retry-timeout" property'>rtx-retry-timeout</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write </pre> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpjitterbuffer.signals"></a><h2>Signals</h2> <pre class="synopsis"> "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-clear-pt-map" title='The "clear-pt-map" signal'>clear-pt-map</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a> "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-handle-sync" title='The "handle-sync" signal'>handle-sync</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a> "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-on-npt-stop" title='The "on-npt-stop" signal'>on-npt-stop</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a> "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-request-pt-map" title='The "request-pt-map" signal'>request-pt-map</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a> "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-set-active" title='The "set-active" signal'>set-active</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a> </pre> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpjitterbuffer.description"></a><h2>Description</h2> <p> This element reorders and removes duplicate RTP packets as they are received from a network source. </p> <p> The element needs the clock-rate of the RTP payload in order to estimate the delay. This information is obtained either from the caps on the sink pad or, when no caps are present, from the <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-request-pt-map" title='The "request-pt-map" signal'><span class="type">"request-pt-map"</span></a> signal. To clear the previous pt-map use the <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-clear-pt-map" title='The "clear-pt-map" signal'><span class="type">"clear-pt-map"</span></a> signal. </p> <p> The rtpjitterbuffer will wait for missing packets up to a configurable time limit using the <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--latency" title='The "latency" property'><span class="type">"latency"</span></a> property. Packets arriving too late are considered to be lost packets. If the <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--do-lost" title='The "do-lost" property'><span class="type">"do-lost"</span></a> property is set, lost packets will result in a custom serialized downstream event of name GstRTPPacketLost. The lost packet events are usually used by a depayloader or other element to create concealment data or some other logic to gracefully handle the missing packets. </p> <p> The jitterbuffer will use the DTS (or PTS if no DTS is set) of the incomming buffer and the rtptime inside the RTP packet to create a PTS on the outgoing buffer. </p> <p> The jitterbuffer can also be configured to send early retransmission events upstream by setting the <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--do-retransmission" title='The "do-retransmission" property'><span class="type">"do-retransmission"</span></a> property. In this mode, the jitterbuffer tries to estimate when a packet should arrive and sends a custom upstream event named GstRTPRetransmissionRequest when the packet is considered late. The initial expected packet arrival time is calculated as follows: </p> <p> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>If seqnum N arrived at time T, seqnum N+1 is expected to arrive at T + packet-spacing + <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-delay" title='The "rtx-delay" property'><span class="type">"rtx-delay"</span></a>. The packet spacing is calculated from the DTS (or PTS is no DTS) of two consecutive RTP packets with different rtptime.</p></li></ul></div> <p> </p> <p> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>If seqnum N0 arrived at time T0 and seqnum Nm arrived at time Tm, seqnum Ni is expected at time Ti = T0 + i*(Tm - T0)/(Nm - N0). Any previously scheduled timeout is overwritten.</p></li></ul></div> <p> </p> <p> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>If seqnum N arrived, all seqnum older than N - <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-delay-reorder" title='The "rtx-delay-reorder" property'><span class="type">"rtx-delay-reorder"</span></a> are considered late immediately. This is to request fast feedback for abonormally reorder packets before any of the previous timeouts is triggered.</p></li></ul></div> <p> </p> <p> A late packet triggers the GstRTPRetransmissionRequest custom upstream event. After the initial timeout expires and the retransmission event is sent, the timeout is scheduled for T + <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-retry-timeout" title='The "rtx-retry-timeout" property'><span class="type">"rtx-retry-timeout"</span></a>. If the missing packet did not arrive after <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-retry-timeout" title='The "rtx-retry-timeout" property'><span class="type">"rtx-retry-timeout"</span></a>, a new GstRTPRetransmissionRequest is sent upstream and the timeout is rescheduled again for T + <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-retry-timeout" title='The "rtx-retry-timeout" property'><span class="type">"rtx-retry-timeout"</span></a>. This repeats until <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-retry-period" title='The "rtx-retry-period" property'><span class="type">"rtx-retry-period"</span></a> elapsed, at which point no further retransmission requests are sent and the regular logic is performed to schedule a lost packet as discussed above. </p> <p> This element acts as a live element and so adds <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--latency" title='The "latency" property'><span class="type">"latency"</span></a> to the pipeline. </p> <p> This element will automatically be used inside rtpbin. </p> <p> </p> <div class="refsect2"> <a name="id-1.2.127.7.13.1"></a><h3>Example pipelines</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td class="listing_lines" align="right"><pre>1</pre></td> <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> rtspsrc location<span class="gtkdoc opt">=</span>rtsp<span class="gtkdoc opt">:</span><span class="gtkdoc slc">//192.168.1.133:8554/mpeg1or2AudioVideoTest ! rtpjitterbuffer ! rtpmpvdepay ! mpeg2dec ! xvimagesink</span></pre></td> </tr> </tbody> </table> </div> Connect to a streaming server and decode the MPEG video. The jitterbuffer is inserted into the pipeline to smooth out network jitter and to reorder the out-of-order RTP packets. </div> <p> </p> <p> Last reviewed on 2007-05-28 (0.10.5) </p> <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> <a name="id-1.2.127.7.15.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> <col> </colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> <td> <a class="link" href="gst-plugins-good-plugins-plugin-rtpmanager.html#plugin-rtpmanager">rtpmanager</a> </td> </tr> <tr> <td><p><span class="term">author</span></p></td> <td>Philippe Kalaf <philippe.kalaf@collabora.co.uk>, Wim Taymans <wim.taymans@gmail.com></td> </tr> <tr> <td><p><span class="term">class</span></p></td> <td>Filter/Network/RTP</td> </tr> </tbody> </table></div> </div> <hr> <div class="refsect2"> <a name="id-1.2.127.7.15.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> <col> </colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> <td>sink</td> </tr> <tr> <td><p><span class="term">direction</span></p></td> <td>sink</td> </tr> <tr> <td><p><span class="term">presence</span></p></td> <td>always</td> </tr> <tr> <td><p><span class="term">details</span></p></td> <td>application/x-rtp, clock-rate=(int)[ 1, 2147483647 ]</td> </tr> </tbody> </table></div> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> <col> </colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> <td>sink_rtcp</td> </tr> <tr> <td><p><span class="term">direction</span></p></td> <td>sink</td> </tr> <tr> <td><p><span class="term">presence</span></p></td> <td>request</td> </tr> <tr> <td><p><span class="term">details</span></p></td> <td>application/x-rtcp</td> </tr> </tbody> </table></div> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> <col> </colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> <td>src</td> </tr> <tr> <td><p><span class="term">direction</span></p></td> <td>source</td> </tr> <tr> <td><p><span class="term">presence</span></p></td> <td>always</td> </tr> <tr> <td><p><span class="term">details</span></p></td> <td>application/x-rtp</td> </tr> </tbody> </table></div> </div> </div> <p> </p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpjitterbuffer.details"></a><h2>Details</h2> <div class="refsect2"> <a name="GstRtpJitterBuffer-struct"></a><h3>struct GstRtpJitterBuffer</h3> <pre class="programlisting">struct GstRtpJitterBuffer;</pre> <p> Opaque jitterbuffer structure. </p> </div> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpjitterbuffer.property-details"></a><h2>Property Details</h2> <div class="refsect2"> <a name="GstRtpJitterBuffer--do-lost"></a><h3>The <code class="literal">"do-lost"</code> property</h3> <pre class="programlisting"> "do-lost" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre> <p>Send an event downstream when a packet is lost.</p> <p>Default value: FALSE</p> </div> <hr> <div class="refsect2"> <a name="GstRtpJitterBuffer--drop-on-latency"></a><h3>The <code class="literal">"drop-on-latency"</code> property</h3> <pre class="programlisting"> "drop-on-latency" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre> <p>Tells the jitterbuffer to never exceed the given latency in size.</p> <p>Default value: FALSE</p> </div> <hr> <div class="refsect2"> <a name="GstRtpJitterBuffer--latency"></a><h3>The <code class="literal">"latency"</code> property</h3> <pre class="programlisting"> "latency" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write</pre> <p>Amount of ms to buffer.</p> <p>Default value: 200</p> </div> <hr> <div class="refsect2"> <a name="GstRtpJitterBuffer--ts-offset"></a><h3>The <code class="literal">"ts-offset"</code> property</h3> <pre class="programlisting"> "ts-offset" <span class="type">gint64</span> : Read / Write</pre> <p>Adjust buffer timestamps with offset in nanoseconds.</p> <p>Default value: 0</p> </div> <hr> <div class="refsect2"> <a name="GstRtpJitterBuffer--mode"></a><h3>The <code class="literal">"mode"</code> property</h3> <pre class="programlisting"> "mode" <span class="type">RTPJitterBufferMode</span> : Read / Write</pre> <p>Control the buffering algorithm in use.</p> <p>Default value: Slave receiver to sender clock</p> </div> <hr> <div class="refsect2"> <a name="GstRtpJitterBuffer--percent"></a><h3>The <code class="literal">"percent"</code> property</h3> <pre class="programlisting"> "percent" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read</pre> <p>The buffer filled percent.</p> <p>Allowed values: [0,100]</p> <p>Default value: 0</p> </div> <hr> <div class="refsect2"> <a name="GstRtpJitterBuffer--do-retransmission"></a><h3>The <code class="literal">"do-retransmission"</code> property</h3> <pre class="programlisting"> "do-retransmission" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre> <p>Send retransmission events upstream when a packet is late.</p> <p>Default value: FALSE</p> </div> <hr> <div class="refsect2"> <a name="GstRtpJitterBuffer--rtx-delay"></a><h3>The <code class="literal">"rtx-delay"</code> property</h3> <pre class="programlisting"> "rtx-delay" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre> <p>Extra time in ms to wait before sending retransmission event (-1 automatic).</p> <p>Allowed values: >= G_MAXULONG</p> <p>Default value: 20</p> </div> <hr> <div class="refsect2"> <a name="GstRtpJitterBuffer--rtx-delay-reorder"></a><h3>The <code class="literal">"rtx-delay-reorder"</code> property</h3> <pre class="programlisting"> "rtx-delay-reorder" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre> <p>Sending retransmission event when this much reordering (-1 automatic).</p> <p>Allowed values: >= G_MAXULONG</p> <p>Default value: 3</p> </div> <hr> <div class="refsect2"> <a name="GstRtpJitterBuffer--rtx-retry-period"></a><h3>The <code class="literal">"rtx-retry-period"</code> property</h3> <pre class="programlisting"> "rtx-retry-period" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre> <p>Try to get a retransmission for this many ms (-1 automatic).</p> <p>Allowed values: >= G_MAXULONG</p> <p>Default value: 160</p> </div> <hr> <div class="refsect2"> <a name="GstRtpJitterBuffer--rtx-retry-timeout"></a><h3>The <code class="literal">"rtx-retry-timeout"</code> property</h3> <pre class="programlisting"> "rtx-retry-timeout" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre> <p>Retry sending a transmission event after this timeout in ms (-1 automatic).</p> <p>Allowed values: >= G_MAXULONG</p> <p>Default value: 40</p> </div> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpjitterbuffer.signal-details"></a><h2>Signal Details</h2> <div class="refsect2"> <a name="GstRtpJitterBuffer-clear-pt-map"></a><h3>The <code class="literal">"clear-pt-map"</code> signal</h3> <pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer"><span class="type">GstRtpJitterBuffer</span></a> *buffer, <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a></pre> <p> Invalidate the clock-rate as obtained with the <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-request-pt-map" title='The "request-pt-map" signal'><span class="type">"request-pt-map"</span></a> signal. </p> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> <col> </colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td> <td>the object which received the signal</td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td> <td>user data set when the signal handler was connected.</td> </tr> </tbody> </table></div> </div> <hr> <div class="refsect2"> <a name="GstRtpJitterBuffer-handle-sync"></a><h3>The <code class="literal">"handle-sync"</code> signal</h3> <pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer"><span class="type">GstRtpJitterBuffer</span></a> *buffer, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#GstStructure"><span class="type">GstStructure</span></a> *struct, <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre> <p> Be notified of new sync values. </p> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> <col> </colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td> <td>the object which received the signal</td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>struct</code></em> :</span></p></td> <td>a GstStructure containing sync values.</td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td> <td>user data set when the signal handler was connected.</td> </tr> </tbody> </table></div> </div> <hr> <div class="refsect2"> <a name="GstRtpJitterBuffer-on-npt-stop"></a><h3>The <code class="literal">"on-npt-stop"</code> signal</h3> <pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer"><span class="type">GstRtpJitterBuffer</span></a> *buffer, <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre> <p> Signal that the jitterbufer has pushed the RTP packet that corresponds to the npt-stop position. </p> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> <col> </colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td> <td>the object which received the signal</td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td> <td>user data set when the signal handler was connected.</td> </tr> </tbody> </table></div> </div> <hr> <div class="refsect2"> <a name="GstRtpJitterBuffer-request-pt-map"></a><h3>The <code class="literal">"request-pt-map"</code> signal</h3> <pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="returnvalue">GstCaps</span></a>* user_function (<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer"><span class="type">GstRtpJitterBuffer</span></a> *buffer, <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> pt, <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre> <p> Request the payload type as <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> for <em class="parameter"><code>pt</code></em>. </p> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> <col> </colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td> <td>the object which received the signal</td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>pt</code></em> :</span></p></td> <td>the pt</td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td> <td>user data set when the signal handler was connected.</td> </tr> </tbody> </table></div> </div> <hr> <div class="refsect2"> <a name="GstRtpJitterBuffer-set-active"></a><h3>The <code class="literal">"set-active"</code> signal</h3> <pre class="programlisting"><span class="returnvalue">guint64</span> user_function (<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer"><span class="type">GstRtpJitterBuffer</span></a> *buffer, <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> Returns, <span class="type">guint64</span> arg2, <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a></pre> <p> Start pushing out packets with the given base time. This signal is only useful in buffering mode. </p> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> <col> </colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td> <td>the object which received the signal</td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td> <td>user data set when the signal handler was connected.</td> </tr> <tr> <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> <td>the time of the last pushed packet.</td> </tr> </tbody> </table></div> <p class="since">Since 0.10.19</p> </div> </div> </div> <div class="footer"> <hr> Generated by GTK-Doc V1.19</div> </body> </html>