<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div class="moz-cite-prefix">On 16-02-2021 16:06, Nicolas Dufresne
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:a4113a38bc502c8b45493fddb129a5a299596a10.camel@ndufresne.ca">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div>Le mardi 16 février 2021 à 02:50 -0500, Jim Ruxton a écrit :</div>
<blockquote type="cite" style="margin:0 0 0 .8ex; border-left:2px
#729fcf solid;padding-left:1ex">
<p>I am trying to combine 2 video streams. One from my laptop
camera and one from an external webcam. I'm using the
following pipeline and getting very choppy results. Neither my
CPU or GPU seem to be working hard. Any ideas how to make this
less choppy?</p>
<pre><strong>./gst-launch-1.0 v4l2src device=/dev/video</strong><strong>4</strong><strong> ! videoscale ! videoconvert ! video/x-raw,format=YUY2, framerate=30/1, width=</strong><strong><font face="Liberation Mono, monospace"><font style="font-size: 10pt" size="2"><b>640</b></font></font></strong><strong>, height=</strong><strong><font face="Liberation Mono, monospace"><font style="font-size: 10pt" size="2"><b>480</b></font></font></strong><strong><font face="Liberation Mono, monospace"><font style="font-size: 10pt" size="2"><b>! </b></font></font></strong><strong><font face="Liberation Mono, monospace"><font style="font-size: 10pt" size="2"><b>alpha</b></font></font></strong><strong><font face="Liberation Mono, monospace"><font style="font-size: 10pt" size="2"><b> </b></font></font></strong><strong><font face="Liberation Mono, monospace"><font style="font-size: 10pt" size="2"><b>alpha=1</b></font></font></strong><strong> ! videobox border-alpha=0 left=-640 !
videomixer name=Mix ! videoconvert ! autovideosink v4l2src device=/dev/video</strong><strong><font face="Liberation Mono, monospace"><font style="font-size: 10pt" size="2"><b>2</b></font></font></strong><strong> ! videoscale ! videoconvert ! video/x-raw, format=YUY2, framerate=30/1, width=</strong><strong><font face="Liberation Mono, monospace"><font style="font-size: 10pt" size="2"><b>640</b></font></font></strong><strong>, height=</strong><strong><font face="Liberation Mono, monospace"><font style="font-size: 10pt" size="2"><b>480</b></font></font></strong><strong><font face="Liberation Mono, monospace"><font style="font-size: 10pt" size="2"><b>! </b></font></font></strong><strong><font face="Liberation Mono, monospace"><font style="font-size: 10pt" size="2"><b>alpha</b></font></font></strong><strong><font face="Liberation Mono, monospace"><font style="font-size: 10pt" size="2"><b> </b></font></font></strong><strong><font face="Liberation Mono, monospace"><font style="font-size: 10pt" size="2"><b>alpha=1</b></font></font></strong><strong> ! videobox border-alpha=0 right=-640 ! Mix.</strong></pre>
</blockquote>
<div><br>
</div>
<div>First recommendation, move away from videomixer and use
compositor (videomixer is just a backward shm on top of
compositor). As you have a live pipeline, you should release the
composition pressure by configurating a latency on the
compositor element. The latency is in nano-second, one of two
frames of latency should be fine in general, but the default is
none, and would only worked with perfectly synched sources which
has accurate latency (v4l2src does not have accurate latency, it
simply claims 1 frame, alway).</div>
<div><br>
</div>
<div>Second recommendation, consider adding a queue before you
display sink, this will improve the timeout logic inside the
compositor, by giving it a bit more freedome (with thread
seperation).</div>
</blockquote>
<p><br>
</p>
<p>Interesting! Does any of the above apply to *gl*videomixer as
well? Are there any specific considerations for using that in a
live pipeline? Should we also give that more latency? I see the
glmixerbin superclass has a property for that, also defaulting to
zero.</p>
<p>Kind regards,<br>
Michiel<br>
</p>
</body>
</html>