1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2<html> 3<head> 4<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5<title>multiqueue: GStreamer Core Plugins 1.0 Plugins Reference Manual</title> 6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> 7<link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual"> 8<link rel="up" href="ch01.html" title="gstreamer Elements"> 9<link rel="prev" href="gstreamer-plugins-input-selector.html" title="input-selector"> 10<link rel="next" href="gstreamer-plugins-output-selector.html" title="output-selector"> 11<meta name="generator" content="GTK-Doc V1.28 (XML mode)"> 12<link rel="stylesheet" href="style.css" type="text/css"> 13</head> 14<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> 15<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle"> 16<td width="100%" align="left" class="shortcuts"> 17<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 18 <a href="#gstreamer-plugins-multiqueue.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 19 <a href="#gstreamer-plugins-multiqueue.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span> 20 <a href="#gstreamer-plugins-multiqueue.properties" class="shortcut">Properties</a></span><span id="nav_signals"> <span class="dim">|</span> 21 <a href="#gstreamer-plugins-multiqueue.signals" class="shortcut">Signals</a></span> 22</td> 23<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> 24<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td> 25<td><a accesskey="p" href="gstreamer-plugins-input-selector.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> 26<td><a accesskey="n" href="gstreamer-plugins-output-selector.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> 27</tr></table> 28<div class="refentry"> 29<a name="gstreamer-plugins-multiqueue"></a><div class="titlepage"></div> 30<div class="refnamediv"><table width="100%"><tr> 31<td valign="top"> 32<h2><span class="refentrytitle"><a name="gstreamer-plugins-multiqueue.top_of_page"></a>multiqueue</span></h2> 33<p>multiqueue</p> 34</td> 35<td class="gallery_image" valign="top" align="right"></td> 36</tr></table></div> 37<div class="refsect1"> 38<a name="gstreamer-plugins-multiqueue.properties"></a><h2>Properties</h2> 39<div class="informaltable"><table class="informaltable" border="0"> 40<colgroup> 41<col width="150px" class="properties_type"> 42<col width="300px" class="properties_name"> 43<col width="200px" class="properties_flags"> 44</colgroup> 45<tbody> 46<tr> 47<td class="property_type"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td> 48<td class="property_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--extra-size-buffers" title="The “extra-size-buffers” property">extra-size-buffers</a></td> 49<td class="property_flags">Read / Write</td> 50</tr> 51<tr> 52<td class="property_type"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td> 53<td class="property_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--extra-size-bytes" title="The “extra-size-bytes” property">extra-size-bytes</a></td> 54<td class="property_flags">Read / Write</td> 55</tr> 56<tr> 57<td class="property_type"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint64"><span class="type">guint64</span></a></td> 58<td class="property_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--extra-size-time" title="The “extra-size-time” property">extra-size-time</a></td> 59<td class="property_flags">Read / Write</td> 60</tr> 61<tr> 62<td class="property_type"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td> 63<td class="property_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--high-percent" title="The “high-percent” property">high-percent</a></td> 64<td class="property_flags">Read / Write</td> 65</tr> 66<tr> 67<td class="property_type"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td> 68<td class="property_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--low-percent" title="The “low-percent” property">low-percent</a></td> 69<td class="property_flags">Read / Write</td> 70</tr> 71<tr> 72<td class="property_type"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td> 73<td class="property_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--max-size-buffers" title="The “max-size-buffers” property">max-size-buffers</a></td> 74<td class="property_flags">Read / Write</td> 75</tr> 76<tr> 77<td class="property_type"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td> 78<td class="property_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--max-size-bytes" title="The “max-size-bytes” property">max-size-bytes</a></td> 79<td class="property_flags">Read / Write</td> 80</tr> 81<tr> 82<td class="property_type"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint64"><span class="type">guint64</span></a></td> 83<td class="property_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--max-size-time" title="The “max-size-time” property">max-size-time</a></td> 84<td class="property_flags">Read / Write</td> 85</tr> 86<tr> 87<td class="property_type"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td> 88<td class="property_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--sync-by-running-time" title="The “sync-by-running-time” property">sync-by-running-time</a></td> 89<td class="property_flags">Read / Write</td> 90</tr> 91<tr> 92<td class="property_type"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td> 93<td class="property_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--use-buffering" title="The “use-buffering” property">use-buffering</a></td> 94<td class="property_flags">Read / Write</td> 95</tr> 96<tr> 97<td class="property_type"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint64"><span class="type">guint64</span></a></td> 98<td class="property_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--unlinked-cache-time" title="The “unlinked-cache-time” property">unlinked-cache-time</a></td> 99<td class="property_flags">Read / Write</td> 100</tr> 101<tr> 102<td class="property_type"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td> 103<td class="property_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--use-interleave" title="The “use-interleave” property">use-interleave</a></td> 104<td class="property_flags">Read / Write</td> 105</tr> 106<tr> 107<td class="property_type"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td> 108<td class="property_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--high-watermark" title="The “high-watermark” property">high-watermark</a></td> 109<td class="property_flags">Read / Write</td> 110</tr> 111<tr> 112<td class="property_type"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td> 113<td class="property_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--low-watermark" title="The “low-watermark” property">low-watermark</a></td> 114<td class="property_flags">Read / Write</td> 115</tr> 116<tr> 117<td class="property_type"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint64"><span class="type">guint64</span></a></td> 118<td class="property_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--min-interleave-time" title="The “min-interleave-time” property">min-interleave-time</a></td> 119<td class="property_flags">Read / Write</td> 120</tr> 121</tbody> 122</table></div> 123</div> 124<div class="refsect1"> 125<a name="gstreamer-plugins-multiqueue.signals"></a><h2>Signals</h2> 126<div class="informaltable"><table class="informaltable" border="0"> 127<colgroup> 128<col width="150px" class="signals_return"> 129<col width="300px" class="signals_name"> 130<col width="200px" class="signals_flags"> 131</colgroup> 132<tbody> 133<tr> 134<td class="signal_type"><span class="returnvalue">void</span></td> 135<td class="signal_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue-overrun" title="The “overrun” signal">overrun</a></td> 136<td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobject/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></td> 137</tr> 138<tr> 139<td class="signal_type"><span class="returnvalue">void</span></td> 140<td class="signal_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue-underrun" title="The “underrun” signal">underrun</a></td> 141<td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobject/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></td> 142</tr> 143</tbody> 144</table></div> 145</div> 146<a name="GstMultiQueue"></a><div class="refsect1"> 147<a name="gstreamer-plugins-multiqueue.other"></a><h2>Types and Values</h2> 148<div class="informaltable"><table class="informaltable" width="100%" border="0"> 149<colgroup> 150<col width="150px" class="name"> 151<col class="description"> 152</colgroup> 153<tbody><tr> 154<td class="datatype_keyword">struct</td> 155<td class="function_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue-struct" title="struct GstMultiQueue">GstMultiQueue</a></td> 156</tr></tbody> 157</table></div> 158</div> 159<div class="refsect1"> 160<a name="gstreamer-plugins-multiqueue.object-hierarchy"></a><h2>Object Hierarchy</h2> 161<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a> 162 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a> 163 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a> 164 <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a> 165 <span class="lineart">╰──</span> GstMultiQueue 166</pre> 167</div> 168<div class="refsect1"> 169<a name="gstreamer-plugins-multiqueue.description"></a><h2>Description</h2> 170<p>Multiqueue is similar to a normal <a class="link" href="gstreamer-plugins-queue.html#GstQueue"><span class="type">GstQueue</span></a> with the following additional 171features:</p> 172<p>1) Multiple streamhandling</p> 173<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>The element handles queueing data on more than one stream at once. To 174achieve such a feature it has request sink pads (sink<code class="literal">u</code>) and 175'sometimes' src pads (src<code class="literal">u</code>). When requesting a given sinkpad with <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#gst-element-request-pad"><code class="function">gst_element_request_pad()</code></a>, 176the associated srcpad for that stream will be created. 177Example: requesting sink1 will generate src1.</p></li></ul></div> 178<p>2) Non-starvation on multiple stream</p> 179<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>If more than one stream is used with the element, the streams' queues 180will be dynamically grown (up to a limit), in order to ensure that no 181stream is risking data starvation. This guarantees that at any given 182time there are at least N bytes queued and available for each individual 183stream. If an EOS event comes through a srcpad, the associated queue will be 184considered as 'not-empty' in the queue-size-growing algorithm.</p></li></ul></div> 185<p>3) Non-linked srcpads graceful handling</p> 186<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>In order to better support dynamic switching between streams, the multiqueue 187(unlike the current GStreamer queue) continues to push buffers on non-linked 188pads rather than shutting down. In addition, to prevent a non-linked stream from very quickly consuming all 189available buffers and thus 'racing ahead' of the other streams, the element 190must ensure that buffers and inlined events for a non-linked stream are pushed 191in the same order as they were received, relative to the other streams 192controlled by the element. This means that a buffer cannot be pushed to a 193non-linked pad any sooner than buffers in any other stream which were received 194before it.</p></li></ul></div> 195<p>Data is queued until one of the limits specified by the 196<a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--max-size-buffers" title="The “max-size-buffers” property"><span class="type">“max-size-buffers”</span></a>, <a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--max-size-bytes" title="The “max-size-bytes” property"><span class="type">“max-size-bytes”</span></a> and/or 197<a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--max-size-time" title="The “max-size-time” property"><span class="type">“max-size-time”</span></a> properties has been reached. Any attempt to push 198more buffers into the queue will block the pushing thread until more space 199becomes available. <a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--extra-size-buffers" title="The “extra-size-buffers” property"><span class="type">“extra-size-buffers”</span></a>,</p> 200<p><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--extra-size-bytes" title="The “extra-size-bytes” property"><span class="type">“extra-size-bytes”</span></a> and <a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--extra-size-time" title="The “extra-size-time” property"><span class="type">“extra-size-time”</span></a> are 201currently unused.</p> 202<p>The default queue size limits are 5 buffers, 10MB of data, or 203two second worth of data, whichever is reached first. Note that the number 204of buffers will dynamically grow depending on the fill level of 205other queues.</p> 206<p>The <a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue-underrun" title="The “underrun” signal"><span class="type">“underrun”</span></a> signal is emitted when all of the queues 207are empty. The <a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue-overrun" title="The “overrun” signal"><span class="type">“overrun”</span></a> signal is emitted when one of the 208queues is filled. 209Both signals are emitted from the context of the streaming thread.</p> 210<p>When using <a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--sync-by-running-time" title="The “sync-by-running-time” property"><span class="type">“sync-by-running-time”</span></a> the unlinked streams will 211be throttled by the highest running-time of linked streams. This allows 212further relinking of those unlinked streams without them being in the 213future (i.e. to achieve gapless playback). 214When dealing with streams which have got different consumption requirements 215downstream (ex: video decoders which will consume more buffer (in time) than 216audio decoders), it is recommended to group streams of the same type 217by using the pad "group-id" property. This will further throttle streams 218in time within that group.</p> 219<div class="refsynopsisdiv"> 220<h2>Synopsis</h2> 221<div class="refsect2"> 222<a name="id-1.2.15.8.14.1"></a><h3>Element Information</h3> 223<div class="variablelist"><table border="0" class="variablelist"> 224<colgroup> 225<col align="left" valign="top"> 226<col> 227</colgroup> 228<tbody> 229<tr> 230<td><p><span class="term">plugin</span></p></td> 231<td> 232 <a class="link" href="gstreamer-plugins-plugin-coreelements.html#plugin-coreelements">coreelements</a> 233 </td> 234</tr> 235<tr> 236<td><p><span class="term">author</span></p></td> 237<td>Edward Hervey <edward@fluendo.com></td> 238</tr> 239<tr> 240<td><p><span class="term">class</span></p></td> 241<td>Generic</td> 242</tr> 243</tbody> 244</table></div> 245</div> 246<hr> 247<div class="refsect2"> 248<a name="id-1.2.15.8.14.2"></a><h3>Element Pads</h3> 249<div class="variablelist"><table border="0" class="variablelist"> 250<colgroup> 251<col align="left" valign="top"> 252<col> 253</colgroup> 254<tbody> 255<tr> 256<td><p><span class="term">name</span></p></td> 257<td>sink_%u</td> 258</tr> 259<tr> 260<td><p><span class="term">direction</span></p></td> 261<td>sink</td> 262</tr> 263<tr> 264<td><p><span class="term">presence</span></p></td> 265<td>request</td> 266</tr> 267<tr> 268<td><p><span class="term">details</span></p></td> 269<td>ANY</td> 270</tr> 271</tbody> 272</table></div> 273<div class="variablelist"><table border="0" class="variablelist"> 274<colgroup> 275<col align="left" valign="top"> 276<col> 277</colgroup> 278<tbody> 279<tr> 280<td><p><span class="term">name</span></p></td> 281<td>src_%u</td> 282</tr> 283<tr> 284<td><p><span class="term">direction</span></p></td> 285<td>source</td> 286</tr> 287<tr> 288<td><p><span class="term">presence</span></p></td> 289<td>sometimes</td> 290</tr> 291<tr> 292<td><p><span class="term">details</span></p></td> 293<td>ANY</td> 294</tr> 295</tbody> 296</table></div> 297</div> 298</div> 299</div> 300<div class="refsect1"> 301<a name="gstreamer-plugins-multiqueue.functions_details"></a><h2>Functions</h2> 302<p></p> 303</div> 304<div class="refsect1"> 305<a name="gstreamer-plugins-multiqueue.other_details"></a><h2>Types and Values</h2> 306<div class="refsect2"> 307<a name="GstMultiQueue-struct"></a><h3>struct GstMultiQueue</h3> 308<pre class="programlisting">struct GstMultiQueue;</pre> 309<p>Opaque <a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue"><span class="type">GstMultiQueue</span></a> structure.</p> 310</div> 311</div> 312<div class="refsect1"> 313<a name="gstreamer-plugins-multiqueue.property-details"></a><h2>Property Details</h2> 314<div class="refsect2"> 315<a name="GstMultiQueue--extra-size-buffers"></a><h3>The <code class="literal">“extra-size-buffers”</code> property</h3> 316<pre class="programlisting"> “extra-size-buffers” <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre> 317<p>Amount of buffers the queues can grow if one of them is empty (0=disable) (NOT IMPLEMENTED).</p> 318<p>Flags: Read / Write</p> 319<p>Default value: 5</p> 320</div> 321<hr> 322<div class="refsect2"> 323<a name="GstMultiQueue--extra-size-bytes"></a><h3>The <code class="literal">“extra-size-bytes”</code> property</h3> 324<pre class="programlisting"> “extra-size-bytes” <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre> 325<p>Amount of data the queues can grow if one of them is empty (bytes, 0=disable) (NOT IMPLEMENTED).</p> 326<p>Flags: Read / Write</p> 327<p>Default value: 10485760</p> 328</div> 329<hr> 330<div class="refsect2"> 331<a name="GstMultiQueue--extra-size-time"></a><h3>The <code class="literal">“extra-size-time”</code> property</h3> 332<pre class="programlisting"> “extra-size-time” <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint64"><span class="type">guint64</span></a></pre> 333<p>Amount of time the queues can grow if one of them is empty (in ns, 0=disable) (NOT IMPLEMENTED).</p> 334<p>Flags: Read / Write</p> 335<p>Default value: 3000000000</p> 336</div> 337<hr> 338<div class="refsect2"> 339<a name="GstMultiQueue--high-percent"></a><h3>The <code class="literal">“high-percent”</code> property</h3> 340<pre class="programlisting"> “high-percent” <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre> 341<p>High threshold percent for buffering to finish.</p> 342<p>Flags: Read / Write</p> 343<p>Allowed values: [0,100]</p> 344<p>Default value: 99</p> 345</div> 346<hr> 347<div class="refsect2"> 348<a name="GstMultiQueue--low-percent"></a><h3>The <code class="literal">“low-percent”</code> property</h3> 349<pre class="programlisting"> “low-percent” <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre> 350<p>Low threshold percent for buffering to start.</p> 351<p>Flags: Read / Write</p> 352<p>Allowed values: [0,100]</p> 353<p>Default value: 1</p> 354</div> 355<hr> 356<div class="refsect2"> 357<a name="GstMultiQueue--max-size-buffers"></a><h3>The <code class="literal">“max-size-buffers”</code> property</h3> 358<pre class="programlisting"> “max-size-buffers” <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre> 359<p>Max. number of buffers in the queue (0=disable).</p> 360<p>Flags: Read / Write</p> 361<p>Default value: 5</p> 362</div> 363<hr> 364<div class="refsect2"> 365<a name="GstMultiQueue--max-size-bytes"></a><h3>The <code class="literal">“max-size-bytes”</code> property</h3> 366<pre class="programlisting"> “max-size-bytes” <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre> 367<p>Max. amount of data in the queue (bytes, 0=disable).</p> 368<p>Flags: Read / Write</p> 369<p>Default value: 10485760</p> 370</div> 371<hr> 372<div class="refsect2"> 373<a name="GstMultiQueue--max-size-time"></a><h3>The <code class="literal">“max-size-time”</code> property</h3> 374<pre class="programlisting"> “max-size-time” <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint64"><span class="type">guint64</span></a></pre> 375<p>Max. amount of data in the queue (in ns, 0=disable).</p> 376<p>Flags: Read / Write</p> 377<p>Default value: 2000000000</p> 378</div> 379<hr> 380<div class="refsect2"> 381<a name="GstMultiQueue--sync-by-running-time"></a><h3>The <code class="literal">“sync-by-running-time”</code> property</h3> 382<pre class="programlisting"> “sync-by-running-time” <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre> 383<p>If enabled multiqueue will synchronize deactivated or not-linked streams 384to the activated and linked streams by taking the running time. 385Otherwise multiqueue will synchronize the deactivated or not-linked 386streams by keeping the order in which buffers and events arrived compared 387to active and linked streams.</p> 388<p>Flags: Read / Write</p> 389<p>Default value: FALSE</p> 390</div> 391<hr> 392<div class="refsect2"> 393<a name="GstMultiQueue--use-buffering"></a><h3>The <code class="literal">“use-buffering”</code> property</h3> 394<pre class="programlisting"> “use-buffering” <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre> 395<p>Enable the buffering option in multiqueue so that BUFFERING messages are 396emitted based on low-/high-percent thresholds.</p> 397<p>Flags: Read / Write</p> 398<p>Default value: FALSE</p> 399</div> 400<hr> 401<div class="refsect2"> 402<a name="GstMultiQueue--unlinked-cache-time"></a><h3>The <code class="literal">“unlinked-cache-time”</code> property</h3> 403<pre class="programlisting"> “unlinked-cache-time” <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint64"><span class="type">guint64</span></a></pre> 404<p>Extra buffering in time for unlinked streams (if 'sync-by-running-time').</p> 405<p>Flags: Read / Write</p> 406<p>Default value: 250000000</p> 407</div> 408<hr> 409<div class="refsect2"> 410<a name="GstMultiQueue--use-interleave"></a><h3>The <code class="literal">“use-interleave”</code> property</h3> 411<pre class="programlisting"> “use-interleave” <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre> 412<p>Adjust time limits based on input interleave.</p> 413<p>Flags: Read / Write</p> 414<p>Default value: FALSE</p> 415</div> 416<hr> 417<div class="refsect2"> 418<a name="GstMultiQueue--high-watermark"></a><h3>The <code class="literal">“high-watermark”</code> property</h3> 419<pre class="programlisting"> “high-watermark” <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre> 420<p>High threshold watermark for buffering to finish.</p> 421<p>Flags: Read / Write</p> 422<p>Allowed values: [0,1]</p> 423<p>Default value: 0.99</p> 424<p class="since">Since: 1.10</p> 425</div> 426<hr> 427<div class="refsect2"> 428<a name="GstMultiQueue--low-watermark"></a><h3>The <code class="literal">“low-watermark”</code> property</h3> 429<pre class="programlisting"> “low-watermark” <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre> 430<p>Low threshold watermark for buffering to start.</p> 431<p>Flags: Read / Write</p> 432<p>Allowed values: [0,1]</p> 433<p>Default value: 0.01</p> 434<p class="since">Since: 1.10</p> 435</div> 436<hr> 437<div class="refsect2"> 438<a name="GstMultiQueue--min-interleave-time"></a><h3>The <code class="literal">“min-interleave-time”</code> property</h3> 439<pre class="programlisting"> “min-interleave-time” <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint64"><span class="type">guint64</span></a></pre> 440<p>Minimum extra buffering for deinterleaving (size of the queues) when use-interleave=true.</p> 441<p>Flags: Read / Write</p> 442<p>Default value: 250000000</p> 443</div> 444</div> 445<div class="refsect1"> 446<a name="gstreamer-plugins-multiqueue.signal-details"></a><h2>Signal Details</h2> 447<div class="refsect2"> 448<a name="GstMultiQueue-overrun"></a><h3>The <code class="literal">“overrun”</code> signal</h3> 449<pre class="programlisting"><span class="returnvalue">void</span> 450user_function (<a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue"><span class="type">GstMultiQueue</span></a> *multiqueue, 451 <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> 452<p>Reports that one of the queues in the multiqueue is full (overrun). 453A queue is full if the total amount of data inside it (num-buffers, time, 454size) is higher than the boundary values which can be set through the 455GObject properties.</p> 456<p>This can be used as an indicator of pre-roll.</p> 457<div class="refsect3"> 458<a name="GstMultiQueue-overrun.parameters"></a><h4>Parameters</h4> 459<div class="informaltable"><table class="informaltable" width="100%" border="0"> 460<colgroup> 461<col width="150px" class="parameters_name"> 462<col class="parameters_description"> 463<col width="200px" class="parameters_annotations"> 464</colgroup> 465<tbody> 466<tr> 467<td class="parameter_name"><p>multiqueue</p></td> 468<td class="parameter_description"><p>the multiqueue instance</p></td> 469<td class="parameter_annotations"> </td> 470</tr> 471<tr> 472<td class="parameter_name"><p>user_data</p></td> 473<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td> 474<td class="parameter_annotations"> </td> 475</tr> 476</tbody> 477</table></div> 478</div> 479<p>Flags: <a href="/usr/share/gtk-doc/html/gobject/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p> 480</div> 481<hr> 482<div class="refsect2"> 483<a name="GstMultiQueue-underrun"></a><h3>The <code class="literal">“underrun”</code> signal</h3> 484<pre class="programlisting"><span class="returnvalue">void</span> 485user_function (<a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue"><span class="type">GstMultiQueue</span></a> *multiqueue, 486 <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> 487<p>This signal is emitted from the streaming thread when there is 488no data in any of the queues inside the multiqueue instance (underrun).</p> 489<p>This indicates either starvation or EOS from the upstream data sources.</p> 490<div class="refsect3"> 491<a name="GstMultiQueue-underrun.parameters"></a><h4>Parameters</h4> 492<div class="informaltable"><table class="informaltable" width="100%" border="0"> 493<colgroup> 494<col width="150px" class="parameters_name"> 495<col class="parameters_description"> 496<col width="200px" class="parameters_annotations"> 497</colgroup> 498<tbody> 499<tr> 500<td class="parameter_name"><p>multiqueue</p></td> 501<td class="parameter_description"><p>the multiqueue instance</p></td> 502<td class="parameter_annotations"> </td> 503</tr> 504<tr> 505<td class="parameter_name"><p>user_data</p></td> 506<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td> 507<td class="parameter_annotations"> </td> 508</tr> 509</tbody> 510</table></div> 511</div> 512<p>Flags: <a href="/usr/share/gtk-doc/html/gobject/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p> 513</div> 514</div> 515<div class="refsect1"> 516<a name="gstreamer-plugins-multiqueue.see-also"></a><h2>See Also</h2> 517<p><a class="link" href="gstreamer-plugins-queue.html#GstQueue"><span class="type">GstQueue</span></a></p> 518</div> 519</div> 520<div class="footer"> 521<hr>Generated by GTK-Doc V1.28</div> 522</body> 523</html>