• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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>videomixer: GStreamer Good Plugins 1.0 Plugins Reference Manual</title>
6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7<link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual">
8<link rel="up" href="ch01.html" title="gst-plugins-good Elements">
9<link rel="prev" href="gst-plugins-good-plugins-videomedian.html" title="videomedian">
10<link rel="next" href="gst-plugins-good-plugins-vp8dec.html" title="vp8dec">
11<meta name="generator" content="GTK-Doc V1.28 (XML mode)">
12<link rel="stylesheet" href="style.css" type="text/css">
13</head>
14<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
15<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
16<td width="100%" align="left" class="shortcuts">
17<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span18                  <a href="#gst-plugins-good-plugins-videomixer.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span19                  <a href="#gst-plugins-good-plugins-videomixer.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces">  <span class="dim">|</span20                  <a href="#gst-plugins-good-plugins-videomixer.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties">  <span class="dim">|</span21                  <a href="#gst-plugins-good-plugins-videomixer.properties" class="shortcut">Properties</a></span>
22</td>
23<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
24<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
25<td><a accesskey="p" href="gst-plugins-good-plugins-videomedian.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
26<td><a accesskey="n" href="gst-plugins-good-plugins-vp8dec.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
27</tr></table>
28<div class="refentry">
29<a name="gst-plugins-good-plugins-videomixer"></a><div class="titlepage"></div>
30<div class="refnamediv"><table width="100%"><tr>
31<td valign="top">
32<h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-videomixer.top_of_page"></a>videomixer</span></h2>
33<p>videomixer</p>
34</td>
35<td class="gallery_image" valign="top" align="right"></td>
36</tr></table></div>
37<div class="refsect1">
38<a name="gst-plugins-good-plugins-videomixer.properties"></a><h2>Properties</h2>
39<div class="informaltable"><table class="informaltable" border="0">
40<colgroup>
41<col width="150px" class="properties_type">
42<col width="300px" class="properties_name">
43<col width="200px" class="properties_flags">
44</colgroup>
45<tbody><tr>
46<td class="property_type"><a class="link" href="gst-plugins-good-plugins-videomixer.html#GstVideoMixer2Background" title="enum GstVideoMixer2Background"><span class="type">GstVideoMixer2Background</span></a></td>
47<td class="property_name"><a class="link" href="gst-plugins-good-plugins-videomixer.html#GstVideoMixer2--background" title="The “background” property">background</a></td>
48<td class="property_flags">Read / Write</td>
49</tr></tbody>
50</table></div>
51</div>
52<a name="GstVideoMixer2"></a><div class="refsect1">
53<a name="gst-plugins-good-plugins-videomixer.other"></a><h2>Types and Values</h2>
54<div class="informaltable"><table class="informaltable" width="100%" border="0">
55<colgroup>
56<col width="150px" class="name">
57<col class="description">
58</colgroup>
59<tbody>
60<tr>
61<td class="datatype_keyword">struct</td>
62<td class="function_name"><a class="link" href="gst-plugins-good-plugins-videomixer.html#GstVideoMixer2-struct" title="struct GstVideoMixer2">GstVideoMixer2</a></td>
63</tr>
64<tr>
65<td class="datatype_keyword">enum</td>
66<td class="function_name"><a class="link" href="gst-plugins-good-plugins-videomixer.html#GstVideoMixer2Background" title="enum GstVideoMixer2Background">GstVideoMixer2Background</a></td>
67</tr>
68</tbody>
69</table></div>
70</div>
71<div class="refsect1">
72<a name="gst-plugins-good-plugins-videomixer.object-hierarchy"></a><h2>Object Hierarchy</h2>
73<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
74    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
75        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
76            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a>
77                <span class="lineart">╰──</span> GstVideoMixer2
78</pre>
79</div>
80<div class="refsect1">
81<a name="gst-plugins-good-plugins-videomixer.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
82<p>
83GstVideoMixer2 implements
84 <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstChildProxy.html#GstChildProxy-struct">GstChildProxy</a>.</p>
85</div>
86<div class="refsect1">
87<a name="gst-plugins-good-plugins-videomixer.description"></a><h2>Description</h2>
88<p>Videomixer can accept AYUV, ARGB and BGRA video streams. For each of the requested
89sink pads it will compare the incoming geometry and framerate to define the
90output parameters. Indeed output video frames will have the geometry of the
91biggest incoming video stream and the framerate of the fastest incoming one.</p>
92<p>Videomixer will do colorspace conversion.</p>
93<p>Individual parameters for each input stream can be configured on the
94<span class="type">GstVideoMixer2Pad</span>.</p>
95<div class="refsect2">
96<a name="id-1.2.270.8.5"></a><h3>Sample pipelines</h3>
97<div class="informalexample">
98  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
99    <tbody>
100      <tr>
101        <td class="listing_lines" align="right"><pre>1
1022
1033
1044
1055
1066
1077
1088</pre></td>
109        <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> \
110  videotestsrc pattern<span class="gtkdoc opt">=</span><span class="number">1</span> <span class="gtkdoc opt">!</span> \
111  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> \
112  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> \
113  videomixer name<span class="gtkdoc opt">=</span>mix <span class="gtkdoc kwc">sink_0</span><span class="gtkdoc opt">::</span>alpha<span class="gtkdoc opt">=</span><span class="number">0.7</span> <span class="gtkdoc kwc">sink_1</span><span class="gtkdoc opt">::</span>alpha<span class="gtkdoc opt">=</span><span class="number">0.5</span> <span class="gtkdoc opt">!</span> \
114  videoconvert <span class="gtkdoc opt">!</span> xvimagesink \
115  videotestsrc <span class="gtkdoc opt">!</span> \
116  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> mix<span class="gtkdoc opt">.</span></pre></td>
117      </tr>
118    </tbody>
119  </table>
120</div>
121 A pipeline to demonstrate videomixer used together with videobox.
122This should show a 320x240 pixels video test source with some transparency
123showing the background checker pattern. Another video test source with just
124the snow pattern of 100x100 pixels is overlaid on top of the first one on
125the left vertically centered with a small transparency showing the first
126video test source behind and the checker pattern under it. Note that the
127framerate of the output video is 10 frames per second.
128<div class="informalexample">
129  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
130    <tbody>
131      <tr>
132        <td class="listing_lines" align="right"><pre>1
1332
1343
1354
1365</pre></td>
137        <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> \
138  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> \
139  videomixer name<span class="gtkdoc opt">=</span>mix <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> ximagesink \
140  videotestsrc <span class="gtkdoc opt">!</span>  \
141  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> mix<span class="gtkdoc opt">.</span></pre></td>
142      </tr>
143    </tbody>
144  </table>
145</div>
146 A pipeline to demostrate bgra mixing. (This does not demonstrate alpha blending).
147<div class="informalexample">
148  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
149    <tbody>
150      <tr>
151        <td class="listing_lines" align="right"><pre>1
1522
1533
1544
1555</pre></td>
156        <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> \
157  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> \
158  videomixer name<span class="gtkdoc opt">=</span>mix <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> ximagesink \
159  videotestsrc <span class="gtkdoc opt">!</span> \
160  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> mix<span class="gtkdoc opt">.</span></pre></td>
161      </tr>
162    </tbody>
163  </table>
164</div>
165 A pipeline to test I420
166<div class="informalexample">
167  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
168    <tbody>
169      <tr>
170        <td class="listing_lines" align="right"><pre>1
1712
1723
1734
1745
1756
1767
1778</pre></td>
178        <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> videomixer name<span class="gtkdoc opt">=</span>mixer <span class="gtkdoc kwc">sink_1</span><span class="gtkdoc opt">::</span>alpha<span class="gtkdoc opt">=</span><span class="number">0.5</span> <span class="gtkdoc kwc">sink_1</span><span class="gtkdoc opt">::</span>xpos<span class="gtkdoc opt">=</span><span class="number">50</span> <span class="gtkdoc kwc">sink_1</span><span class="gtkdoc opt">::</span>ypos<span class="gtkdoc opt">=</span><span class="number">50</span> <span class="gtkdoc opt">!</span> \
179  videoconvert <span class="gtkdoc opt">!</span> ximagesink \
180  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> \
181  <span class="string">&quot;video/x-raw,format=AYUV,width=640,height=480,framerate=(fraction)30/1&quot;</span> <span class="gtkdoc opt">!</span> \
182  timeoverlay <span class="gtkdoc opt">!</span> queue2 <span class="gtkdoc opt">!</span> mixer<span class="gtkdoc opt">.</span> \
183  videotestsrc pattern<span class="gtkdoc opt">=</span>smpte <span class="gtkdoc opt">!</span> \
184  <span class="string">&quot;video/x-raw,format=AYUV,width=800,height=600,framerate=(fraction)10/1&quot;</span> <span class="gtkdoc opt">!</span> \
185  timeoverlay <span class="gtkdoc opt">!</span> queue2 <span class="gtkdoc opt">!</span> mixer<span class="gtkdoc opt">.</span></pre></td>
186      </tr>
187    </tbody>
188  </table>
189</div>
190 A pipeline to demonstrate synchronized mixing (the second stream starts after 3 seconds)
191</div>
192<div class="refsynopsisdiv">
193<h2>Synopsis</h2>
194<div class="refsect2">
195<a name="id-1.2.270.8.6.1"></a><h3>Element Information</h3>
196<div class="variablelist"><table border="0" class="variablelist">
197<colgroup>
198<col align="left" valign="top">
199<col>
200</colgroup>
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-videomixer.html#plugin-videomixer">videomixer</a>
206          </td>
207</tr>
208<tr>
209<td><p><span class="term">author</span></p></td>
210<td>Wim Taymans &lt;wim@fluendo.com&gt;, Sebastian Dröge &lt;sebastian.droege@collabora.co.uk&gt;</td>
211</tr>
212<tr>
213<td><p><span class="term">class</span></p></td>
214<td>Filter/Editor/Video/Compositor</td>
215</tr>
216</tbody>
217</table></div>
218</div>
219<hr>
220<div class="refsect2">
221<a name="id-1.2.270.8.6.2"></a><h3>Element Pads</h3>
222<div class="variablelist"><table border="0" class="variablelist">
223<colgroup>
224<col align="left" valign="top">
225<col>
226</colgroup>
227<tbody>
228<tr>
229<td><p><span class="term">name</span></p></td>
230<td>sink_%u</td>
231</tr>
232<tr>
233<td><p><span class="term">direction</span></p></td>
234<td>sink</td>
235</tr>
236<tr>
237<td><p><span class="term">presence</span></p></td>
238<td>request</td>
239</tr>
240<tr>
241<td><p><span class="term">details</span></p></td>
242<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>
243</tr>
244</tbody>
245</table></div>
246<div class="variablelist"><table border="0" class="variablelist">
247<colgroup>
248<col align="left" valign="top">
249<col>
250</colgroup>
251<tbody>
252<tr>
253<td><p><span class="term">name</span></p></td>
254<td>src</td>
255</tr>
256<tr>
257<td><p><span class="term">direction</span></p></td>
258<td>source</td>
259</tr>
260<tr>
261<td><p><span class="term">presence</span></p></td>
262<td>always</td>
263</tr>
264<tr>
265<td><p><span class="term">details</span></p></td>
266<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>
267</tr>
268</tbody>
269</table></div>
270</div>
271</div>
272</div>
273<div class="refsect1">
274<a name="gst-plugins-good-plugins-videomixer.functions_details"></a><h2>Functions</h2>
275<p></p>
276</div>
277<div class="refsect1">
278<a name="gst-plugins-good-plugins-videomixer.other_details"></a><h2>Types and Values</h2>
279<div class="refsect2">
280<a name="GstVideoMixer2-struct"></a><h3>struct GstVideoMixer2</h3>
281<pre class="programlisting">struct GstVideoMixer2;</pre>
282<p>The opaque <a class="link" href="gst-plugins-good-plugins-videomixer.html#GstVideoMixer2"><span class="type">GstVideoMixer2</span></a> structure.</p>
283</div>
284<hr>
285<div class="refsect2">
286<a name="GstVideoMixer2Background"></a><h3>enum GstVideoMixer2Background</h3>
287<p>The different backgrounds videomixer can blend over.</p>
288<div class="refsect3">
289<a name="GstVideoMixer2Background.members"></a><h4>Members</h4>
290<div class="informaltable"><table class="informaltable" width="100%" border="0">
291<colgroup>
292<col width="300px" class="enum_members_name">
293<col class="enum_members_description">
294<col width="200px" class="enum_members_annotations">
295</colgroup>
296<tbody>
297<tr>
298<td class="enum_member_name"><p><a name="VIDEO-MIXER2-BACKGROUND-CHECKER:CAPS"></a>VIDEO_MIXER2_BACKGROUND_CHECKER</p></td>
299<td class="enum_member_description">
300<p>checker pattern background</p>
301</td>
302<td class="enum_member_annotations"> </td>
303</tr>
304<tr>
305<td class="enum_member_name"><p><a name="VIDEO-MIXER2-BACKGROUND-BLACK:CAPS"></a>VIDEO_MIXER2_BACKGROUND_BLACK</p></td>
306<td class="enum_member_description">
307<p>solid color black background</p>
308</td>
309<td class="enum_member_annotations"> </td>
310</tr>
311<tr>
312<td class="enum_member_name"><p><a name="VIDEO-MIXER2-BACKGROUND-WHITE:CAPS"></a>VIDEO_MIXER2_BACKGROUND_WHITE</p></td>
313<td class="enum_member_description">
314<p>solid color white background</p>
315</td>
316<td class="enum_member_annotations"> </td>
317</tr>
318<tr>
319<td class="enum_member_name"><p><a name="VIDEO-MIXER2-BACKGROUND-TRANSPARENT:CAPS"></a>VIDEO_MIXER2_BACKGROUND_TRANSPARENT</p></td>
320<td class="enum_member_description">
321<p>background is left transparent and layers are composited using "A OVER B" composition rules. This is only applicable to AYUV and ARGB (and variants) as it preserves the alpha channel and allows for further mixing.</p>
322</td>
323<td class="enum_member_annotations"> </td>
324</tr>
325</tbody>
326</table></div>
327</div>
328</div>
329</div>
330<div class="refsect1">
331<a name="gst-plugins-good-plugins-videomixer.property-details"></a><h2>Property Details</h2>
332<div class="refsect2">
333<a name="GstVideoMixer2--background"></a><h3>The <code class="literal">“background”</code> property</h3>
334<pre class="programlisting">  “background”               <a class="link" href="gst-plugins-good-plugins-videomixer.html#GstVideoMixer2Background" title="enum GstVideoMixer2Background"><span class="type">GstVideoMixer2Background</span></a></pre>
335<p>Background type.</p>
336<p>Flags: Read / Write</p>
337<p>Default value: Checker pattern</p>
338</div>
339</div>
340</div>
341<div class="footer">
342<hr>Generated by GTK-Doc V1.28</div>
343</body>
344</html>