upload tizen1.0 source
[framework/multimedia/gst-plugins-good0.10.git] / docs / plugins / html / gst-plugins-good-plugins-cairooverlay.html
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>cairooverlay</title>
6 <meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
7 <link rel="home" href="index.html" title="GStreamer Good Plugins 0.10 Plugins Reference Manual">
8 <link rel="up" href="ch01.html" title="gst-plugins-good Elements">
9 <link rel="prev" href="gst-plugins-good-plugins-cairorender.html" title="cairorender">
10 <link rel="next" href="gst-plugins-good-plugins-capssetter.html" title="capssetter">
11 <meta name="generator" content="GTK-Doc V1.17 (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="2">
16 <tr valign="middle">
17 <td><a accesskey="p" href="gst-plugins-good-plugins-cairorender.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
18 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
19 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
20 <th width="100%" align="center">GStreamer Good Plugins 0.10 Plugins Reference Manual</th>
21 <td><a accesskey="n" href="gst-plugins-good-plugins-capssetter.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
22 </tr>
23 <tr><td colspan="5" class="shortcuts">
24 <a href="#gst-plugins-good-plugins-cairooverlay.synopsis" class="shortcut">Top</a>
25                    | 
26                   <a href="#gst-plugins-good-plugins-cairooverlay.description" class="shortcut">Description</a>
27                    | 
28                   <a href="#gst-plugins-good-plugins-cairooverlay.object-hierarchy" class="shortcut">Object Hierarchy</a>
29                    | 
30                   <a href="#gst-plugins-good-plugins-cairooverlay.signals" class="shortcut">Signals</a>
31 </td></tr>
32 </table>
33 <div class="refentry">
34 <a name="gst-plugins-good-plugins-cairooverlay"></a><div class="titlepage"></div>
35 <div class="refnamediv"><table width="100%"><tr>
36 <td valign="top">
37 <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-cairooverlay.top_of_page"></a>cairooverlay</span></h2>
38 <p>cairooverlay — Render overlay on a video stream using Cairo</p>
39 </td>
40 <td valign="top" align="right"></td>
41 </tr></table></div>
42 <div class="refsynopsisdiv">
43 <a name="gst-plugins-good-plugins-cairooverlay.synopsis"></a><h2>Synopsis</h2>
44 <a name="GstCairoOverlay"></a><pre class="synopsis">struct              <a class="link" href="gst-plugins-good-plugins-cairooverlay.html#GstCairoOverlay-struct" title="struct GstCairoOverlay">GstCairoOverlay</a>;
45 </pre>
46 </div>
47 <div class="refsect1">
48 <a name="gst-plugins-good-plugins-cairooverlay.object-hierarchy"></a><h2>Object Hierarchy</h2>
49 <pre class="synopsis">
50   <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
51    +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
52          +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
53                +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstBaseTransform.html">GstBaseTransform</a>
54                      +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstvideofilter.html#GstVideoFilter">GstVideoFilter</a>
55                            +----GstCairoOverlay
56 </pre>
57 </div>
58 <div class="refsect1">
59 <a name="gst-plugins-good-plugins-cairooverlay.signals"></a><h2>Signals</h2>
60 <pre class="synopsis">
61   "<a class="link" href="gst-plugins-good-plugins-cairooverlay.html#GstCairoOverlay-caps-changed" title='The "caps-changed" signal'>caps-changed</a>"                                   
62   "<a class="link" href="gst-plugins-good-plugins-cairooverlay.html#GstCairoOverlay-draw" title='The "draw" signal'>draw</a>"                                           
63 </pre>
64 </div>
65 <div class="refsect1">
66 <a name="gst-plugins-good-plugins-cairooverlay.description"></a><h2>Description</h2>
67 <p>
68 cairooverlay renders an overlay using a application provided render function.
69 </p>
70 <p>
71 The full example can be found in tests/examples/cairo/cairo_overlay.c
72 </p>
73 <div class="refsect2">
74 <a name="idp9630640"></a><h3>Example code</h3>
75 <div class="informalexample">
76   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
77     <tbody>
78       <tr>
79         <td class="listing_lines" align="right"><pre>1
80 2
81 3
82 4
83 5
84 6
85 7
86 8
87 9
88 10
89 11
90 12
91 13
92 14
93 15
94 16
95 17
96 18
97 19
98 20
99 21
100 22
101 23
102 24
103 25
104 26
105 27
106 28
107 29
108 30
109 31
110 32
111 33
112 34
113 35
114 36
115 37
116 38
117 39
118 40
119 41
120 42
121 43
122 44
123 45
124 46
125 47
126 48
127 49
128 50
129 51
130 52
131 53
132 54</pre></td>
133         <td class="listing_code"><pre class="programlisting"><span class="gtkdoc ppc">#include &lt;gst/gst.h&gt;</span>
134 <span class="gtkdoc ppc">#include &lt;gst/video/video.h&gt;</span>
135
136 <span class="gtkdoc opt">...</span>
137
138 <span class="gtkdoc kwc">typedef</span> <span class="gtkdoc kwb">struct</span> <span class="gtkdoc opt">{</span>
139   gboolean valid<span class="gtkdoc opt">;</span>
140   <span class="gtkdoc kwb">int</span> width<span class="gtkdoc opt">;</span>
141   <span class="gtkdoc kwb">int</span> height<span class="gtkdoc opt">;</span>
142 <span class="gtkdoc opt">}</span> CairoOverlayState<span class="gtkdoc opt">;</span>
143
144 <span class="gtkdoc opt">...</span>
145
146 <span class="gtkdoc kwb">static void</span>
147 <span class="function">prepare_overlay</span> <span class="gtkdoc opt">(</span>GstElement <span class="gtkdoc opt">*</span> overlay<span class="gtkdoc opt">,</span> GstCaps <span class="gtkdoc opt">*</span> caps<span class="gtkdoc opt">,</span> gpointer user_data<span class="gtkdoc opt">)</span>
148 <span class="gtkdoc opt">{</span>
149   CairoOverlayState <span class="gtkdoc opt">*</span>state <span class="gtkdoc opt">= (</span>CairoOverlayState <span class="gtkdoc opt">*)</span>user_data<span class="gtkdoc opt">;</span>
150
151   <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstvideo.html#gst-video-format-parse-caps">gst_video_format_parse_caps</a></span> <span class="gtkdoc opt">(</span>caps<span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">, &amp;</span>state<span class="gtkdoc opt">-&gt;</span>width<span class="gtkdoc opt">, &amp;</span>state<span class="gtkdoc opt">-&gt;</span>height<span class="gtkdoc opt">);</span>
152   state<span class="gtkdoc opt">-&gt;</span>valid <span class="gtkdoc opt">=</span> TRUE<span class="gtkdoc opt">;</span>
153 <span class="gtkdoc opt">}</span>
154
155 <span class="gtkdoc kwb">static void</span>
156 <span class="function">draw_overlay</span> <span class="gtkdoc opt">(</span>GstElement <span class="gtkdoc opt">*</span> overlay<span class="gtkdoc opt">,</span> cairo_t <span class="gtkdoc opt">*</span> cr<span class="gtkdoc opt">,</span> guint64 timestamp<span class="gtkdoc opt">,</span> 
157   guint64 duration<span class="gtkdoc opt">,</span> gpointer user_data<span class="gtkdoc opt">)</span>
158 <span class="gtkdoc opt">{</span>
159   CairoOverlayState <span class="gtkdoc opt">*</span>s <span class="gtkdoc opt">= (</span>CairoOverlayState <span class="gtkdoc opt">*)</span>user_data<span class="gtkdoc opt">;</span>
160   <span class="gtkdoc kwb">double</span> scale<span class="gtkdoc opt">;</span>
161
162   <span class="keyword">if</span> <span class="gtkdoc opt">(!</span>s<span class="gtkdoc opt">-&gt;</span>valid<span class="gtkdoc opt">)</span>
163     <span class="keyword">return</span><span class="gtkdoc opt">;</span>
164
165   scale <span class="gtkdoc opt">=</span> <span class="number">2</span><span class="gtkdoc opt">*(((</span>timestamp<span class="gtkdoc opt">/(</span><span class="gtkdoc kwb">int</span><span class="gtkdoc opt">)</span><span class="number">1</span>e7<span class="gtkdoc opt">) %</span> <span class="number">70</span><span class="gtkdoc opt">)+</span><span class="number">30</span><span class="gtkdoc opt">)/</span><span class="number">100.0</span><span class="gtkdoc opt">;</span>
166   <span class="function">cairo_translate</span><span class="gtkdoc opt">(</span>cr<span class="gtkdoc opt">,</span> s<span class="gtkdoc opt">-&gt;</span>width<span class="gtkdoc opt">/</span><span class="number">2</span><span class="gtkdoc opt">, (</span>s<span class="gtkdoc opt">-&gt;</span>height<span class="gtkdoc opt">/</span><span class="number">2</span><span class="gtkdoc opt">)-</span><span class="number">30</span><span class="gtkdoc opt">);</span>
167   <span class="function">cairo_scale</span> <span class="gtkdoc opt">(</span>cr<span class="gtkdoc opt">,</span> scale<span class="gtkdoc opt">,</span> scale<span class="gtkdoc opt">);</span>
168
169   <span class="function">cairo_move_to</span> <span class="gtkdoc opt">(</span>cr<span class="gtkdoc opt">,</span> <span class="number">0</span><span class="gtkdoc opt">,</span> <span class="number">0</span><span class="gtkdoc opt">);</span>
170   <span class="function">cairo_curve_to</span> <span class="gtkdoc opt">(</span>cr<span class="gtkdoc opt">,</span> <span class="number">0</span><span class="gtkdoc opt">,-</span><span class="number">30</span><span class="gtkdoc opt">, -</span><span class="number">50</span><span class="gtkdoc opt">,-</span><span class="number">30</span><span class="gtkdoc opt">, -</span><span class="number">50</span><span class="gtkdoc opt">,</span><span class="number">0</span><span class="gtkdoc opt">);</span>
171   <span class="function">cairo_curve_to</span> <span class="gtkdoc opt">(</span>cr<span class="gtkdoc opt">, -</span><span class="number">50</span><span class="gtkdoc opt">,</span><span class="number">30</span><span class="gtkdoc opt">,</span> <span class="number">0</span><span class="gtkdoc opt">,</span><span class="number">35</span><span class="gtkdoc opt">,</span> <span class="number">0</span><span class="gtkdoc opt">,</span><span class="number">60</span> <span class="gtkdoc opt">);</span>
172   <span class="function">cairo_curve_to</span> <span class="gtkdoc opt">(</span>cr<span class="gtkdoc opt">,</span> <span class="number">0</span><span class="gtkdoc opt">,</span><span class="number">35</span><span class="gtkdoc opt">,</span> <span class="number">50</span><span class="gtkdoc opt">,</span><span class="number">30</span><span class="gtkdoc opt">,</span> <span class="number">50</span><span class="gtkdoc opt">,</span><span class="number">0</span> <span class="gtkdoc opt">); *</span>  
173   <span class="function">cairo_curve_to</span> <span class="gtkdoc opt">(</span>cr<span class="gtkdoc opt">,</span> <span class="number">50</span><span class="gtkdoc opt">,-</span><span class="number">30</span><span class="gtkdoc opt">,</span> <span class="number">0</span><span class="gtkdoc opt">,-</span><span class="number">30</span><span class="gtkdoc opt">,</span> <span class="number">0</span><span class="gtkdoc opt">,</span><span class="number">0</span> <span class="gtkdoc opt">);</span>
174   <span class="function">cairo_set_source_rgba</span> <span class="gtkdoc opt">(</span>cr<span class="gtkdoc opt">,</span> <span class="number">0.9</span><span class="gtkdoc opt">,</span> <span class="number">0.0</span><span class="gtkdoc opt">,</span> <span class="number">0.1</span><span class="gtkdoc opt">,</span> <span class="number">0.7</span><span class="gtkdoc opt">);</span>
175   <span class="function">cairo_fill</span> <span class="gtkdoc opt">(</span>cr<span class="gtkdoc opt">);</span>
176 <span class="gtkdoc opt">}</span>
177
178 <span class="gtkdoc opt">...</span>
179
180 cairo_overlay <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html#gst-element-factory-make">gst_element_factory_make</a></span> <span class="gtkdoc opt">(</span><span class="string">&quot;cairooverlay&quot;</span><span class="gtkdoc opt">,</span> <span class="string">&quot;overlay&quot;</span><span class="gtkdoc opt">);</span>
181
182 <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#g-signal-connect">g_signal_connect</a></span> <span class="gtkdoc opt">(</span>cairo_overlay<span class="gtkdoc opt">,</span> <span class="string">&quot;draw&quot;</span><span class="gtkdoc opt">,</span> <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Closures.html#G-CALLBACK:CAPS">G_CALLBACK</a></span> <span class="gtkdoc opt">(</span>draw_overlay<span class="gtkdoc opt">),</span>
183   overlay_state<span class="gtkdoc opt">);</span>
184 <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#g-signal-connect">g_signal_connect</a></span> <span class="gtkdoc opt">(</span>cairo_overlay<span class="gtkdoc opt">,</span> <span class="string">&quot;caps-changed&quot;</span><span class="gtkdoc opt">,</span> 
185   <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Closures.html#G-CALLBACK:CAPS">G_CALLBACK</a></span> <span class="gtkdoc opt">(</span>prepare_overlay<span class="gtkdoc opt">),</span> overlay_state<span class="gtkdoc opt">);</span>
186 <span class="gtkdoc opt">...</span></pre></td>
187       </tr>
188     </tbody>
189   </table>
190 </div>
191
192 </div>
193 <p>
194 </p>
195 <div class="refsynopsisdiv">
196 <h2>Synopsis</h2>
197 <div class="refsect2">
198 <a name="idp5456288"></a><h3>Element Information</h3>
199 <div class="variablelist"><table border="0">
200 <col align="left" valign="top">
201 <tbody>
202 <tr>
203 <td><p><span class="term">plugin</span></p></td>
204 <td>
205             <a class="link" href="gst-plugins-good-plugins-plugin-cairo.html#plugin-cairo">cairo</a>
206           </td>
207 </tr>
208 <tr>
209 <td><p><span class="term">author</span></p></td>
210 <td>Jon Nordby &lt;jononor@gmail.com&gt;</td>
211 </tr>
212 <tr>
213 <td><p><span class="term">class</span></p></td>
214 <td>Filter/Editor/Video</td>
215 </tr>
216 </tbody>
217 </table></div>
218 </div>
219 <hr>
220 <div class="refsect2">
221 <a name="idp5611600"></a><h3>Element Pads</h3>
222 <div class="variablelist"><table border="0">
223 <col align="left" valign="top">
224 <tbody>
225 <tr>
226 <td><p><span class="term">name</span></p></td>
227 <td>sink</td>
228 </tr>
229 <tr>
230 <td><p><span class="term">direction</span></p></td>
231 <td>sink</td>
232 </tr>
233 <tr>
234 <td><p><span class="term">presence</span></p></td>
235 <td>always</td>
236 </tr>
237 <tr>
238 <td><p><span class="term">details</span></p></td>
239 <td>video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
240 </tr>
241 <tr>
242 <td><p><span class="term"></span></p></td>
243 <td> video/x-raw-rgb, bpp=(int)32, depth=(int)32, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, alpha_mask=(int)255, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
244 </tr>
245 </tbody>
246 </table></div>
247 <div class="variablelist"><table border="0">
248 <col align="left" valign="top">
249 <tbody>
250 <tr>
251 <td><p><span class="term">name</span></p></td>
252 <td>src</td>
253 </tr>
254 <tr>
255 <td><p><span class="term">direction</span></p></td>
256 <td>source</td>
257 </tr>
258 <tr>
259 <td><p><span class="term">presence</span></p></td>
260 <td>always</td>
261 </tr>
262 <tr>
263 <td><p><span class="term">details</span></p></td>
264 <td>video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
265 </tr>
266 <tr>
267 <td><p><span class="term"></span></p></td>
268 <td> video/x-raw-rgb, bpp=(int)32, depth=(int)32, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, alpha_mask=(int)255, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
269 </tr>
270 </tbody>
271 </table></div>
272 </div>
273 </div>
274 <p>
275 </p>
276 </div>
277 <div class="refsect1">
278 <a name="gst-plugins-good-plugins-cairooverlay.details"></a><h2>Details</h2>
279 <div class="refsect2">
280 <a name="GstCairoOverlay-struct"></a><h3>struct GstCairoOverlay</h3>
281 <pre class="programlisting">struct GstCairoOverlay;</pre>
282 <p>
283 </p>
284 </div>
285 </div>
286 <div class="refsect1">
287 <a name="gst-plugins-good-plugins-cairooverlay.signal-details"></a><h2>Signal Details</h2>
288 <div class="refsect2">
289 <a name="GstCairoOverlay-caps-changed"></a><h3>The <code class="literal">"caps-changed"</code> signal</h3>
290 <pre class="programlisting"><span class="returnvalue">void</span>                user_function                      (<a class="link" href="gst-plugins-good-plugins-cairooverlay.html#GstCairoOverlay"><span class="type">GstCairoOverlay</span></a> *overlay,
291                                                         <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>         *caps,
292                                                         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>         user_data)</pre>
293 <p>
294 This signal is emitted when the caps of the element has changed.
295 </p>
296 <div class="variablelist"><table border="0">
297 <col align="left" valign="top">
298 <tbody>
299 <tr>
300 <td><p><span class="term"><em class="parameter"><code>overlay</code></em> :</span></p></td>
301 <td>Overlay element emitting the signal.</td>
302 </tr>
303 <tr>
304 <td><p><span class="term"><em class="parameter"><code>caps</code></em> :</span></p></td>
305 <td>The <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> of the element.</td>
306 </tr>
307 <tr>
308 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
309 <td>user data set when the signal handler was connected.</td>
310 </tr>
311 </tbody>
312 </table></div>
313 </div>
314 <hr>
315 <div class="refsect2">
316 <a name="GstCairoOverlay-draw"></a><h3>The <code class="literal">"draw"</code> signal</h3>
317 <pre class="programlisting"><span class="returnvalue">void</span>                user_function                      (<a class="link" href="gst-plugins-good-plugins-cairooverlay.html#GstCairoOverlay"><span class="type">GstCairoOverlay</span></a> *overlay,
318                                                         <span class="type">CairoContext</span>    *cr,
319                                                         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint64"><span class="type">guint64</span></a>          timestamp,
320                                                         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint64"><span class="type">guint64</span></a>          duration,
321                                                         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>         user_data)</pre>
322 <p>
323 This signal is emitted when the overlay should be drawn.
324 </p>
325 <div class="variablelist"><table border="0">
326 <col align="left" valign="top">
327 <tbody>
328 <tr>
329 <td><p><span class="term"><em class="parameter"><code>overlay</code></em> :</span></p></td>
330 <td>Overlay element emitting the signal.</td>
331 </tr>
332 <tr>
333 <td><p><span class="term"><em class="parameter"><code>cr</code></em> :</span></p></td>
334 <td>Cairo context to draw to.</td>
335 </tr>
336 <tr>
337 <td><p><span class="term"><em class="parameter"><code>timestamp</code></em> :</span></p></td>
338 <td>Timestamp (see <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a>) of the current buffer.</td>
339 </tr>
340 <tr>
341 <td><p><span class="term"><em class="parameter"><code>duration</code></em> :</span></p></td>
342 <td>Duration (see <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a>) of the current buffer.</td>
343 </tr>
344 <tr>
345 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
346 <td>user data set when the signal handler was connected.</td>
347 </tr>
348 </tbody>
349 </table></div>
350 </div>
351 </div>
352 </div>
353 <div class="footer">
354 <hr>
355           Generated by GTK-Doc V1.17</div>
356 </body>
357 </html>