<div>I'm trying to send video using udp and I want the lowest possible latency.</div><div> </div><div>I was given this pipeline as an example; they are supposed to be 'better' than simply sending rtp video. More specifically, they are supposed to decrease latency and remove freezed-frames (and in my experience they do). But I don't understand what exactly is happening here, why video sender is also receiving something from video receiver (on 6005 port) and how does it help.</div><div> </div><div>Video sender:</div><div> </div><div>gst-launch-1.0 -v rtpbin ntp-sync=false name=rtpbin \<br />    v4l2src ! videoconvert ! video/x-raw, width=800, height=600, framerate=30/1 ! videoscale ! jpegenc ! rtpjpegpay ! rtpbin.send_rtp_sink_0 \<br />    rtpbin.send_rtp_src_0 ! udpsink port=6000 host=192.168.26.1 name=vrtpsink \<br />    rtpbin.send_rtcp_src_0 ! udpsink port=6001 host=192.168.26.1 sync=false async=false name=vrtcpsink \<br />    udpsrc port=6005 name=vrtpsrc ! rtpbin.recv_rtcp_sink_0</div><div> </div><div>Video receiver:</div><div> </div><div>gst-launch-1.0 -v rtpbin name=rtpbin buffer-mode=4 ntp-sync=true do-retransmition=false latency=10 drop-on-latency=true \<br />    udpsrc caps="application/x-rtp,media=video,clock-rate=90000,encoding-name=JPEG,payload=26" port=6000 ! rtpbin.recv_rtp_sink_0 \<br />    rtpbin. ! rtpjpegdepay ! jpegdec ! autovideosink sync=false \<br />    udpsrc port=6001 ! rtpbin.recv_rtcp_sink_0 \<br />    rtpbin.send_rtcp_src_0 ! udpsink port=6005 host=192.168.26.9 sync=false async=false  </div><div> </div><div>Can anyone please explain what is happening here and does this 'reverse rtcp' really reduce latency?</div>