~ubuntu-branches/ubuntu/trusty/gstreamer1.0/trusty-proposed

« back to all changes in this revision

Viewing changes to docs/libs/html/GstBaseSink.html

  • Committer: Package Import Robot
  • Author(s): Sebastian Dröge
  • Date: 2012-10-08 09:59:20 UTC
  • mfrom: (1.1.7)
  • Revision ID: package-import@ubuntu.com-20121008095920-3k2vlenl0zf6lu7i
Tags: 1.0.1-1
* New upstream stable release:
  + debian/libgstreamer.symbols:
    - Add new symbols.

Show diffs side-by-side

added added

removed removed

Lines of Context:
35
35
<div class="refnamediv"><table width="100%"><tr>
36
36
<td valign="top">
37
37
<h2><span class="refentrytitle"><a name="GstBaseSink.top_of_page"></a>GstBaseSink</span></h2>
38
 
<p>GstBaseSink</p>
 
38
<p>GstBaseSink — Base class for sink elements</p>
39
39
</td>
40
40
<td valign="top" align="right"></td>
41
41
</tr></table></div>
49
49
<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="GstBaseSink.html#gst-base-sink-query-latency" title="gst_base_sink_query_latency ()">gst_base_sink_query_latency</a>         (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>,
50
50
                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> *live</code></em>,
51
51
                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> *upstream_live</code></em>,
52
 
                                                         <em class="parameter"><code><a href="../gstreamer-1.0/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> *min_latency</code></em>,
53
 
                                                         <em class="parameter"><code><a href="../gstreamer-1.0/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> *max_latency</code></em>);
54
 
<a href="../gstreamer-1.0/GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>        <a class="link" href="GstBaseSink.html#gst-base-sink-get-latency" title="gst_base_sink_get_latency ()">gst_base_sink_get_latency</a>           (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>);
55
 
<a href="../gstreamer-1.0/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>       <a class="link" href="GstBaseSink.html#gst-base-sink-do-preroll" title="gst_base_sink_do_preroll ()">gst_base_sink_do_preroll</a>            (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>,
56
 
                                                         <em class="parameter"><code><a href="../gstreamer-1.0/gstreamer-GstMiniObject.html#GstMiniObject"><span class="type">GstMiniObject</span></a> *obj</code></em>);
57
 
<a href="../gstreamer-1.0/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>       <a class="link" href="GstBaseSink.html#gst-base-sink-wait-preroll" title="gst_base_sink_wait_preroll ()">gst_base_sink_wait_preroll</a>          (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>);
58
 
<a href="../gstreamer-1.0/GstClock.html#GstClockReturn"><span class="returnvalue">GstClockReturn</span></a>      <a class="link" href="GstBaseSink.html#gst-base-sink-wait-clock" title="gst_base_sink_wait_clock ()">gst_base_sink_wait_clock</a>            (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>,
59
 
                                                         <em class="parameter"><code><a href="../gstreamer-1.0/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> time</code></em>,
60
 
                                                         <em class="parameter"><code><a href="../gstreamer-1.0/GstClock.html#GstClockTimeDiff"><span class="type">GstClockTimeDiff</span></a> *jitter</code></em>);
 
52
                                                         <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> *min_latency</code></em>,
 
53
                                                         <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> *max_latency</code></em>);
 
54
<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>        <a class="link" href="GstBaseSink.html#gst-base-sink-get-latency" title="gst_base_sink_get_latency ()">gst_base_sink_get_latency</a>           (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>);
 
55
<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>       <a class="link" href="GstBaseSink.html#gst-base-sink-do-preroll" title="gst_base_sink_do_preroll ()">gst_base_sink_do_preroll</a>            (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>,
 
56
                                                         <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstMiniObject.html#GstMiniObject"><span class="type">GstMiniObject</span></a> *obj</code></em>);
 
57
<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>       <a class="link" href="GstBaseSink.html#gst-base-sink-wait-preroll" title="gst_base_sink_wait_preroll ()">gst_base_sink_wait_preroll</a>          (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>);
 
58
<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockReturn"><span class="returnvalue">GstClockReturn</span></a>      <a class="link" href="GstBaseSink.html#gst-base-sink-wait-clock" title="gst_base_sink_wait_clock ()">gst_base_sink_wait_clock</a>            (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>,
 
59
                                                         <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> time</code></em>,
 
60
                                                         <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTimeDiff"><span class="type">GstClockTimeDiff</span></a> *jitter</code></em>);
61
61
<span class="returnvalue">void</span>                <a class="link" href="GstBaseSink.html#gst-base-sink-set-sync" title="gst_base_sink_set_sync ()">gst_base_sink_set_sync</a>              (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>,
62
62
                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> sync</code></em>);
63
63
<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="GstBaseSink.html#gst-base-sink-get-sync" title="gst_base_sink_get_sync ()">gst_base_sink_get_sync</a>              (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>);
71
71
                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> enabled</code></em>);
72
72
<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="GstBaseSink.html#gst-base-sink-is-async-enabled" title="gst_base_sink_is_async_enabled ()">gst_base_sink_is_async_enabled</a>      (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>);
73
73
<span class="returnvalue">void</span>                <a class="link" href="GstBaseSink.html#gst-base-sink-set-ts-offset" title="gst_base_sink_set_ts_offset ()">gst_base_sink_set_ts_offset</a>         (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>,
74
 
                                                         <em class="parameter"><code><a href="../gstreamer-1.0/GstClock.html#GstClockTimeDiff"><span class="type">GstClockTimeDiff</span></a> offset</code></em>);
75
 
<a href="../gstreamer-1.0/GstClock.html#GstClockTimeDiff"><span class="returnvalue">GstClockTimeDiff</span></a>    <a class="link" href="GstBaseSink.html#gst-base-sink-get-ts-offset" title="gst_base_sink_get_ts_offset ()">gst_base_sink_get_ts_offset</a>         (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>);
 
74
                                                         <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTimeDiff"><span class="type">GstClockTimeDiff</span></a> offset</code></em>);
 
75
<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTimeDiff"><span class="returnvalue">GstClockTimeDiff</span></a>    <a class="link" href="GstBaseSink.html#gst-base-sink-get-ts-offset" title="gst_base_sink_get_ts_offset ()">gst_base_sink_get_ts_offset</a>         (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>);
76
76
<span class="returnvalue">void</span>                <a class="link" href="GstBaseSink.html#gst-base-sink-set-render-delay" title="gst_base_sink_set_render_delay ()">gst_base_sink_set_render_delay</a>      (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>,
77
 
                                                         <em class="parameter"><code><a href="../gstreamer-1.0/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> delay</code></em>);
78
 
<a href="../gstreamer-1.0/GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>        <a class="link" href="GstBaseSink.html#gst-base-sink-get-render-delay" title="gst_base_sink_get_render_delay ()">gst_base_sink_get_render_delay</a>      (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>);
79
 
<a href="../gstreamer-1.0/gstreamer-GstSample.html#GstSample"><span class="returnvalue">GstSample</span></a> *         <a class="link" href="GstBaseSink.html#gst-base-sink-get-last-sample" title="gst_base_sink_get_last_sample ()">gst_base_sink_get_last_sample</a>       (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>);
 
77
                                                         <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> delay</code></em>);
 
78
<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>        <a class="link" href="GstBaseSink.html#gst-base-sink-get-render-delay" title="gst_base_sink_get_render_delay ()">gst_base_sink_get_render_delay</a>      (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>);
 
79
<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstSample.html#GstSample"><span class="returnvalue">GstSample</span></a> *         <a class="link" href="GstBaseSink.html#gst-base-sink-get-last-sample" title="gst_base_sink_get_last_sample ()">gst_base_sink_get_last_sample</a>       (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>);
80
80
<span class="returnvalue">void</span>                <a class="link" href="GstBaseSink.html#gst-base-sink-set-blocksize" title="gst_base_sink_set_blocksize ()">gst_base_sink_set_blocksize</a>         (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>,
81
81
                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> blocksize</code></em>);
82
82
<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>               <a class="link" href="GstBaseSink.html#gst-base-sink-get-blocksize" title="gst_base_sink_get_blocksize ()">gst_base_sink_get_blocksize</a>         (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>);
99
99
<pre class="synopsis">
100
100
  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
101
101
   +----<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
102
 
         +----<a href="../gstreamer-1.0/GstObject.html">GstObject</a>
103
 
               +----<a href="../gstreamer-1.0/GstElement.html">GstElement</a>
 
102
         +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
 
103
               +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
104
104
                     +----GstBaseSink
105
105
</pre>
106
106
</div>
110
110
  "<a class="link" href="GstBaseSink.html#GstBaseSink--async" title='The "async" property'>async</a>"                    <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
111
111
  "<a class="link" href="GstBaseSink.html#GstBaseSink--blocksize" title='The "blocksize" property'>blocksize</a>"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write
112
112
  "<a class="link" href="GstBaseSink.html#GstBaseSink--enable-last-sample" title='The "enable-last-sample" property'>enable-last-sample</a>"       <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
113
 
  "<a class="link" href="GstBaseSink.html#GstBaseSink--last-sample" title='The "last-sample" property'>last-sample</a>"              <a href="../gstreamer-1.0/gstreamer-GstSample.html#GstSample"><span class="type">GstSample</span></a>*            : Read
 
113
  "<a class="link" href="GstBaseSink.html#GstBaseSink--last-sample" title='The "last-sample" property'>last-sample</a>"              <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstSample.html#GstSample"><span class="type">GstSample</span></a>*            : Read
114
114
  "<a class="link" href="GstBaseSink.html#GstBaseSink--max-lateness" title='The "max-lateness" property'>max-lateness</a>"             <span class="type">gint64</span>                : Read / Write
115
115
  "<a class="link" href="GstBaseSink.html#GstBaseSink--qos" title='The "qos" property'>qos</a>"                      <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
116
116
  "<a class="link" href="GstBaseSink.html#GstBaseSink--render-delay" title='The "render-delay" property'>render-delay</a>"             <span class="type">guint64</span>               : Read / Write
121
121
</div>
122
122
<div class="refsect1">
123
123
<a name="GstBaseSink.description"></a><h2>Description</h2>
 
124
<p>
 
125
<a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> is the base class for sink elements in GStreamer, such as
 
126
xvimagesink or filesink. It is a layer on top of <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> that provides a
 
127
simplified interface to plugin writers. <a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> handles many details
 
128
for you, for example: preroll, clock synchronization, state changes,
 
129
activation in push or pull mode, and queries.
 
130
</p>
 
131
<p>
 
132
In most cases, when writing sink elements, there is no need to implement
 
133
class methods from <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> or to set functions on pads, because the
 
134
<a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> infrastructure should be sufficient.
 
135
</p>
 
136
<p>
 
137
<a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> provides support for exactly one sink pad, which should be
 
138
named "sink". A sink implementation (subclass of <a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a>) should
 
139
install a pad template in its class_init function, like so:
 
140
</p>
 
141
<div class="informalexample">
 
142
  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
 
143
    <tbody>
 
144
      <tr>
 
145
        <td class="listing_lines" align="right"><pre>1
 
146
2
 
147
3
 
148
4
 
149
5
 
150
6
 
151
7
 
152
8
 
153
9
 
154
10
 
155
11
 
156
12
 
157
13
 
158
14
 
159
15
 
160
16</pre></td>
 
161
        <td class="listing_code"><pre class="programlisting"><span class="gtkdoc kwb">static void</span>
 
162
<span class="function">my_element_class_init</span> <span class="gtkdoc opt">(</span>GstMyElementClass <span class="gtkdoc opt">*</span>klass<span class="gtkdoc opt">)</span>
 
163
<span class="gtkdoc opt">{</span>
 
164
  GstElementClass <span class="gtkdoc opt">*</span>gstelement_class <span class="gtkdoc opt">=</span> <span class="function">GST_ELEMENT_CLASS</span> <span class="gtkdoc opt">(</span>klass<span class="gtkdoc opt">);</span>
 
165
 
 
166
  <span class="gtkdoc slc">// sinktemplate should be a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPadTemplate.html#GstStaticPadTemplate">GstStaticPadTemplate</a> with direction</span>
 
167
  <span class="gtkdoc slc">// <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-PAD-SINK:CAPS">GST_PAD_SINK</a> and name &quot;sink&quot;</span>
 
168
  <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-class-add-pad-template">gst_element_class_add_pad_template</a></span> <span class="gtkdoc opt">(</span>gstelement_class<span class="gtkdoc opt">,</span>
 
169
      <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPadTemplate.html#gst-static-pad-template-get">gst_static_pad_template_get</a></span> <span class="gtkdoc opt">(&amp;</span>sinktemplate<span class="gtkdoc opt">));</span>
 
170
 
 
171
  <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-class-set-static-metadata">gst_element_class_set_static_metadata</a></span> <span class="gtkdoc opt">(</span>gstelement_class<span class="gtkdoc opt">,</span>
 
172
      <span class="string">&quot;Sink name&quot;</span><span class="gtkdoc opt">,</span>
 
173
      <span class="string">&quot;Sink&quot;</span><span class="gtkdoc opt">,</span>
 
174
      <span class="string">&quot;My Sink element&quot;</span><span class="gtkdoc opt">,</span>
 
175
      <span class="string">&quot;The author &lt;my.sink&#64;my.email&gt;&quot;</span><span class="gtkdoc opt">);</span>
 
176
<span class="gtkdoc opt">}</span></pre></td>
 
177
      </tr>
 
178
    </tbody>
 
179
  </table>
 
180
</div>
 
181
 
 
182
<p>
 
183
</p>
 
184
<p>
 
185
<a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> will handle the prerolling correctly. This means that it will
 
186
return <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#GST-STATE-CHANGE-ASYNC:CAPS"><span class="type">GST_STATE_CHANGE_ASYNC</span></a> from a state change to PAUSED until the first
 
187
buffer arrives in this element. The base class will call the
 
188
<a class="link" href="GstBaseSink.html#GstBaseSinkClass.preroll"><code class="function">GstBaseSinkClass.preroll()</code></a> vmethod with this preroll buffer and will then
 
189
commit the state change to the next asynchronously pending state.
 
190
</p>
 
191
<p>
 
192
When the element is set to PLAYING, <a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> will synchronise on the
 
193
clock using the times returned from <a class="link" href="GstBaseSink.html#GstBaseSinkClass.get-times"><code class="function">GstBaseSinkClass.get_times()</code></a>. If this
 
194
function returns <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GST-CLOCK-TIME-NONE:CAPS"><span class="type">GST_CLOCK_TIME_NONE</span></a> for the start time, no synchronisation
 
195
will be done. Synchronisation can be disabled entirely by setting the object
 
196
<a class="link" href="GstBaseSink.html#GstBaseSink--sync" title='The "sync" property'><span class="type">"sync"</span></a> property to <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.
 
197
</p>
 
198
<p>
 
199
After synchronisation the virtual method <a class="link" href="GstBaseSink.html#GstBaseSinkClass.render"><code class="function">GstBaseSinkClass.render()</code></a> will be
 
200
called. Subclasses should minimally implement this method.
 
201
</p>
 
202
<p>
 
203
Subclasses that synchronise on the clock in the <a class="link" href="GstBaseSink.html#GstBaseSinkClass.render"><code class="function">GstBaseSinkClass.render()</code></a>
 
204
method are supported as well. These classes typically receive a buffer in
 
205
the render method and can then potentially block on the clock while
 
206
rendering. A typical example is an audiosink.
 
207
These subclasses can use <a class="link" href="GstBaseSink.html#gst-base-sink-wait-preroll" title="gst_base_sink_wait_preroll ()"><code class="function">gst_base_sink_wait_preroll()</code></a> to perform the
 
208
blocking wait.
 
209
</p>
 
210
<p>
 
211
Upon receiving the EOS event in the PLAYING state, <a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> will wait
 
212
for the clock to reach the time indicated by the stop time of the last
 
213
<a class="link" href="GstBaseSink.html#GstBaseSinkClass.get-times"><code class="function">GstBaseSinkClass.get_times()</code></a> call before posting an EOS message. When the
 
214
element receives EOS in PAUSED, preroll completes, the event is queued and an
 
215
EOS message is posted when going to PLAYING.
 
216
</p>
 
217
<p>
 
218
<a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> will internally use the <span class="type">GST_EVENT_NEWSEGMENT</span> events to schedule
 
219
synchronisation and clipping of buffers. Buffers that fall completely outside
 
220
of the current segment are dropped. Buffers that fall partially in the
 
221
segment are rendered (and prerolled). Subclasses should do any subbuffer
 
222
clipping themselves when needed.
 
223
</p>
 
224
<p>
 
225
<a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> will by default report the current playback position in
 
226
<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GST-FORMAT-TIME:CAPS"><span class="type">GST_FORMAT_TIME</span></a> based on the current clock time and segment information.
 
227
If no clock has been set on the element, the query will be forwarded
 
228
upstream.
 
229
</p>
 
230
<p>
 
231
The <a class="link" href="GstBaseSink.html#GstBaseSinkClass.set-caps"><code class="function">GstBaseSinkClass.set_caps()</code></a> function will be called when the subclass
 
232
should configure itself to process a specific media type.
 
233
</p>
 
234
<p>
 
235
The <a class="link" href="GstBaseSink.html#GstBaseSinkClass.start"><code class="function">GstBaseSinkClass.start()</code></a> and <a class="link" href="GstBaseSink.html#GstBaseSinkClass.stop"><code class="function">GstBaseSinkClass.stop()</code></a> virtual methods
 
236
will be called when resources should be allocated. Any 
 
237
<a class="link" href="GstBaseSink.html#GstBaseSinkClass.preroll"><code class="function">GstBaseSinkClass.preroll()</code></a>, <a class="link" href="GstBaseSink.html#GstBaseSinkClass.render"><code class="function">GstBaseSinkClass.render()</code></a> and
 
238
<a class="link" href="GstBaseSink.html#GstBaseSinkClass.set-caps"><code class="function">GstBaseSinkClass.set_caps()</code></a> function will be called between the
 
239
<a class="link" href="GstBaseSink.html#GstBaseSinkClass.start"><code class="function">GstBaseSinkClass.start()</code></a> and <a class="link" href="GstBaseSink.html#GstBaseSinkClass.stop"><code class="function">GstBaseSinkClass.stop()</code></a> calls.
 
240
</p>
 
241
<p>
 
242
The <a class="link" href="GstBaseSink.html#GstBaseSinkClass.event"><code class="function">GstBaseSinkClass.event()</code></a> virtual method will be called when an event is
 
243
received by <a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a>. Normally this method should only be overriden by
 
244
very specific elements (such as file sinks) which need to handle the
 
245
newsegment event specially.
 
246
</p>
 
247
<p>
 
248
The <a class="link" href="GstBaseSink.html#GstBaseSinkClass.unlock"><code class="function">GstBaseSinkClass.unlock()</code></a> method is called when the elements should
 
249
unblock any blocking operations they perform in the
 
250
<a class="link" href="GstBaseSink.html#GstBaseSinkClass.render"><code class="function">GstBaseSinkClass.render()</code></a> method. This is mostly useful when the
 
251
<a class="link" href="GstBaseSink.html#GstBaseSinkClass.render"><code class="function">GstBaseSinkClass.render()</code></a> method performs a blocking write on a file
 
252
descriptor, for example.
 
253
</p>
 
254
<p>
 
255
The <a class="link" href="GstBaseSink.html#GstBaseSink--max-lateness" title='The "max-lateness" property'><span class="type">"max-lateness"</span></a> property affects how the sink deals with
 
256
buffers that arrive too late in the sink. A buffer arrives too late in the
 
257
sink when the presentation time (as a combination of the last segment, buffer
 
258
timestamp and element base_time) plus the duration is before the current
 
259
time of the clock.
 
260
If the frame is later than max-lateness, the sink will drop the buffer
 
261
without calling the render method.
 
262
This feature is disabled if sync is disabled, the
 
263
<a class="link" href="GstBaseSink.html#GstBaseSinkClass.get-times"><code class="function">GstBaseSinkClass.get_times()</code></a> method does not return a valid start time or
 
264
max-lateness is set to -1 (the default).
 
265
Subclasses can use <a class="link" href="GstBaseSink.html#gst-base-sink-set-max-lateness" title="gst_base_sink_set_max_lateness ()"><code class="function">gst_base_sink_set_max_lateness()</code></a> to configure the
 
266
max-lateness value.
 
267
</p>
 
268
<p>
 
269
The <a class="link" href="GstBaseSink.html#GstBaseSink--qos" title='The "qos" property'><span class="type">"qos"</span></a> property will enable the quality-of-service features of
 
270
the basesink which gather statistics about the real-time performance of the
 
271
clock synchronisation. For each buffer received in the sink, statistics are
 
272
gathered and a QOS event is sent upstream with these numbers. This
 
273
information can then be used by upstream elements to reduce their processing
 
274
rate, for example.
 
275
</p>
 
276
<p>
 
277
The <a class="link" href="GstBaseSink.html#GstBaseSink--async" title='The "async" property'><span class="type">"async"</span></a> property can be used to instruct the sink to never
 
278
perform an ASYNC state change. This feature is mostly usable when dealing
 
279
with non-synchronized streams or sparse streams.
 
280
</p>
 
281
<p>
 
282
Last reviewed on 2007-08-29 (0.10.15)
 
283
</p>
124
284
</div>
125
285
<div class="refsect1">
126
286
<a name="GstBaseSink.details"></a><h2>Details</h2>
194
354
<col align="left" valign="top">
195
355
<tbody>
196
356
<tr>
197
 
<td><p><span class="term"><a href="../gstreamer-1.0/GstElement.html#GstElementClass"><span class="type">GstElementClass</span></a> <em class="structfield"><code><a name="GstBaseSinkClass.parent-class"></a>parent_class</code></em>;</span></p></td>
 
357
<td><p><span class="term"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#GstElementClass"><span class="type">GstElementClass</span></a> <em class="structfield"><code><a name="GstBaseSinkClass.parent-class"></a>parent_class</code></em>;</span></p></td>
198
358
<td>Element parent class</td>
199
359
</tr>
200
360
<tr>
247
407
</tr>
248
408
<tr>
249
409
<td><p><span class="term"><em class="structfield"><code><a name="GstBaseSinkClass.query"></a>query</code></em> ()</span></p></td>
250
 
<td>perform a <a href="../gstreamer-1.0/gstreamer-GstQuery.html#GstQuery"><span class="type">GstQuery</span></a> on the element.</td>
 
410
<td>perform a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstQuery.html#GstQuery"><span class="type">GstQuery</span></a> on the element.</td>
251
411
</tr>
252
412
<tr>
253
413
<td><p><span class="term"><em class="structfield"><code><a name="GstBaseSinkClass.event"></a>event</code></em> ()</span></p></td>
292
452
<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            gst_base_sink_query_latency         (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>,
293
453
                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> *live</code></em>,
294
454
                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> *upstream_live</code></em>,
295
 
                                                         <em class="parameter"><code><a href="../gstreamer-1.0/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> *min_latency</code></em>,
296
 
                                                         <em class="parameter"><code><a href="../gstreamer-1.0/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> *max_latency</code></em>);</pre>
 
455
                                                         <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> *min_latency</code></em>,
 
456
                                                         <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> *max_latency</code></em>);</pre>
297
457
<p>
298
458
Query the sink for the latency parameters. The latency will be queried from
299
459
the upstream elements. <em class="parameter"><code>live</code></em> will be TRUE if <em class="parameter"><code>sink</code></em> is configured to
345
505
<hr>
346
506
<div class="refsect2">
347
507
<a name="gst-base-sink-get-latency"></a><h3>gst_base_sink_get_latency ()</h3>
348
 
<pre class="programlisting"><a href="../gstreamer-1.0/GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>        gst_base_sink_get_latency           (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>);</pre>
 
508
<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>        gst_base_sink_get_latency           (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>);</pre>
349
509
<p>
350
510
Get the currently configured latency.
351
511
</p>
366
526
<hr>
367
527
<div class="refsect2">
368
528
<a name="gst-base-sink-do-preroll"></a><h3>gst_base_sink_do_preroll ()</h3>
369
 
<pre class="programlisting"><a href="../gstreamer-1.0/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>       gst_base_sink_do_preroll            (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>,
370
 
                                                         <em class="parameter"><code><a href="../gstreamer-1.0/gstreamer-GstMiniObject.html#GstMiniObject"><span class="type">GstMiniObject</span></a> *obj</code></em>);</pre>
 
529
<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>       gst_base_sink_do_preroll            (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>,
 
530
                                                         <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstMiniObject.html#GstMiniObject"><span class="type">GstMiniObject</span></a> *obj</code></em>);</pre>
371
531
<p>
372
532
If the <em class="parameter"><code>sink</code></em> spawns its own thread for pulling buffers from upstream it
373
533
should call this method after it has pulled a buffer. If the element needed
392
552
<tr>
393
553
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
394
554
<td>
395
 
<a href="../gstreamer-1.0/GstPad.html#GST-FLOW-OK:CAPS"><span class="type">GST_FLOW_OK</span></a> if the preroll completed and processing can
 
555
<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-OK:CAPS"><span class="type">GST_FLOW_OK</span></a> if the preroll completed and processing can
396
556
continue. Any other return value should be returned from the render vmethod.</td>
397
557
</tr>
398
558
</tbody>
401
561
<hr>
402
562
<div class="refsect2">
403
563
<a name="gst-base-sink-wait-preroll"></a><h3>gst_base_sink_wait_preroll ()</h3>
404
 
<pre class="programlisting"><a href="../gstreamer-1.0/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>       gst_base_sink_wait_preroll          (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>);</pre>
 
564
<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>       gst_base_sink_wait_preroll          (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>);</pre>
405
565
<p>
406
566
If the <a class="link" href="GstBaseSink.html#GstBaseSinkClass.render"><code class="function">GstBaseSinkClass.render()</code></a> method performs its own synchronisation
407
567
against the clock it must unblock when going from PLAYING to the PAUSED state
409
569
</p>
410
570
<p>
411
571
This function will block until a state change to PLAYING happens (in which
412
 
case this function returns <a href="../gstreamer-1.0/GstPad.html#GST-FLOW-OK:CAPS"><span class="type">GST_FLOW_OK</span></a>) or the processing must be stopped due
 
572
case this function returns <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-OK:CAPS"><span class="type">GST_FLOW_OK</span></a>) or the processing must be stopped due
413
573
to a state change to READY or a FLUSH event (in which case this function
414
 
returns <a href="../gstreamer-1.0/GstPad.html#GST-FLOW-FLUSHING:CAPS"><span class="type">GST_FLOW_FLUSHING</span></a>).
 
574
returns <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-FLUSHING:CAPS"><span class="type">GST_FLOW_FLUSHING</span></a>).
415
575
</p>
416
576
<p>
417
577
This function should only be called with the PREROLL_LOCK held, like in the
427
587
<tr>
428
588
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
429
589
<td>
430
 
<a href="../gstreamer-1.0/GstPad.html#GST-FLOW-OK:CAPS"><span class="type">GST_FLOW_OK</span></a> if the preroll completed and processing can
 
590
<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#GST-FLOW-OK:CAPS"><span class="type">GST_FLOW_OK</span></a> if the preroll completed and processing can
431
591
continue. Any other return value should be returned from the render vmethod.</td>
432
592
</tr>
433
593
</tbody>
436
596
<hr>
437
597
<div class="refsect2">
438
598
<a name="gst-base-sink-wait-clock"></a><h3>gst_base_sink_wait_clock ()</h3>
439
 
<pre class="programlisting"><a href="../gstreamer-1.0/GstClock.html#GstClockReturn"><span class="returnvalue">GstClockReturn</span></a>      gst_base_sink_wait_clock            (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>,
440
 
                                                         <em class="parameter"><code><a href="../gstreamer-1.0/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> time</code></em>,
441
 
                                                         <em class="parameter"><code><a href="../gstreamer-1.0/GstClock.html#GstClockTimeDiff"><span class="type">GstClockTimeDiff</span></a> *jitter</code></em>);</pre>
 
599
<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockReturn"><span class="returnvalue">GstClockReturn</span></a>      gst_base_sink_wait_clock            (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>,
 
600
                                                         <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> time</code></em>,
 
601
                                                         <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTimeDiff"><span class="type">GstClockTimeDiff</span></a> *jitter</code></em>);</pre>
442
602
<p>
443
603
This function will block until <em class="parameter"><code>time</code></em> is reached. It is usually called by
444
604
subclasses that use their own internal synchronisation.
445
605
</p>
446
606
<p>
447
 
If <em class="parameter"><code>time</code></em> is not valid, no sycnhronisation is done and <a href="../gstreamer-1.0/GstClock.html#GST-CLOCK-BADTIME:CAPS"><span class="type">GST_CLOCK_BADTIME</span></a> is
 
607
If <em class="parameter"><code>time</code></em> is not valid, no sycnhronisation is done and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GST-CLOCK-BADTIME:CAPS"><span class="type">GST_CLOCK_BADTIME</span></a> is
448
608
returned. Likewise, if synchronisation is disabled in the element or there
449
 
is no clock, no synchronisation is done and <a href="../gstreamer-1.0/GstClock.html#GST-CLOCK-BADTIME:CAPS"><span class="type">GST_CLOCK_BADTIME</span></a> is returned.
 
609
is no clock, no synchronisation is done and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GST-CLOCK-BADTIME:CAPS"><span class="type">GST_CLOCK_BADTIME</span></a> is returned.
450
610
</p>
451
611
<p>
452
612
This function should only be called with the PREROLL_LOCK held, like when
477
637
</tr>
478
638
<tr>
479
639
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
480
 
<td><a href="../gstreamer-1.0/GstClock.html#GstClockReturn"><span class="type">GstClockReturn</span></a></td>
 
640
<td><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockReturn"><span class="type">GstClockReturn</span></a></td>
481
641
</tr>
482
642
</tbody>
483
643
</table></div>
675
835
<div class="refsect2">
676
836
<a name="gst-base-sink-set-ts-offset"></a><h3>gst_base_sink_set_ts_offset ()</h3>
677
837
<pre class="programlisting"><span class="returnvalue">void</span>                gst_base_sink_set_ts_offset         (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>,
678
 
                                                         <em class="parameter"><code><a href="../gstreamer-1.0/GstClock.html#GstClockTimeDiff"><span class="type">GstClockTimeDiff</span></a> offset</code></em>);</pre>
 
838
                                                         <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTimeDiff"><span class="type">GstClockTimeDiff</span></a> offset</code></em>);</pre>
679
839
<p>
680
840
Adjust the synchronisation of <em class="parameter"><code>sink</code></em> with <em class="parameter"><code>offset</code></em>. A negative value will
681
841
render buffers earlier than their timestamp. A positive value will delay
699
859
<hr>
700
860
<div class="refsect2">
701
861
<a name="gst-base-sink-get-ts-offset"></a><h3>gst_base_sink_get_ts_offset ()</h3>
702
 
<pre class="programlisting"><a href="../gstreamer-1.0/GstClock.html#GstClockTimeDiff"><span class="returnvalue">GstClockTimeDiff</span></a>    gst_base_sink_get_ts_offset         (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>);</pre>
 
862
<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTimeDiff"><span class="returnvalue">GstClockTimeDiff</span></a>    gst_base_sink_get_ts_offset         (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>);</pre>
703
863
<p>
704
864
Get the synchronisation offset of <em class="parameter"><code>sink</code></em>.
705
865
</p>
721
881
<div class="refsect2">
722
882
<a name="gst-base-sink-set-render-delay"></a><h3>gst_base_sink_set_render_delay ()</h3>
723
883
<pre class="programlisting"><span class="returnvalue">void</span>                gst_base_sink_set_render_delay      (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>,
724
 
                                                         <em class="parameter"><code><a href="../gstreamer-1.0/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> delay</code></em>);</pre>
 
884
                                                         <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> delay</code></em>);</pre>
725
885
<p>
726
886
Set the render delay in <em class="parameter"><code>sink</code></em> to <em class="parameter"><code>delay</code></em>. The render delay is the time
727
887
between actual rendering of a buffer and its synchronisation time. Some
753
913
<hr>
754
914
<div class="refsect2">
755
915
<a name="gst-base-sink-get-render-delay"></a><h3>gst_base_sink_get_render_delay ()</h3>
756
 
<pre class="programlisting"><a href="../gstreamer-1.0/GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>        gst_base_sink_get_render_delay      (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>);</pre>
 
916
<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>        gst_base_sink_get_render_delay      (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>);</pre>
757
917
<p>
758
918
Get the render delay of <em class="parameter"><code>sink</code></em>. see <a class="link" href="GstBaseSink.html#gst-base-sink-set-render-delay" title="gst_base_sink_set_render_delay ()"><code class="function">gst_base_sink_set_render_delay()</code></a> for more
759
919
information about the render delay.
776
936
<hr>
777
937
<div class="refsect2">
778
938
<a name="gst-base-sink-get-last-sample"></a><h3>gst_base_sink_get_last_sample ()</h3>
779
 
<pre class="programlisting"><a href="../gstreamer-1.0/gstreamer-GstSample.html#GstSample"><span class="returnvalue">GstSample</span></a> *         gst_base_sink_get_last_sample       (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>);</pre>
 
939
<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstSample.html#GstSample"><span class="returnvalue">GstSample</span></a> *         gst_base_sink_get_last_sample       (<em class="parameter"><code><a class="link" href="GstBaseSink.html" title="GstBaseSink"><span class="type">GstBaseSink</span></a> *sink</code></em>);</pre>
780
940
<p>
781
941
Get the last sample that arrived in the sink and was used for preroll or for
782
942
rendering. This property can be used to generate thumbnails.
783
943
</p>
784
944
<p>
785
 
The <a href="../gstreamer-1.0/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> on the sample can be used to determine the type of the buffer.
 
945
The <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> on the sample can be used to determine the type of the buffer.
786
946
</p>
787
947
<p>
788
948
Free-function: gst_sample_unref
796
956
</tr>
797
957
<tr>
798
958
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
799
 
<td>a <a href="../gstreamer-1.0/gstreamer-GstSample.html#GstSample"><span class="type">GstSample</span></a>. <a href="../gstreamer-1.0/gstreamer-GstSample.html#gst-sample-unref"><code class="function">gst_sample_unref()</code></a> after usage.
 
959
<td>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstSample.html#GstSample"><span class="type">GstSample</span></a>. <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstSample.html#gst-sample-unref"><code class="function">gst_sample_unref()</code></a> after usage.
800
960
This function returns NULL when no buffer has arrived in the sink yet
801
961
or when the sink is not in PAUSED or PLAYING. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
802
962
</td>
905
1065
<pre class="programlisting">#define GST_BASE_SINK_PAD(obj)          (GST_BASE_SINK_CAST (obj)-&gt;sinkpad)
906
1066
</pre>
907
1067
<p>
908
 
Gives the pointer to the <a href="../gstreamer-1.0/GstPad.html"><span class="type">GstPad</span></a> object of the element.
 
1068
Gives the pointer to the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"><span class="type">GstPad</span></a> object of the element.
909
1069
</p>
910
1070
<div class="variablelist"><table border="0">
911
1071
<col align="left" valign="top">
1000
1160
<hr>
1001
1161
<div class="refsect2">
1002
1162
<a name="GstBaseSink--last-sample"></a><h3>The <code class="literal">"last-sample"</code> property</h3>
1003
 
<pre class="programlisting">  "last-sample"              <a href="../gstreamer-1.0/gstreamer-GstSample.html#GstSample"><span class="type">GstSample</span></a>*            : Read</pre>
 
1163
<pre class="programlisting">  "last-sample"              <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstSample.html#GstSample"><span class="type">GstSample</span></a>*            : Read</pre>
1004
1164
<p>
1005
1165
The last buffer that arrived in the sink and was used for preroll or for
1006
1166
rendering. This property can be used to generate thumbnails. This property
1063
1223
<p>Default value: 0</p>
1064
1224
</div>
1065
1225
</div>
 
1226
<div class="refsect1">
 
1227
<a name="GstBaseSink.see-also"></a><h2>See Also</h2>
 
1228
<a class="link" href="GstBaseTransform.html" title="GstBaseTransform"><span class="type">GstBaseTransform</span></a>, <a class="link" href="GstBaseSrc.html" title="GstBaseSrc"><span class="type">GstBaseSrc</span></a>
 
1229
</div>
1066
1230
</div>
1067
1231
<div class="footer">
1068
1232
<hr>