<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>i.MX Processors中的主题 How to improve the quality of video streaming from MX6 VPU through WAN?</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/How-to-improve-the-quality-of-video-streaming-from-MX6-VPU/m-p/329204#M44319</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We are trying to stream an H.264 encoded video from MX6 to a target host through WAN.&lt;/P&gt;&lt;P&gt;The target host can be reached and the network performance (such as bandwidth, packet drop rate, etc)&lt;/P&gt;&lt;P&gt;between MX6 and the remote host was measured by 'iperf'.&lt;/P&gt;&lt;P&gt;Following are the iperf measure results.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;iperf UDP client:&lt;/P&gt;&lt;P&gt;iperf -u -c &amp;lt;remote_host_ip&amp;gt; -t 30 -i 1 -b 200k -p 5004&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;iperf UDP server:&lt;/P&gt;&lt;P&gt;iperf -u -s -i 1 -p 5004&lt;/P&gt;&lt;P&gt;------------------------------------------------------------&lt;/P&gt;&lt;P&gt;Server listening on UDP port 5004&lt;/P&gt;&lt;P&gt;Receiving 512 byte datagrams&lt;/P&gt;&lt;P&gt;UDP buffer size:&amp;nbsp; 176 KByte (default)&lt;/P&gt;&lt;P&gt;------------------------------------------------------------&lt;/P&gt;&lt;P&gt;[ ID] Interval&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Transfer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bandwidth&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Jitter&amp;nbsp;&amp;nbsp; Lost/Total Datagrams&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3]&amp;nbsp; 0.0- 1.0 sec&amp;nbsp; 7.50 KBytes&amp;nbsp; 61.4 Kbits/sec&amp;nbsp;&amp;nbsp; 7.197 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 15 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3]&amp;nbsp; 1.0- 2.0 sec&amp;nbsp; 8.00 KBytes&amp;nbsp; 65.5 Kbits/sec&amp;nbsp; 30.068 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 16 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3]&amp;nbsp; 2.0- 3.0 sec&amp;nbsp; 8.50 KBytes&amp;nbsp; 69.6 Kbits/sec&amp;nbsp; 39.943 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 17 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3]&amp;nbsp; 3.0- 4.0 sec&amp;nbsp; 5.50 KBytes&amp;nbsp; 45.1 Kbits/sec&amp;nbsp; 50.298 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 11 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3]&amp;nbsp; 4.0- 5.0 sec&amp;nbsp; 11.5 KBytes&amp;nbsp; 94.2 Kbits/sec&amp;nbsp; 28.516 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 2/&amp;nbsp;&amp;nbsp; 25 (8%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3]&amp;nbsp; 5.0- 6.0 sec&amp;nbsp; 9.00 KBytes&amp;nbsp; 73.7 Kbits/sec&amp;nbsp; 18.496 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 18 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3]&amp;nbsp; 6.0- 7.0 sec&amp;nbsp; 8.00 KBytes&amp;nbsp; 65.5 Kbits/sec&amp;nbsp; 14.185 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 16 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3]&amp;nbsp; 7.0- 8.0 sec&amp;nbsp; 9.00 KBytes&amp;nbsp; 73.7 Kbits/sec&amp;nbsp; 14.121 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 18 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3]&amp;nbsp; 8.0- 9.0 sec&amp;nbsp; 8.00 KBytes&amp;nbsp; 65.5 Kbits/sec&amp;nbsp; 13.028 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 16 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3]&amp;nbsp; 9.0-10.0 sec&amp;nbsp; 9.00 KBytes&amp;nbsp; 73.7 Kbits/sec&amp;nbsp; 14.275 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 18 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 10.0-11.0 sec&amp;nbsp; 8.00 KBytes&amp;nbsp; 65.5 Kbits/sec&amp;nbsp; 15.398 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 16 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 11.0-12.0 sec&amp;nbsp; 7.50 KBytes&amp;nbsp; 61.4 Kbits/sec&amp;nbsp; 21.128 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 15 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 12.0-13.0 sec&amp;nbsp; 1.50 KBytes&amp;nbsp; 12.3 Kbits/sec&amp;nbsp; 47.014 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp;&amp;nbsp; 3 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 13.0-14.0 sec&amp;nbsp; 5.00 KBytes&amp;nbsp; 41.0 Kbits/sec&amp;nbsp; 70.419 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 10 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 14.0-15.0 sec&amp;nbsp; 10.5 KBytes&amp;nbsp; 86.0 Kbits/sec&amp;nbsp; 52.538 ms&amp;nbsp;&amp;nbsp; 19/&amp;nbsp;&amp;nbsp; 40 (48%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 15.0-16.0 sec&amp;nbsp; 9.00 KBytes&amp;nbsp; 73.7 Kbits/sec&amp;nbsp; 27.084 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 18 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 16.0-17.0 sec&amp;nbsp; 8.00 KBytes&amp;nbsp; 65.5 Kbits/sec&amp;nbsp; 18.584 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 16 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 17.0-18.0 sec&amp;nbsp; 9.00 KBytes&amp;nbsp; 73.7 Kbits/sec&amp;nbsp; 16.952 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 18 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 18.0-19.0 sec&amp;nbsp; 8.00 KBytes&amp;nbsp; 65.5 Kbits/sec&amp;nbsp; 14.732 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 16 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 19.0-20.0 sec&amp;nbsp; 9.00 KBytes&amp;nbsp; 73.7 Kbits/sec&amp;nbsp; 16.133 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 18 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 20.0-21.0 sec&amp;nbsp; 5.50 KBytes&amp;nbsp; 45.1 Kbits/sec&amp;nbsp; 30.969 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 11 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 21.0-22.0 sec&amp;nbsp; 11.5 KBytes&amp;nbsp; 94.2 Kbits/sec&amp;nbsp; 28.372 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 23 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 22.0-23.0 sec&amp;nbsp; 8.50 KBytes&amp;nbsp; 69.6 Kbits/sec&amp;nbsp; 26.552 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 17 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 23.0-24.0 sec&amp;nbsp; 7.00 KBytes&amp;nbsp; 57.3 Kbits/sec&amp;nbsp; 30.240 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 14 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 24.0-25.0 sec&amp;nbsp; 10.0 KBytes&amp;nbsp; 81.9 Kbits/sec&amp;nbsp; 21.584 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 20 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 25.0-26.0 sec&amp;nbsp; 8.50 KBytes&amp;nbsp; 69.6 Kbits/sec&amp;nbsp; 18.394 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 17 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 26.0-27.0 sec&amp;nbsp; 8.50 KBytes&amp;nbsp; 69.6 Kbits/sec&amp;nbsp; 17.797 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 17 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 27.0-28.0 sec&amp;nbsp; 8.50 KBytes&amp;nbsp; 69.6 Kbits/sec&amp;nbsp; 14.014 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 17 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 28.0-29.0 sec&amp;nbsp; 8.50 KBytes&amp;nbsp; 69.6 Kbits/sec&amp;nbsp; 15.898 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 17 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 29.0-30.0 sec&amp;nbsp; 8.50 KBytes&amp;nbsp; 69.6 Kbits/sec&amp;nbsp; 15.459 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 17 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3]&amp;nbsp; 0.0-30.1 sec&amp;nbsp;&amp;nbsp; 246 KBytes&amp;nbsp; 66.8 Kbits/sec&amp;nbsp; 16.422 ms&amp;nbsp;&amp;nbsp; 21/&amp;nbsp; 512 (4.1%)&lt;/P&gt;&lt;P&gt;------------------------------------------------------------&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;From these results, it seems that it is basically safe to send UDP packets at the rate of 200Kbps,&lt;/P&gt;&lt;P&gt;with low packet lost rate (about 4%).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In our test,&amp;nbsp; we run a gstreamer pipeline on MX6 to encode the live video into H.264 and then transfer using RTP/UDP.&lt;/P&gt;&lt;P&gt;And on the remote target host, a gstreamer pipeline is running to receive, decode and play the incoming live video.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Following is the receiving pipeline (on remote PC):&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Recver pipeline:&lt;/P&gt;&lt;P&gt;gst-launch -v udpsrc port=5004 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z0JAHqaAtBJkAA\\=\\=\\,aM4wpIAA\", ssrc=(uint)1525174040, payload=(int)96, clock-base=(uint)3621853829, seqnum-base=(uint)62250'&amp;nbsp; ! rtph264depay ! decodebin ! xvimagesink sync=false async=false&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Sender pipeline is described as follows with different parameters.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. With some initial default parameters, the video packet lost rate is very high,&lt;/P&gt;&lt;P&gt;even up to 80%~90% (denoted as Lost_Rate in the following description).&lt;/P&gt;&lt;P&gt;In this case, the decoded video quality is unacceptable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is the sender pipeline on MX6 (320x240@15fps) with high video packet lost rate:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;gst-launch -v tvsrc device=/dev/video0 ! 'video/x-raw-yuv,format=(fourcc)UYVY,width=720,height=576,framerate=15/1' ! mfw_ipucsc ! 'video/x-raw-yuv,format=(fourcc)I420, width=320,height=240,framerate=15/1'! mfw_deinterlacer ! vpuenc codec=avc gopsize=2 ! video/x-h264,width=320,height=240 ! rtph264pay ! udpsink host=&amp;lt;remote_host_ip&amp;gt; port=5004&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note: this pipeline works perfectly when MX6 device and&amp;nbsp; the target&amp;nbsp; host are in the same LAN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2. To decrease the packet lost rate, we tried to decrease the size of each UDP packet,&lt;/P&gt;&lt;P&gt;by setting "mtu=512" property of element "rtph264pay", to avaid the potential fragmentation of the UDP packets in WAN.&lt;/P&gt;&lt;P&gt;However, with this setting, the video packet lost rate is still high, almost equal to "Lost_Rate", without any improvement.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;gst-launch -v tvsrc device=/dev/video0 ! 'video/x-raw-yuv,format=(fourcc)UYVY,width=720,height=576,framerate=15/1' ! mfw_ipucsc ! 'video/x-raw-yuv,format=(fourcc)I420, width=320,height=240,framerate=15/1'! mfw_deinterlacer ! vpuenc codec=avc gopsize=2 ! video/x-h264,width=320,height=240 ! rtph264pay mtu=512 ! udpsink host=&amp;lt;remote_host_ip&amp;gt; port=5004&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;3. If set the "bitrate" property of element "vpuenc" to "50000"(that is, 50kbps), the packet lost rate is significantly decreased,&lt;/P&gt;&lt;P&gt;alsmot lower than %5. And of course, the decoded video quality is also dramatically improved.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;gst-launch -v tvsrc device=/dev/video0 ! 'video/x-raw-yuv,format=(fourcc)UYVY,width=720,height=576,framerate=15/1' ! mfw_ipucsc ! 'video/x-raw-yuv,format=(fourcc)I420, width=320,height=240,framerate=15/1'! mfw_deinterlacer ! vpuenc codec=avc bitrate=50000 gopsize=2 ! video/x-h264,width=320,height=240 ! rtph264pay mtu=512 ! udpsink host=&amp;lt;remote_host_ip&amp;gt; port=5004&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, if we change "bitrate" from "50kbps" to "200kbps", the packet loss rate is significantly increased again.&lt;/P&gt;&lt;P&gt;This is quite different from the aforementioned iperf measure results.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Seems that the encoded video packet lost rate is possibly related to the way how the encoded video data is sent out.&lt;/P&gt;&lt;P&gt;Does the "bitrate" property of the "vpuenc" element mean that the MX6 vpu encoder will continuously send out encoded video data at the rate of "bitrate" ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And what is the correct unit of the "vpuenc" element's "bitrate" property, in "bps" or "kbps"?&lt;/P&gt;&lt;P&gt;According to the source code of "vpuenc" (gst-fsl-plugins-3.0.7/src/video/vpu/src/vpuenc.c), the unit should be "bps", right?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"And if there is no rate control (by setting "bitrate=0"), the pictures are encoded with a quantization parameter&lt;/P&gt;&lt;P&gt;equal to quantParam in EncParam. "&lt;/P&gt;&lt;P&gt;So for my application context, which one is better, rate control with fixed bitrate or without rate control?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;4. The "gopsize" property of "vpuenc" can signifcantly affect the decoded video quality on the receiver side,&lt;/P&gt;&lt;P&gt;as there is inevitable packet lost through WAN.&amp;nbsp; So here we set "gopsize" to 2, which means there is one I frame every two frames.&lt;/P&gt;&lt;P&gt;However, if setting "gopsize=1", each frame is encoded as I frame, the decoded video quality is worse than the case when "gopsize=2".&lt;/P&gt;&lt;P&gt;Why? Is it because higher bitrate is required when gopsize is 1 and every single packet loss will cause the corresponding video frame to be corrupted?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Could you please give me some suggestion on the "RIGHT" setting of properties of the sender/receiver pipelines,&lt;/P&gt;&lt;P&gt;in order to get a better decoded video quality on the remote receiver host through WAN?&lt;/P&gt;&lt;P&gt;(such as how to set the correct "bitrate" and "gopsize" property of "vpuenc", or something else)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Robbie&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 19 Mar 2015 05:26:30 GMT</pubDate>
    <dc:creator>RobbieJiang</dc:creator>
    <dc:date>2015-03-19T05:26:30Z</dc:date>
    <item>
      <title>How to improve the quality of video streaming from MX6 VPU through WAN?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-improve-the-quality-of-video-streaming-from-MX6-VPU/m-p/329204#M44319</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We are trying to stream an H.264 encoded video from MX6 to a target host through WAN.&lt;/P&gt;&lt;P&gt;The target host can be reached and the network performance (such as bandwidth, packet drop rate, etc)&lt;/P&gt;&lt;P&gt;between MX6 and the remote host was measured by 'iperf'.&lt;/P&gt;&lt;P&gt;Following are the iperf measure results.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;iperf UDP client:&lt;/P&gt;&lt;P&gt;iperf -u -c &amp;lt;remote_host_ip&amp;gt; -t 30 -i 1 -b 200k -p 5004&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;iperf UDP server:&lt;/P&gt;&lt;P&gt;iperf -u -s -i 1 -p 5004&lt;/P&gt;&lt;P&gt;------------------------------------------------------------&lt;/P&gt;&lt;P&gt;Server listening on UDP port 5004&lt;/P&gt;&lt;P&gt;Receiving 512 byte datagrams&lt;/P&gt;&lt;P&gt;UDP buffer size:&amp;nbsp; 176 KByte (default)&lt;/P&gt;&lt;P&gt;------------------------------------------------------------&lt;/P&gt;&lt;P&gt;[ ID] Interval&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Transfer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bandwidth&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Jitter&amp;nbsp;&amp;nbsp; Lost/Total Datagrams&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3]&amp;nbsp; 0.0- 1.0 sec&amp;nbsp; 7.50 KBytes&amp;nbsp; 61.4 Kbits/sec&amp;nbsp;&amp;nbsp; 7.197 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 15 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3]&amp;nbsp; 1.0- 2.0 sec&amp;nbsp; 8.00 KBytes&amp;nbsp; 65.5 Kbits/sec&amp;nbsp; 30.068 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 16 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3]&amp;nbsp; 2.0- 3.0 sec&amp;nbsp; 8.50 KBytes&amp;nbsp; 69.6 Kbits/sec&amp;nbsp; 39.943 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 17 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3]&amp;nbsp; 3.0- 4.0 sec&amp;nbsp; 5.50 KBytes&amp;nbsp; 45.1 Kbits/sec&amp;nbsp; 50.298 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 11 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3]&amp;nbsp; 4.0- 5.0 sec&amp;nbsp; 11.5 KBytes&amp;nbsp; 94.2 Kbits/sec&amp;nbsp; 28.516 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 2/&amp;nbsp;&amp;nbsp; 25 (8%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3]&amp;nbsp; 5.0- 6.0 sec&amp;nbsp; 9.00 KBytes&amp;nbsp; 73.7 Kbits/sec&amp;nbsp; 18.496 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 18 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3]&amp;nbsp; 6.0- 7.0 sec&amp;nbsp; 8.00 KBytes&amp;nbsp; 65.5 Kbits/sec&amp;nbsp; 14.185 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 16 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3]&amp;nbsp; 7.0- 8.0 sec&amp;nbsp; 9.00 KBytes&amp;nbsp; 73.7 Kbits/sec&amp;nbsp; 14.121 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 18 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3]&amp;nbsp; 8.0- 9.0 sec&amp;nbsp; 8.00 KBytes&amp;nbsp; 65.5 Kbits/sec&amp;nbsp; 13.028 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 16 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3]&amp;nbsp; 9.0-10.0 sec&amp;nbsp; 9.00 KBytes&amp;nbsp; 73.7 Kbits/sec&amp;nbsp; 14.275 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 18 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 10.0-11.0 sec&amp;nbsp; 8.00 KBytes&amp;nbsp; 65.5 Kbits/sec&amp;nbsp; 15.398 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 16 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 11.0-12.0 sec&amp;nbsp; 7.50 KBytes&amp;nbsp; 61.4 Kbits/sec&amp;nbsp; 21.128 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 15 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 12.0-13.0 sec&amp;nbsp; 1.50 KBytes&amp;nbsp; 12.3 Kbits/sec&amp;nbsp; 47.014 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp;&amp;nbsp; 3 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 13.0-14.0 sec&amp;nbsp; 5.00 KBytes&amp;nbsp; 41.0 Kbits/sec&amp;nbsp; 70.419 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 10 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 14.0-15.0 sec&amp;nbsp; 10.5 KBytes&amp;nbsp; 86.0 Kbits/sec&amp;nbsp; 52.538 ms&amp;nbsp;&amp;nbsp; 19/&amp;nbsp;&amp;nbsp; 40 (48%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 15.0-16.0 sec&amp;nbsp; 9.00 KBytes&amp;nbsp; 73.7 Kbits/sec&amp;nbsp; 27.084 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 18 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 16.0-17.0 sec&amp;nbsp; 8.00 KBytes&amp;nbsp; 65.5 Kbits/sec&amp;nbsp; 18.584 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 16 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 17.0-18.0 sec&amp;nbsp; 9.00 KBytes&amp;nbsp; 73.7 Kbits/sec&amp;nbsp; 16.952 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 18 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 18.0-19.0 sec&amp;nbsp; 8.00 KBytes&amp;nbsp; 65.5 Kbits/sec&amp;nbsp; 14.732 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 16 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 19.0-20.0 sec&amp;nbsp; 9.00 KBytes&amp;nbsp; 73.7 Kbits/sec&amp;nbsp; 16.133 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 18 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 20.0-21.0 sec&amp;nbsp; 5.50 KBytes&amp;nbsp; 45.1 Kbits/sec&amp;nbsp; 30.969 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 11 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 21.0-22.0 sec&amp;nbsp; 11.5 KBytes&amp;nbsp; 94.2 Kbits/sec&amp;nbsp; 28.372 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 23 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 22.0-23.0 sec&amp;nbsp; 8.50 KBytes&amp;nbsp; 69.6 Kbits/sec&amp;nbsp; 26.552 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 17 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 23.0-24.0 sec&amp;nbsp; 7.00 KBytes&amp;nbsp; 57.3 Kbits/sec&amp;nbsp; 30.240 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 14 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 24.0-25.0 sec&amp;nbsp; 10.0 KBytes&amp;nbsp; 81.9 Kbits/sec&amp;nbsp; 21.584 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 20 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 25.0-26.0 sec&amp;nbsp; 8.50 KBytes&amp;nbsp; 69.6 Kbits/sec&amp;nbsp; 18.394 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 17 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 26.0-27.0 sec&amp;nbsp; 8.50 KBytes&amp;nbsp; 69.6 Kbits/sec&amp;nbsp; 17.797 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 17 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 27.0-28.0 sec&amp;nbsp; 8.50 KBytes&amp;nbsp; 69.6 Kbits/sec&amp;nbsp; 14.014 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 17 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 28.0-29.0 sec&amp;nbsp; 8.50 KBytes&amp;nbsp; 69.6 Kbits/sec&amp;nbsp; 15.898 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 17 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3] 29.0-30.0 sec&amp;nbsp; 8.50 KBytes&amp;nbsp; 69.6 Kbits/sec&amp;nbsp; 15.459 ms&amp;nbsp;&amp;nbsp;&amp;nbsp; 0/&amp;nbsp;&amp;nbsp; 17 (0%)&lt;/P&gt;&lt;P&gt;[&amp;nbsp; 3]&amp;nbsp; 0.0-30.1 sec&amp;nbsp;&amp;nbsp; 246 KBytes&amp;nbsp; 66.8 Kbits/sec&amp;nbsp; 16.422 ms&amp;nbsp;&amp;nbsp; 21/&amp;nbsp; 512 (4.1%)&lt;/P&gt;&lt;P&gt;------------------------------------------------------------&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;From these results, it seems that it is basically safe to send UDP packets at the rate of 200Kbps,&lt;/P&gt;&lt;P&gt;with low packet lost rate (about 4%).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In our test,&amp;nbsp; we run a gstreamer pipeline on MX6 to encode the live video into H.264 and then transfer using RTP/UDP.&lt;/P&gt;&lt;P&gt;And on the remote target host, a gstreamer pipeline is running to receive, decode and play the incoming live video.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Following is the receiving pipeline (on remote PC):&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Recver pipeline:&lt;/P&gt;&lt;P&gt;gst-launch -v udpsrc port=5004 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z0JAHqaAtBJkAA\\=\\=\\,aM4wpIAA\", ssrc=(uint)1525174040, payload=(int)96, clock-base=(uint)3621853829, seqnum-base=(uint)62250'&amp;nbsp; ! rtph264depay ! decodebin ! xvimagesink sync=false async=false&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Sender pipeline is described as follows with different parameters.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. With some initial default parameters, the video packet lost rate is very high,&lt;/P&gt;&lt;P&gt;even up to 80%~90% (denoted as Lost_Rate in the following description).&lt;/P&gt;&lt;P&gt;In this case, the decoded video quality is unacceptable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is the sender pipeline on MX6 (320x240@15fps) with high video packet lost rate:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;gst-launch -v tvsrc device=/dev/video0 ! 'video/x-raw-yuv,format=(fourcc)UYVY,width=720,height=576,framerate=15/1' ! mfw_ipucsc ! 'video/x-raw-yuv,format=(fourcc)I420, width=320,height=240,framerate=15/1'! mfw_deinterlacer ! vpuenc codec=avc gopsize=2 ! video/x-h264,width=320,height=240 ! rtph264pay ! udpsink host=&amp;lt;remote_host_ip&amp;gt; port=5004&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note: this pipeline works perfectly when MX6 device and&amp;nbsp; the target&amp;nbsp; host are in the same LAN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2. To decrease the packet lost rate, we tried to decrease the size of each UDP packet,&lt;/P&gt;&lt;P&gt;by setting "mtu=512" property of element "rtph264pay", to avaid the potential fragmentation of the UDP packets in WAN.&lt;/P&gt;&lt;P&gt;However, with this setting, the video packet lost rate is still high, almost equal to "Lost_Rate", without any improvement.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;gst-launch -v tvsrc device=/dev/video0 ! 'video/x-raw-yuv,format=(fourcc)UYVY,width=720,height=576,framerate=15/1' ! mfw_ipucsc ! 'video/x-raw-yuv,format=(fourcc)I420, width=320,height=240,framerate=15/1'! mfw_deinterlacer ! vpuenc codec=avc gopsize=2 ! video/x-h264,width=320,height=240 ! rtph264pay mtu=512 ! udpsink host=&amp;lt;remote_host_ip&amp;gt; port=5004&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;3. If set the "bitrate" property of element "vpuenc" to "50000"(that is, 50kbps), the packet lost rate is significantly decreased,&lt;/P&gt;&lt;P&gt;alsmot lower than %5. And of course, the decoded video quality is also dramatically improved.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;gst-launch -v tvsrc device=/dev/video0 ! 'video/x-raw-yuv,format=(fourcc)UYVY,width=720,height=576,framerate=15/1' ! mfw_ipucsc ! 'video/x-raw-yuv,format=(fourcc)I420, width=320,height=240,framerate=15/1'! mfw_deinterlacer ! vpuenc codec=avc bitrate=50000 gopsize=2 ! video/x-h264,width=320,height=240 ! rtph264pay mtu=512 ! udpsink host=&amp;lt;remote_host_ip&amp;gt; port=5004&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, if we change "bitrate" from "50kbps" to "200kbps", the packet loss rate is significantly increased again.&lt;/P&gt;&lt;P&gt;This is quite different from the aforementioned iperf measure results.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Seems that the encoded video packet lost rate is possibly related to the way how the encoded video data is sent out.&lt;/P&gt;&lt;P&gt;Does the "bitrate" property of the "vpuenc" element mean that the MX6 vpu encoder will continuously send out encoded video data at the rate of "bitrate" ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And what is the correct unit of the "vpuenc" element's "bitrate" property, in "bps" or "kbps"?&lt;/P&gt;&lt;P&gt;According to the source code of "vpuenc" (gst-fsl-plugins-3.0.7/src/video/vpu/src/vpuenc.c), the unit should be "bps", right?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"And if there is no rate control (by setting "bitrate=0"), the pictures are encoded with a quantization parameter&lt;/P&gt;&lt;P&gt;equal to quantParam in EncParam. "&lt;/P&gt;&lt;P&gt;So for my application context, which one is better, rate control with fixed bitrate or without rate control?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;4. The "gopsize" property of "vpuenc" can signifcantly affect the decoded video quality on the receiver side,&lt;/P&gt;&lt;P&gt;as there is inevitable packet lost through WAN.&amp;nbsp; So here we set "gopsize" to 2, which means there is one I frame every two frames.&lt;/P&gt;&lt;P&gt;However, if setting "gopsize=1", each frame is encoded as I frame, the decoded video quality is worse than the case when "gopsize=2".&lt;/P&gt;&lt;P&gt;Why? Is it because higher bitrate is required when gopsize is 1 and every single packet loss will cause the corresponding video frame to be corrupted?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Could you please give me some suggestion on the "RIGHT" setting of properties of the sender/receiver pipelines,&lt;/P&gt;&lt;P&gt;in order to get a better decoded video quality on the remote receiver host through WAN?&lt;/P&gt;&lt;P&gt;(such as how to set the correct "bitrate" and "gopsize" property of "vpuenc", or something else)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Robbie&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Mar 2015 05:26:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-improve-the-quality-of-video-streaming-from-MX6-VPU/m-p/329204#M44319</guid>
      <dc:creator>RobbieJiang</dc:creator>
      <dc:date>2015-03-19T05:26:30Z</dc:date>
    </item>
    <item>
      <title>Re: How to improve the quality of video streaming from MX6 VPU through WAN?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-improve-the-quality-of-video-streaming-from-MX6-VPU/m-p/329205#M44320</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;nbsp; As I can see, in Your Gstreamer pipeline buffering via "queue" element is not used.&lt;BR /&gt; Please try it.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Yuri&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Mar 2015 08:43:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-improve-the-quality-of-video-streaming-from-MX6-VPU/m-p/329205#M44320</guid>
      <dc:creator>Yuri</dc:creator>
      <dc:date>2015-03-31T08:43:11Z</dc:date>
    </item>
  </channel>
</rss>

