Initially, I started with an imx6qsabresd reference board to receive 1920x1080 video stream using gstreamer. For this, I did:
sysctl -w net.core.rmem_max=8388608
sysctl -w net.core.wmem_max=8388608
To increase kernel UDP buffer size and used the following pipeline:
gst-launch-1.0 udpsrc do-timestamp=”false” port=5000 buffer-size=8388608 caps=\"video/mpegts\" ! aiurdemux streaming_latency=400 name=d d. ! queue ! vpudec ! overlaysink sync=false async=false name=videosink
Worked as expected.
However, I moved on to using a custom IMX6-based board running linux-imx 4.1.15 and u-boot_2019.04. However, using the same configuration above, nothing shows up on the monitor when sending 1920x1080 video. In fact, it does not show up anything for resolutions higher than 320x240 (which is automatically set when no width/height is specified).
The following are differences between the imx6qsabresd and custom IMX6-based board when doing "fbset" and "find /sys/ -name edid -exec cat {} \;" commands:
imx6qsabresd reference board:
fbset
mode "1920x1080-60"
# D: 148.500 MHz, H: 67.500 kHz, V: 60.000 Hz
geometry 1920 1080 1920 1088 16
timings 6734 148 88 36 4 44 5
hsync high
vsync high
rgba 5/11,6/5,5/0,0/0
endmode
find /sys/ -name edid -exec cat {} \;
0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 0x10 0xAC 0x70 0xA0 0x55 0x45 0x37 0x31
0x28 0x15 0x01 0x03 0x80 0x35 0x1E 0x78 0xEA 0x95 0x35 0xA1 0x59 0x57 0x9F 0x27
0x0E 0x50 0x54 0xA5 0x4B 0x00 0x71 0x4F 0x81 0x80 0xD1 0xC0 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x02 0x3A 0x80 0x18 0x71 0x38 0x2D 0x40 0x58 0x2C
0x45 0x00 0x13 0x2B 0x21 0x00 0x00 0x1E 0x00 0x00 0x00 0xFF 0x00 0x57 0x43 0x4D
0x46 0x54 0x31 0x39 0x54 0x31 0x37 0x45 0x55 0x0A 0x00 0x00 0x00 0xFC 0x00 0x44
0x45 0x4C 0x4C 0x20 0x53 0x54 0x32 0x34 0x32 0x31 0x4C 0x0A 0x00 0x00 0x00 0xFD
0x00 0x38 0x4C 0x1E 0x53 0x11 0x00 0x0A 0x20 0x20 0x20 0x20 0x20 0x20 0x01 0x98
0x02 0x03 0x1F 0xF1 0x4C 0x90 0x05 0x04 0x03 0x02 0x07 0x16 0x01 0x14 0x1F 0x12
0x13 0x23 0x09 0x07 0x07 0x65 0x03 0x0C 0x00 0x10 0x00 0x83 0x01 0x00 0x00 0x02
0x3A 0x80 0x18 0x71 0x38 0x2D 0x40 0x58 0x2C 0x45 0x00 0x13 0x2B 0x21 0x00 0x00
0x1E 0x01 0x1D 0x80 0x18 0x71 0x1C 0x16 0x20 0x58 0x2C 0x25 0x00 0x13 0x2B 0x21
0x00 0x00 0x9E 0x01 0x1D 0x00 0x72 0x51 0xD0 0x1E 0x20 0x6E 0x28 0x55 0x00 0x13
0x2B 0x21 0x00 0x00 0x1E 0x8C 0x0A 0xD0 0x8A 0x20 0xE0 0x2D 0x10 0x10 0x3E 0x96
0x00 0x13 0x2B 0x21 0x00 0x00 0x18 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x1B
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
custom IMX6-based board
fbset
mode "1920x1080-60"
# D: 148.500 MHz, H: 67.500 kHz, V: 60.000 Hz
geometry 1920 1080 1920 1088 32
timings 6734 148 88 36 4 44 5
hsync high
vsync high
rgba 8/16,8/8,8/0,8/24
endmode
find /sys/ -name edid -exec cat {} \;
0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 0x10 0xAC 0x6C 0xA0 0x55 0x45 0x37 0x31
0x28 0x15 0x01 0x03 0x80 0x35 0x1E 0x78 0xEA 0x95 0x35 0xA1 0x59 0x57 0x9F 0x27
0x0E 0x50 0x54 0xA5 0x4B 0x00 0x71 0x4F 0x81 0x80 0xD1 0xC0 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x02 0x3A 0x80 0x18 0x71 0x38 0x2D 0x40 0x58 0x2C
0x45 0x00 0x13 0x2B 0x21 0x00 0x00 0x1E 0x00 0x00 0x00 0xFF 0x00 0x57 0x43 0x4D
0x46 0x54 0x31 0x39 0x54 0x31 0x37 0x45 0x55 0x0A 0x00 0x00 0x00 0xFC 0x00 0x44
0x45 0x4C 0x4C 0x20 0x53 0x54 0x32 0x34 0x32 0x31 0x4C 0x0A 0x00 0x00 0x00 0xFD
0x00 0x38 0x4C 0x1E 0x53 0x11 0x00 0x0A 0x20 0x20 0x20 0x20 0x20 0x20 0x00 0x9D
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
Are these differences significant? Any suggestions as to what could be causing this issue?
Thank you
Found the issue.
Switch in use had flowcontrol disabled. Once enabled, no packet overruns were seen, and therefore, good video streaming.
Going deeper, I am starting to think these display settings I provided above do not make a difference in the streaming of 1080p video. To back this, I did a local test where instead of using udpsrc on the receiver pipeline above, I used filesrc to use a recorded file using the sender's pipeline (1080p, 30fps, 50mbps). When using this local pipeline, the video plays as expected. So the problem arises when using udpsrc.
I also seeing a lot of packet errors/overruns after running the pipeline:
eth0 Link encap:Ethernet HWaddr F6:16:60:C6:0A:2D
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::f416:60ff:fec6:a2d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:29174 errors:66798 dropped:0 overruns:66798 frame:0
TX packets:1774 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:39726279 (37.8 MiB) TX bytes:282331 (275.7 KiB)
Which is not the case when running on the imx6qsabresd reference board.
Interestingly enough is I'm getting packet overruns even when performing a simple TCP iperf test (see below). Running the same on the imx6qsabresd reference produces no packet overruns.
root@user:~#ifconfig eth0
eth0 Link encap:Ethernet HWaddr F6:16:60:C6:0A:2D
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::f416:60ff:fec6:a2d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:730649 errors:0 dropped:0 overruns:0 frame:0
TX packets:1488089 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1107457130 (1.0 GiB) TX bytes:2213140950 (2.0 GiB)
root@user:~#
root@user:~# iperf -s -i 1
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.1.1 port 5001 connected with 192.168.1.36 port 52110
[ ID] Interval Transfer Bandwidth
[ 4] 0.0- 1.0 sec 4.65 MBytes 39.0 Mbits/sec
[ 4] 1.0- 2.0 sec 4.71 MBytes 39.5 Mbits/sec
[ 4] 2.0- 3.0 sec 4.59 MBytes 38.5 Mbits/sec
[ 4] 3.0- 4.0 sec 4.69 MBytes 39.4 Mbits/sec
[ 4] 4.0- 5.0 sec 4.87 MBytes 40.9 Mbits/sec
[ 4] 5.0- 6.0 sec 4.70 MBytes 39.4 Mbits/sec
[ 4] 6.0- 7.0 sec 4.93 MBytes 41.3 Mbits/sec
[ 4] 7.0- 8.0 sec 4.86 MBytes 40.7 Mbits/sec
[ 4] 8.0- 9.0 sec 4.73 MBytes 39.7 Mbits/sec
[ 4] 9.0-10.0 sec 5.09 MBytes 42.7 Mbits/sec
[ 4] 0.0-10.0 sec 48.0 MBytes 40.1 Mbits/sec
^Croot@user:~#
root@user:~# ifconfig eth0
eth0 Link encap:Ethernet HWaddr F6:16:60:C6:0A:2D
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::f416:60ff:fec6:a2d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:765419 errors:1706 dropped:0 overruns:1706 frame:0
TX packets:1506340 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1160225824 (1.0 GiB) TX bytes:2214465992 (2.0 GiB)
root@user:~#
how about use command "ifconfig eth0 xx.xx.xx.xx"? or set ipaddr and serverip in your uboot? any difference?