blob: 6e267b853dbce8ceab92a0fa1bbb8a5f546dd7b2 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>multiqueue: GStreamer Core Plugins 1.0 Plugins Reference Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="GStreamer Core Plugins 1.0 Plugins Reference Manual">
<link rel="up" href="ch01.html" title="gstreamer Elements">
<link rel="prev" href="gstreamer-plugins-input-selector.html" title="input-selector">
<link rel="next" href="gstreamer-plugins-output-selector.html" title="output-selector">
<meta name="generator" content="GTK-Doc V1.25 (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="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
<a href="#gstreamer-plugins-multiqueue.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
<a href="#gstreamer-plugins-multiqueue.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
<a href="#gstreamer-plugins-multiqueue.properties" class="shortcut">Properties</a></span><span id="nav_signals">  <span class="dim">|</span> 
<a href="#gstreamer-plugins-multiqueue.signals" class="shortcut">Signals</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="gstreamer-plugins-input-selector.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="gstreamer-plugins-output-selector.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="gstreamer-plugins-multiqueue"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gstreamer-plugins-multiqueue.top_of_page"></a>multiqueue</span></h2>
<p>multiqueue</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
<a name="gstreamer-plugins-multiqueue.properties"></a><h2>Properties</h2>
<div class="informaltable"><table class="informaltable" border="0">
<colgroup>
<col width="150px" class="properties_type">
<col width="300px" class="properties_name">
<col width="200px" class="properties_flags">
</colgroup>
<tbody>
<tr>
<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
<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>
<td class="property_flags">Read / Write</td>
</tr>
<tr>
<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
<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>
<td class="property_flags">Read / Write</td>
</tr>
<tr>
<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint64"><span class="type">guint64</span></a></td>
<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>
<td class="property_flags">Read / Write</td>
</tr>
<tr>
<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
<td class="property_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--high-percent" title="The “high-percent” property">high-percent</a></td>
<td class="property_flags">Read / Write</td>
</tr>
<tr>
<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
<td class="property_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--low-percent" title="The “low-percent” property">low-percent</a></td>
<td class="property_flags">Read / Write</td>
</tr>
<tr>
<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
<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>
<td class="property_flags">Read / Write</td>
</tr>
<tr>
<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
<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>
<td class="property_flags">Read / Write</td>
</tr>
<tr>
<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint64"><span class="type">guint64</span></a></td>
<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>
<td class="property_flags">Read / Write</td>
</tr>
<tr>
<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
<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>
<td class="property_flags">Read / Write</td>
</tr>
<tr>
<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
<td class="property_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--use-buffering" title="The “use-buffering” property">use-buffering</a></td>
<td class="property_flags">Read / Write</td>
</tr>
<tr>
<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint64"><span class="type">guint64</span></a></td>
<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>
<td class="property_flags">Read / Write</td>
</tr>
<tr>
<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
<td class="property_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--use-interleave" title="The “use-interleave” property">use-interleave</a></td>
<td class="property_flags">Read / Write</td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="gstreamer-plugins-multiqueue.signals"></a><h2>Signals</h2>
<div class="informaltable"><table class="informaltable" border="0">
<colgroup>
<col width="150px" class="signals_return">
<col width="300px" class="signals_name">
<col width="200px" class="signals_flags">
</colgroup>
<tbody>
<tr>
<td class="signal_type"><span class="returnvalue">void</span></td>
<td class="signal_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue-overrun" title="The “overrun” signal">overrun</a></td>
<td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></td>
</tr>
<tr>
<td class="signal_type"><span class="returnvalue">void</span></td>
<td class="signal_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue-underrun" title="The “underrun” signal">underrun</a></td>
<td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></td>
</tr>
</tbody>
</table></div>
</div>
<a name="GstMultiQueue"></a><div class="refsect1">
<a name="gstreamer-plugins-multiqueue.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="name">
<col class="description">
</colgroup>
<tbody><tr>
<td class="datatype_keyword">struct</td>
<td class="function_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue-struct" title="struct GstMultiQueue">GstMultiQueue</a></td>
</tr></tbody>
</table></div>
</div>
<div class="refsect1">
<a name="gstreamer-plugins-multiqueue.object-hierarchy"></a><h2>Object Hierarchy</h2>
<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
<span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
<span class="lineart">╰──</span> <a href="../html/GstObject.html#GstObject-struct">GstObject</a>
<span class="lineart">╰──</span> <a href="../html/GstElement.html#GstElement-struct">GstElement</a>
<span class="lineart">╰──</span> GstMultiQueue
</pre>
</div>
<div class="refsect1">
<a name="gstreamer-plugins-multiqueue.description"></a><h2>Description</h2>
<div class="refsect2">
<a name="id-1.2.14.8.2"></a><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
features:
</p>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem"><div class="itemizedlist">
<p class="title"><b>Multiple streamhandling</b></p>
<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
achieve such a feature it has request sink pads (sinku) and
'sometimes' src pads (srcu).
</p>
<p>
When requesting a given sinkpad with <a href="../html/GstElement.html#gst-element-request-pad"><code class="function">gst_element_request_pad()</code></a>,
the associated srcpad for that stream will be created.
Example: requesting sink1 will generate src1.
</p>
</li></ul>
</div></li>
<li class="listitem"><div class="itemizedlist">
<p class="title"><b>Non-starvation on multiple streams</b></p>
<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
will be dynamically grown (up to a limit), in order to ensure that no
stream is risking data starvation. This guarantees that at any given
time there are at least N bytes queued and available for each individual
stream.
</p>
<p>
If an EOS event comes through a srcpad, the associated queue will be
considered as 'not-empty' in the queue-size-growing algorithm.
</p>
</li></ul>
</div></li>
<li class="listitem"><div class="itemizedlist">
<p class="title"><b>Non-linked srcpads graceful handling</b></p>
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<p>
In order to better support dynamic switching between streams, the multiqueue
(unlike the current GStreamer queue) continues to push buffers on non-linked
pads rather than shutting down.
</p>
<p>
In addition, to prevent a non-linked stream from very quickly consuming all
available buffers and thus 'racing ahead' of the other streams, the element
must ensure that buffers and inlined events for a non-linked stream are pushed
in the same order as they were received, relative to the other streams
controlled by the element. This means that a buffer cannot be pushed to a
non-linked pad any sooner than buffers in any other stream which were received
before it.
</p>
</li></ul>
</div></li>
</ol></div>
<p>
</p>
<p>
Data is queued until one of the limits specified by the
<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
<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
more buffers into the queue will block the pushing thread until more space
becomes 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>
<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
currently unused.
</p>
<p>
The default queue size limits are 5 buffers, 10MB of data, or
two second worth of data, whichever is reached first. Note that the number
of buffers will dynamically grow depending on the fill level of
other queues.
</p>
<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
are 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
queues is filled.
Both signals are emitted from the context of the streaming thread.
</p>
<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
be throttled by the highest running-time of linked streams. This allows
further relinking of those unlinked streams without them being in the
future (i.e. to achieve gapless playback).
When dealing with streams which have got different consumption requirements
downstream (ex: video decoders which will consume more buffer (in time) than
audio decoders), it is recommended to group streams of the same type
by using the pad "group-id" property. This will further throttle streams
in time within that group.
</p>
</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
<a name="id-1.2.14.8.3.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="gstreamer-plugins-plugin-coreelements.html#plugin-coreelements">coreelements</a>
</td>
</tr>
<tr>
<td><p><span class="term">author</span></p></td>
<td>Edward Hervey &lt;edward@fluendo.com&gt;</td>
</tr>
<tr>
<td><p><span class="term">class</span></p></td>
<td>Generic</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2">
<a name="id-1.2.14.8.3.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_%u</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>ANY</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_%u</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>sometimes</td>
</tr>
<tr>
<td><p><span class="term">details</span></p></td>
<td>ANY</td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
<div class="refsect1">
<a name="gstreamer-plugins-multiqueue.functions_details"></a><h2>Functions</h2>
<p></p>
</div>
<div class="refsect1">
<a name="gstreamer-plugins-multiqueue.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="GstMultiQueue-struct"></a><h3>struct GstMultiQueue</h3>
<pre class="programlisting">struct GstMultiQueue;</pre>
<p>Opaque <a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue"><span class="type">GstMultiQueue</span></a> structure.</p>
</div>
</div>
<div class="refsect1">
<a name="gstreamer-plugins-multiqueue.property-details"></a><h2>Property Details</h2>
<div class="refsect2">
<a name="GstMultiQueue--extra-size-buffers"></a><h3>The <code class="literal">“extra-size-buffers”</code> property</h3>
<pre class="programlisting"> “extra-size-buffers” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
<p>Amount of buffers the queues can grow if one of them is empty (0=disable) (NOT IMPLEMENTED).</p>
<p>Flags: Read / Write</p>
<p>Default value: 5</p>
</div>
<hr>
<div class="refsect2">
<a name="GstMultiQueue--extra-size-bytes"></a><h3>The <code class="literal">“extra-size-bytes”</code> property</h3>
<pre class="programlisting"> “extra-size-bytes” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
<p>Amount of data the queues can grow if one of them is empty (bytes, 0=disable) (NOT IMPLEMENTED).</p>
<p>Flags: Read / Write</p>
<p>Default value: 10485760</p>
</div>
<hr>
<div class="refsect2">
<a name="GstMultiQueue--extra-size-time"></a><h3>The <code class="literal">“extra-size-time”</code> property</h3>
<pre class="programlisting"> “extra-size-time” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint64"><span class="type">guint64</span></a></pre>
<p>Amount of time the queues can grow if one of them is empty (in ns, 0=disable) (NOT IMPLEMENTED).</p>
<p>Flags: Read / Write</p>
<p>Default value: 3000000000</p>
</div>
<hr>
<div class="refsect2">
<a name="GstMultiQueue--high-percent"></a><h3>The <code class="literal">“high-percent”</code> property</h3>
<pre class="programlisting"> “high-percent” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
<p>High threshold percent for buffering to finish.</p>
<p>Flags: Read / Write</p>
<p>Allowed values: [0,100]</p>
<p>Default value: 99</p>
</div>
<hr>
<div class="refsect2">
<a name="GstMultiQueue--low-percent"></a><h3>The <code class="literal">“low-percent”</code> property</h3>
<pre class="programlisting"> “low-percent” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
<p>Low threshold percent for buffering to start.</p>
<p>Flags: Read / Write</p>
<p>Allowed values: [0,100]</p>
<p>Default value: 10</p>
</div>
<hr>
<div class="refsect2">
<a name="GstMultiQueue--max-size-buffers"></a><h3>The <code class="literal">“max-size-buffers”</code> property</h3>
<pre class="programlisting"> “max-size-buffers” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
<p>Max. number of buffers in the queue (0=disable).</p>
<p>Flags: Read / Write</p>
<p>Default value: 5</p>
</div>
<hr>
<div class="refsect2">
<a name="GstMultiQueue--max-size-bytes"></a><h3>The <code class="literal">“max-size-bytes”</code> property</h3>
<pre class="programlisting"> “max-size-bytes” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
<p>Max. amount of data in the queue (bytes, 0=disable).</p>
<p>Flags: Read / Write</p>
<p>Default value: 10485760</p>
</div>
<hr>
<div class="refsect2">
<a name="GstMultiQueue--max-size-time"></a><h3>The <code class="literal">“max-size-time”</code> property</h3>
<pre class="programlisting"> “max-size-time” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint64"><span class="type">guint64</span></a></pre>
<p>Max. amount of data in the queue (in ns, 0=disable).</p>
<p>Flags: Read / Write</p>
<p>Default value: 2000000000</p>
</div>
<hr>
<div class="refsect2">
<a name="GstMultiQueue--sync-by-running-time"></a><h3>The <code class="literal">“sync-by-running-time”</code> property</h3>
<pre class="programlisting"> “sync-by-running-time” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
<p>If enabled multiqueue will synchronize deactivated or not-linked streams
to the activated and linked streams by taking the running time.
Otherwise multiqueue will synchronize the deactivated or not-linked
streams by keeping the order in which buffers and events arrived compared
to active and linked streams.</p>
<p>Flags: Read / Write</p>
<p>Default value: FALSE</p>
</div>
<hr>
<div class="refsect2">
<a name="GstMultiQueue--use-buffering"></a><h3>The <code class="literal">“use-buffering”</code> property</h3>
<pre class="programlisting"> “use-buffering” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
<p>Enable the buffering option in multiqueue so that BUFFERING messages are
emitted based on low-/high-percent thresholds.</p>
<p>Flags: Read / Write</p>
<p>Default value: FALSE</p>
</div>
<hr>
<div class="refsect2">
<a name="GstMultiQueue--unlinked-cache-time"></a><h3>The <code class="literal">“unlinked-cache-time”</code> property</h3>
<pre class="programlisting"> “unlinked-cache-time” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint64"><span class="type">guint64</span></a></pre>
<p>Extra buffering in time for unlinked streams (if 'sync-by-running-time').</p>
<p>Flags: Read / Write</p>
<p>Default value: 250000000</p>
</div>
<hr>
<div class="refsect2">
<a name="GstMultiQueue--use-interleave"></a><h3>The <code class="literal">“use-interleave”</code> property</h3>
<pre class="programlisting"> “use-interleave” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
<p>Adjust time limits based on input interleave.</p>
<p>Flags: Read / Write</p>
<p>Default value: FALSE</p>
</div>
</div>
<div class="refsect1">
<a name="gstreamer-plugins-multiqueue.signal-details"></a><h2>Signal Details</h2>
<div class="refsect2">
<a name="GstMultiQueue-overrun"></a><h3>The <code class="literal">“overrun”</code> signal</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
user_function (<a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue"><span class="type">GstMultiQueue</span></a> *multiqueue,
<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre>
<p>Reports that one of the queues in the multiqueue is full (overrun).
A queue is full if the total amount of data inside it (num-buffers, time,
size) is higher than the boundary values which can be set through the
GObject properties.</p>
<p>This can be used as an indicator of pre-roll.</p>
<div class="refsect3">
<a name="GstMultiQueue-overrun.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>multiqueue</p></td>
<td class="parameter_description"><p>the multiqueue instance</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>user_data</p></td>
<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
</div>
<hr>
<div class="refsect2">
<a name="GstMultiQueue-underrun"></a><h3>The <code class="literal">“underrun”</code> signal</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
user_function (<a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue"><span class="type">GstMultiQueue</span></a> *multiqueue,
<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre>
<p>This signal is emitted from the streaming thread when there is
no data in any of the queues inside the multiqueue instance (underrun).</p>
<p>This indicates either starvation or EOS from the upstream data sources.</p>
<div class="refsect3">
<a name="GstMultiQueue-underrun.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>multiqueue</p></td>
<td class="parameter_description"><p>the multiqueue instance</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>user_data</p></td>
<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
</div>
</div>
<div class="refsect1">
<a name="gstreamer-plugins-multiqueue.see-also"></a><h2>See Also</h2>
<p><a class="link" href="gstreamer-plugins-queue.html#GstQueue"><span class="type">GstQueue</span></a></p>
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
</body>
</html>