blob: 310b39c76b67895a195871ef9c6b871679ecadb6 [file] [log] [blame]
Sebastian Dröge1491e032014-06-22 19:09:53 +02001<!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>GStreamer Bad Plugins 1.0 Plugins Reference Manual: compositor</title>
6<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
7<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
8<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
9<link rel="prev" href="gst-plugins-bad-plugins-coloreffects.html" title="coloreffects">
10<link rel="next" href="gst-plugins-bad-plugins-cvdilate.html" title="cvdilate">
11<meta name="generator" content="GTK-Doc V1.20 (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="10"><tr valign="middle">
16<td width="100%" align="left" class="shortcuts">
17<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
18 <a href="#gst-plugins-bad-plugins-compositor.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
19 <a href="#gst-plugins-bad-plugins-compositor.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span> 
20 <a href="#gst-plugins-bad-plugins-compositor.properties" class="shortcut">Properties</a></span>
21</td>
22<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
23<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
24<td><a accesskey="p" href="gst-plugins-bad-plugins-coloreffects.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
25<td><a accesskey="n" href="gst-plugins-bad-plugins-cvdilate.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
26</tr></table>
27<div class="refentry">
28<a name="gst-plugins-bad-plugins-compositor"></a><div class="titlepage"></div>
29<div class="refnamediv"><table width="100%"><tr>
30<td valign="top">
31<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-compositor.top_of_page"></a>compositor</span></h2>
32<p>compositor — Composite multiple video streams</p>
33</td>
34<td class="gallery_image" valign="top" align="right"></td>
35</tr></table></div>
36<div class="refsect1">
37<a name="gst-plugins-bad-plugins-compositor.properties"></a><h2>Properties</h2>
38<div class="informaltable"><table border="0">
39<colgroup>
40<col width="150px" class="properties_type">
41<col width="300px" class="properties_name">
42<col width="200px" class="properties_flags">
43</colgroup>
44<tbody><tr>
45<td class="property_type"><span class="type">GstCompositorBackground</span></td>
46<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-compositor.html#GstCompositor--background" title="The “background” property">background</a></td>
47<td class="property_flags">Read / Write</td>
48</tr></tbody>
49</table></div>
50</div>
51<a name="GstCompositor"></a><a name="GstCompositorPad"></a><div class="refsect1">
52<a name="gst-plugins-bad-plugins-compositor.object-hierarchy"></a><h2>Object Hierarchy</h2>
53<pre class="screen"> <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
54 <span class="lineart">╰──</span> <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
55 <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
56 <span class="lineart">├──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
57 <span class="lineart"></span> <span class="lineart">╰──</span> GstAggregator
58 <span class="lineart"></span> <span class="lineart">╰──</span> GstVideoAggregator
59 <span class="lineart"></span> <span class="lineart">╰──</span> GstCompositor
60 <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html">GstPad</a>
61 <span class="lineart">╰──</span> GstAggregatorPad
62 <span class="lineart">╰──</span> GstVideoAggregatorPad
63 <span class="lineart">╰──</span> GstCompositorPad
64</pre>
65</div>
66<div class="refsect1">
67<a name="gst-plugins-bad-plugins-compositor.description"></a><h2>Description</h2>
68<p>Compositor can accept AYUV, ARGB and BGRA video streams. For each of the requested
69sink pads it will compare the incoming geometry and framerate to define the
70output parameters. Indeed output video frames will have the geometry of the
71biggest incoming video stream and the framerate of the fastest incoming one.</p>
72<p>Compositor will do colorspace conversion.</p>
73<p>Individual parameters for each input stream can be configured on the
74<a class="link" href="gst-plugins-bad-plugins-compositor.html#GstCompositorPad"><span class="type">GstCompositorPad</span></a>.</p>
75<div class="refsect2">
76<a name="id-1.2.11.7.5"></a><h3>Sample pipelines</h3>
77<div class="informalexample">
78 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
79 <tbody>
80 <tr>
81 <td class="listing_lines" align="right"><pre>1
822
833
844
855
866
877
888</pre></td>
89 <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> \
90 videotestsrc pattern<span class="gtkdoc opt">=</span><span class="number">1</span> <span class="gtkdoc opt">!</span> \
91 video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span>format<span class="gtkdoc opt">=</span>AYUV<span class="gtkdoc opt">,</span>framerate<span class="gtkdoc opt">=</span>\<span class="gtkdoc opt">(</span>fraction\<span class="gtkdoc opt">)</span><span class="number">10</span><span class="gtkdoc opt">/</span><span class="number">1</span><span class="gtkdoc opt">,</span>width<span class="gtkdoc opt">=</span><span class="number">100</span><span class="gtkdoc opt">,</span>height<span class="gtkdoc opt">=</span><span class="number">100</span> <span class="gtkdoc opt">!</span> \
92 videobox border<span class="gtkdoc opt">-</span>alpha<span class="gtkdoc opt">=</span><span class="number">0</span> top<span class="gtkdoc opt">=-</span><span class="number">70</span> bottom<span class="gtkdoc opt">=-</span><span class="number">70</span> right<span class="gtkdoc opt">=-</span><span class="number">220</span> <span class="gtkdoc opt">!</span> \
93 compositor name<span class="gtkdoc opt">=</span>comp sink_0<span class="gtkdoc opt">::</span>alpha<span class="gtkdoc opt">=</span><span class="number">0.7</span> sink_1<span class="gtkdoc opt">::</span>alpha<span class="gtkdoc opt">=</span><span class="number">0.5</span> <span class="gtkdoc opt">!</span> \
94 videoconvert <span class="gtkdoc opt">!</span> xvimagesink \
95 videotestsrc <span class="gtkdoc opt">!</span> \
96 video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span>format<span class="gtkdoc opt">=</span>AYUV<span class="gtkdoc opt">,</span>framerate<span class="gtkdoc opt">=</span>\<span class="gtkdoc opt">(</span>fraction\<span class="gtkdoc opt">)</span><span class="number">5</span><span class="gtkdoc opt">/</span><span class="number">1</span><span class="gtkdoc opt">,</span>width<span class="gtkdoc opt">=</span><span class="number">320</span><span class="gtkdoc opt">,</span>height<span class="gtkdoc opt">=</span><span class="number">240</span> <span class="gtkdoc opt">!</span> comp<span class="gtkdoc opt">.</span></pre></td>
97 </tr>
98 </tbody>
99 </table>
100</div>
101 A pipeline to demonstrate compositor used together with videobox.
102This should show a 320x240 pixels video test source with some transparency
103showing the background checker pattern. Another video test source with just
104the snow pattern of 100x100 pixels is overlayed on top of the first one on
105the left vertically centered with a small transparency showing the first
106video test source behind and the checker pattern under it. Note that the
107framerate of the output video is 10 frames per second.
108<div class="informalexample">
109 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
110 <tbody>
111 <tr>
112 <td class="listing_lines" align="right"><pre>1
1132
1143
1154
1165</pre></td>
117 <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc pattern<span class="gtkdoc opt">=</span><span class="number">1</span> <span class="gtkdoc opt">!</span> \
118 video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span> framerate<span class="gtkdoc opt">=</span>\<span class="gtkdoc opt">(</span>fraction\<span class="gtkdoc opt">)</span><span class="number">10</span><span class="gtkdoc opt">/</span><span class="number">1</span><span class="gtkdoc opt">,</span> width<span class="gtkdoc opt">=</span><span class="number">100</span><span class="gtkdoc opt">,</span> height<span class="gtkdoc opt">=</span><span class="number">100</span> <span class="gtkdoc opt">!</span> \
119 compositor name<span class="gtkdoc opt">=</span>comp <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> ximagesink \
120 videotestsrc <span class="gtkdoc opt">!</span> \
121 video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span> framerate<span class="gtkdoc opt">=</span>\<span class="gtkdoc opt">(</span>fraction\<span class="gtkdoc opt">)</span><span class="number">5</span><span class="gtkdoc opt">/</span><span class="number">1</span><span class="gtkdoc opt">,</span> width<span class="gtkdoc opt">=</span><span class="number">320</span><span class="gtkdoc opt">,</span> height<span class="gtkdoc opt">=</span><span class="number">240</span> <span class="gtkdoc opt">!</span> comp<span class="gtkdoc opt">.</span></pre></td>
122 </tr>
123 </tbody>
124 </table>
125</div>
126 A pipeline to demostrate bgra comping. (This does not demonstrate alpha blending).
127<div class="informalexample">
128 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
129 <tbody>
130 <tr>
131 <td class="listing_lines" align="right"><pre>1
1322
1333
1344
1355</pre></td>
136 <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc pattern<span class="gtkdoc opt">=</span><span class="number">1</span> <span class="gtkdoc opt">!</span> \
137 video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span>format <span class="gtkdoc opt">=</span>I420<span class="gtkdoc opt">,</span> framerate<span class="gtkdoc opt">=</span>\<span class="gtkdoc opt">(</span>fraction\<span class="gtkdoc opt">)</span><span class="number">10</span><span class="gtkdoc opt">/</span><span class="number">1</span><span class="gtkdoc opt">,</span> width<span class="gtkdoc opt">=</span><span class="number">100</span><span class="gtkdoc opt">,</span> height<span class="gtkdoc opt">=</span><span class="number">100</span> <span class="gtkdoc opt">!</span> \
138 compositor name<span class="gtkdoc opt">=</span>comp <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> ximagesink \
139 videotestsrc <span class="gtkdoc opt">!</span> \
140 video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span>format<span class="gtkdoc opt">=</span>I420<span class="gtkdoc opt">,</span> framerate<span class="gtkdoc opt">=</span>\<span class="gtkdoc opt">(</span>fraction\<span class="gtkdoc opt">)</span><span class="number">5</span><span class="gtkdoc opt">/</span><span class="number">1</span><span class="gtkdoc opt">,</span> width<span class="gtkdoc opt">=</span><span class="number">320</span><span class="gtkdoc opt">,</span> height<span class="gtkdoc opt">=</span><span class="number">240</span> <span class="gtkdoc opt">!</span> comp<span class="gtkdoc opt">.</span></pre></td>
141 </tr>
142 </tbody>
143 </table>
144</div>
145 A pipeline to test I420
146<div class="informalexample">
147 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
148 <tbody>
149 <tr>
150 <td class="listing_lines" align="right"><pre>1
1512
1523
1534
1545
1556
1567
1578</pre></td>
158 <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> compositor name<span class="gtkdoc opt">=</span>comp sink_1<span class="gtkdoc opt">::</span>alpha<span class="gtkdoc opt">=</span><span class="number">0.5</span> sink_1<span class="gtkdoc opt">::</span>xpos<span class="gtkdoc opt">=</span><span class="number">50</span> sink_1<span class="gtkdoc opt">::</span>ypos<span class="gtkdoc opt">=</span><span class="number">50</span> <span class="gtkdoc opt">!</span> \
159 videoconvert <span class="gtkdoc opt">!</span> ximagesink \
160 videotestsrc pattern<span class="gtkdoc opt">=</span>snow timestamp<span class="gtkdoc opt">-</span>offset<span class="gtkdoc opt">=</span><span class="number">3000000000</span> <span class="gtkdoc opt">!</span> \
161 <span class="string">&quot;video/x-raw,format=AYUV,width=640,height=480,framerate=(fraction)30/1&quot;</span> <span class="gtkdoc opt">!</span> \
162 timeoverlay <span class="gtkdoc opt">!</span> queue2 <span class="gtkdoc opt">!</span> comp<span class="gtkdoc opt">.</span> \
163 videotestsrc pattern<span class="gtkdoc opt">=</span>smpte <span class="gtkdoc opt">!</span> \
164 <span class="string">&quot;video/x-raw,format=AYUV,width=800,height=600,framerate=(fraction)10/1&quot;</span> <span class="gtkdoc opt">!</span> \
165 timeoverlay <span class="gtkdoc opt">!</span> queue2 <span class="gtkdoc opt">!</span> comp<span class="gtkdoc opt">.</span></pre></td>
166 </tr>
167 </tbody>
168 </table>
169</div>
170 A pipeline to demonstrate synchronized compositing (the second stream starts after 3 seconds)
171</div>
172<div class="refsynopsisdiv">
173<h2>Synopsis</h2>
174<div class="refsect2">
175<a name="id-1.2.11.7.6.1"></a><h3>Element Information</h3>
176<div class="variablelist"><table border="0" class="variablelist">
177<colgroup>
178<col align="left" valign="top">
179<col>
180</colgroup>
181<tbody>
182<tr>
183<td><p><span class="term">plugin</span></p></td>
184<td>
185 compositor
186 </td>
187</tr>
188<tr>
189<td><p><span class="term">author</span></p></td>
190<td>Wim Taymans &lt;wim@fluendo.com&gt;, Sebastian Dröge &lt;sebastian.droege@collabora.co.uk&gt;</td>
191</tr>
192<tr>
193<td><p><span class="term">class</span></p></td>
194<td>Filter/Editor/Video/Compositor</td>
195</tr>
196</tbody>
197</table></div>
198</div>
199<hr>
200<div class="refsect2">
201<a name="id-1.2.11.7.6.2"></a><h3>Element Pads</h3>
202<div class="variablelist"><table border="0" class="variablelist">
203<colgroup>
204<col align="left" valign="top">
205<col>
206</colgroup>
207<tbody>
208<tr>
209<td><p><span class="term">name</span></p></td>
210<td>sink_%u</td>
211</tr>
212<tr>
213<td><p><span class="term">direction</span></p></td>
214<td>sink</td>
215</tr>
216<tr>
217<td><p><span class="term">presence</span></p></td>
218<td>request</td>
219</tr>
220<tr>
221<td><p><span class="term">details</span></p></td>
222<td>video/x-raw, format=(string){ AYUV, BGRA, ARGB, RGBA, ABGR, Y444, Y42B, YUY2, UYVY, YVYU, I420, YV12, NV12, NV21, Y41B, RGB, BGR, xRGB, xBGR, RGBx, BGRx }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
223</tr>
224</tbody>
225</table></div>
226<div class="variablelist"><table border="0" class="variablelist">
227<colgroup>
228<col align="left" valign="top">
229<col>
230</colgroup>
231<tbody>
232<tr>
233<td><p><span class="term">name</span></p></td>
234<td>src</td>
235</tr>
236<tr>
237<td><p><span class="term">direction</span></p></td>
238<td>source</td>
239</tr>
240<tr>
241<td><p><span class="term">presence</span></p></td>
242<td>always</td>
243</tr>
244<tr>
245<td><p><span class="term">details</span></p></td>
246<td>video/x-raw, format=(string){ AYUV, BGRA, ARGB, RGBA, ABGR, Y444, Y42B, YUY2, UYVY, YVYU, I420, YV12, NV12, NV21, Y41B, RGB, BGR, xRGB, xBGR, RGBx, BGRx }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
247</tr>
248</tbody>
249</table></div>
250</div>
251</div>
252<p>
253</p>
254</div>
255<div class="refsect1">
256<a name="gst-plugins-bad-plugins-compositor.functions_details"></a><h2>Functions</h2>
257</div>
258<div class="refsect1">
259<a name="gst-plugins-bad-plugins-compositor.other_details"></a><h2>Types and Values</h2>
260</div>
261<div class="refsect1">
262<a name="gst-plugins-bad-plugins-compositor.property-details"></a><h2>Property Details</h2>
263<div class="refsect2">
264<a name="GstCompositor--background"></a><h3>The <code class="literal">“background”</code> property</h3>
265<pre class="programlisting"> “background” <span class="type">GstCompositorBackground</span></pre>
266<p>Background type.</p>
267<p>Flags: Read / Write</p>
268<p>Default value: Checker pattern</p>
269</div>
270</div>
271</div>
272<div class="footer">
273<hr>
274 Generated by GTK-Doc V1.20</div>
275</body>
276</html>