Wim, Edward, thank you for replying. Sorry it&#39;s been a few days I&#39;ve gotten caught up in other projects. <br><br>The wealth of information you&#39;ve given me has been amazing. Thank you all so much. <br><br>First of all: I tried to get rid of the sync=false attribute in the receiving script. For some reason, just this time, mearly removing it did not create a very choppy video feed like it did last time I had the receiving computer on (which is an atom based net-top). However, I still got the &quot;this computer may be too slow or there may be a time stamp error&quot; message and the video had tremendous amounts of artifacts during fast movement. I had to increase the latency of gstrtpkitterbuffer to about 500ms to eliminate that message. To reduce the artifacts: I set drop-on-latency to be false. <br>
<br>So my receiving script now looks like:<br><br>gst-launch-0.10 udpsrc multicast-group=224.1.1.1 auto-multicast=true port=5000 caps=application/x-rtp ! gstrtpjitterbuffer drop-on-latency=false latency=500  ! rtph264depay ! ffdec_h264 ! xvimagesink<br>
<br>Although it does add some latency, it&#39;s not too bad. <br><br>Now onto the sending script:<br><br>Adding in the queues seemed to help, but not significantly and I couldn&#39;t quantitatively measure a difference. If adding queues adds more threads to the process, would this only benefit multi-core systems? I&#39;ve heard that multi-threaded applications work better, even on single core machines. I&#39;d like to know if this would be any benifit to single core machines because I&#39;d like to port these scripts to a little arm based computer platform called the Beagleboard. <br>
<br>Setting tune to zero latency helped speed up the script tremendously, reducing the delay by about half as much. <br><br>So my current send script looks like this:<br>gst-launch-0.10 v4l2src ! queue ! &#39;video/x-raw-yuv,width=640,height=480&#39; ! x264enc bitrate=500 speed-preset=superfast tune=zerolatency ! queue ! rtph264pay ! udpsink host=224.1.1.1 port=5000 auto-multicast=true<br>
<br>I did some research about the speed-preset option. Apparently it adjusts a lot of individual parameters of the video compression as sort of an easy way to trade quality for speed. One of the things it does change, among other things is b-frames. I don&#39;t know very much about video compression, but I believe b-frames are frames that are based on both previous and future frames. By eliminating them you&#39;re only going to have I and P frames. This would mean that the amount of ways you have to compress the video is going to go down so there is the potential for the video to take up more bandwidth. <br>
<br>Here are some of my sources:<br><a href="http://mewiki.project357.com/wiki/X264_Settings">http://mewiki.project357.com/wiki/X264_Settings</a><br><a href="http://forum.doom9.org/showthread.php?t=148149">http://forum.doom9.org/showthread.php?t=148149</a><br>
<a href="http://en.wikipedia.org/wiki/Video_compression_picture_types">http://en.wikipedia.org/wiki/Video_compression_picture_types</a><br><br>It also seems like there is a tremendous amount of parameters to change to tailor video compression to the needs of an application and it seems overwhelming. <br>
<br><div class="gmail_quote">On Wed, Mar 14, 2012 at 1:21 AM, Edward Hervey <span dir="ltr">&lt;<a href="mailto:bilboed@gmail.com">bilboed@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On Tue, 2012-03-13 at 21:40 +0100, Wim Taymans wrote:<br>
&gt; On 03/13/2012 08:59 PM, W.A. Garrett Weaver wrote:<br>
</div><div class="im">&gt; &gt; You are right about latency being either from the network or the<br>
&gt; &gt; sender. In my case it is from the sender. Changing the sender script<br>
&gt; &gt; dramatically reduced latency. The thing that was changed was adjusting<br>
&gt; &gt; the speed-preset option in the x264enc. My latest sender script is:<br>
&gt; &gt;<br>
&gt; &gt; gst-launch-0.10 v4l2src ! &#39;video/x-raw-yuv,width=640,height=480&#39; !<br>
&gt; &gt; x264enc bitrate=500 speed-preset=superfast ! rtph264pay ! udpsink<br>
&gt; &gt; host=244.1.1.1 port=5000 auto-multicast=true<br>
&gt;<br>
&gt; If you are using x264enc you should consider using tune=zerolatency as well.<br>
<br>
</div>  To expand on that, what Wim is pointing out is that there is a<br>
difference between processing speed and latency.<br>
  What you did only reduced the processing speed... but the encoder was<br>
still using reordered frame encoding (i.e. use the information from<br>
multiple neighboring frames to end up with a potentially better<br>
information-per-bit).<br>
  But that doesn&#39;t reduce the latency. The encoder will have to delay<br>
the output by the number of reordered frames (which can go quite high,<br>
like 15, 25 or even more frames). So it will only output the encoded<br>
frame X when it received frame X+25.<br>
  By using the zerolatency preset, you are essentially telling the<br>
encoder to produce a stream without any reordered frames (i.e. no B<br>
frames), allowing it to push out the encoded frame as soon as it&#39;s<br>
processed.<br>
  This is the very drastic solution, you could also, depending on what<br>
your goal is, find a middle ground by allowing a lower-than-default<br>
number of reordered frames (3-5), thereby allowing the encoder a chance<br>
to produce a better compression rate while at the same time not<br>
introducing a too high latency.<br>
<br>
  Summary : processing speed != latency :)<br>
<br>
    Edward<br>
<br>
P.S. You also want to put some queues just after v4l2src and just after<br>
the encoder. Otherwise you are processing everything in one thread. By<br>
adding those queues, you are essentially putting capture, encoding and<br>
payloading/sending into dedicated threads, reducing even more the<br>
latency (the encoder doesn&#39;t need to block the capture, and the<br>
payloading/sending doesn&#39;t neet to block the encoding and capture).<br>
<div class="HOEnZb"><div class="h5"><br>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div><b>W.A. Garrett Weaver </b></div>
<div><a href="mailto:weaverg@email.arizona.edu" target="_blank">weaverg@email.arizona.edu</a></div><br>