Zynq UltraScale+ MPSoC VCU TRD 2019.1
Zynq UltraScale+ MPSoC VCU TRD 2019.1 - VCU TRD : Multi Stream
Zynq UltraScale+ MPSoC VCU TRD 2019.1 - Run and Build Flow
Xilinx DRM KMS DisplayPort 1.4 TX Subsystem Driver
Xilinx DRM KMS HDMI-Tx Driver
HDMI Receiver Subsystem v3.1 - Patch Updates for the HDMI Receiver Subsystem v3.1 in Vivado 2018.1
音视频编解码: YUV存储格式中的YUV420P,YUV420SP,NV12, NV21理解(转)
常用视频像素格式NV12、NV21、I420、YV12、YUYV
对颜色空间YUV、RGB的理解
图解YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P、YUV444P的区别
ZCU106 VCU Linux驱动转裸机驱动篇(一)
hi3519v101 h265编码器编码出第一帧延迟是多少毫秒?
Frambuffer_rd在Windows下的vivado 2020.1编译报错解决方法
AR# 72324 2019.1 - Zynq UltraScale+ MPSoC VCU - Patches for 2019.1 LogiCORE H.264/H.265 Video Codec Unit (VCU) - Linux Kernel Module, VCU Control Software, GStreamer and OMX
AR# 73275 PetaLinux - Zynq UltraScale+ MPSoC VCU - Why Do I see OpenSSL errors when RTMP is enabled in the 2019.1 or 2019.2 VCU TRD in gstreamer1.0-plugins-bad?
AR# 73049 2019.2 Zynq UltraScale+ MPSoC VCU — 使用示例 GStreamer 应用时,最后一行中的 QP 值更新不正确
MPSoC PYNQ框架集成VCU-1.VCU在ZCU104上运行
xilinx平台dma分析
VCU: 一个简单的 VCU 视频编解码设计
Xilinx Zynq UltraScale+ MPSoC VCU ROI Demo跑
Hobbit玩转Zynq MPSoC系列之1:VCU解码+DP显示
Hobbit玩转Zynq MPSoC系列之2:TPG输入+VCU编码+rtp网络传输
在VCUTRD 2020.1 里设置HDMI-TX显示QT界面
MPSOC VCU Example Gstreamer pipelines YUV 422 10bit
[分享] 独立编译VCU Ctrl-sw的办法
ZCU106使用VCU TRD的MIPI的例子
【分享】ZCU106在PLDDR实现超低延时编码
RK3399探索之旅 Display子系统 从modetest 到 DRM driver
Gstreamer中的sink插件及区别
【GStreamer】gstreamer工具详解之:gst-launch-1.0
gst-launch-1.0用法小记
Download GStreamer
H265 Profile & Level & Tier 介绍
Xilinx FPGA I/O电平标准简介
Virtex-7 DIFF_HSTL_II_18和DIFF_HSTL_II_DCI_18电平使用问题
【工程师分享】MPSoC VCU Ctrl-SW 2020.2 编码不同Stride的YUV文件
【工程师分享】MPSoC VCU Ctrl-SW 2020.2 输出NV12的YUV文件
【分享】查看VCU ctrlsw_decoder解码的XV20视频
ZCU106–(2)–20180626-0703
基于ZCU104做了一个工程,有需要可联系我。
RGB 模型是目前常用的一种彩色信息表达方式,它使用红、绿、蓝三原色的亮度来定量表示颜色。该模型也称为加色混色模型,是以RGB三色光互相叠加来实现混色的方法,因而适合于显示器等发光体的显示。
Y表示亮度,CbCr表示颜色,可以粗浅地视YUV为YCbCr。怎么表示颜色,引用网上的一张图,
YUV采样方式有三种,Chroma Resampler
用于在这三个方式中进行转换,
YUV的数据组织格式有两种,planar和packed,
YUV每个分量占一个字节,一副图像的YUV444大小为x*y*3
,YUV420大小为x*y*3/2
。
RGB和YUV可通过RGB to YCrCb Color-Space Converter
和YCrCb to RGB Color-Space Converter
进行转换。
一个6*4的图像的NV12存储方式如下,
axis video格式,YUV420和YUV422是兼容的,每隔一行少了一次色度信息,
Video Codec Unit (VCU) 核编码器块是采用 H.265 (ISO/IEC 23008-2 高效视频编码)和 H.264 (ISO/IEC 14496-10 高级视频编码)标准对视频流进行处理的视频编码器引擎。编码器块全面支持上述标准(这些标准包括支持 8 位和 10 颜色深度、4:2:0、4:2:2 和 4:0:0 Y-only(单色) 色度格式、以及高达 4K UHD @ 60 Hz 分辨率的性能)。
VCU PLL需满足sub-100ps jitter标准,输入范围27 MHz~60 MHz。
图形显示DP/HDMI像素格式是ARGB8888(AR24)
视频格式支持下4种,
速率为 @ 667 MHz(2) 时的性能,
采样位深度:8 bpc、10 bpc,
色度格式:YCbCr 4:2:0、YCbCr 4:2:2、Y-only(单色),
CMA大小需求,
解码器存储器的带宽取决于帧速率、分辨率、颜色深度、色度格式和解码器配置信息。根据 GUI 中选择的视频参数来提供解码器的带宽估算值。赛灵思建议尽可能使用最快的DDR4存储器接口。具体来说,8x8 位的存储器接口比 4x16 位的存储器接口更有效,因为x8模式有4个bank组,而x16模式只有2个bank组;而且DDR4允许同时访问多个bank组。如需了解更多信息,请参阅AR# 71209
。
启用编码器缓存,请将 prefetch-buffer 参数传递到使用硬件的 GStreamer 流水线中。
$ gst-launch-1.0 videotestsrc ! omxh265enc prefetch-buffer=true ! fakesink
对于编解码,第一帧图像开始时会存在一个初始化延迟,但当图像流水起来之后,编解码器的总延迟是稳态延迟。
VCU的地址在0xA0000000,此时HPM0只有192MB可用空间,从0xA4000000开始,ZCU104 User guide中有一处bug,clk_300_c_p/n
的引脚分配和原理图不一致,参考原理图的引脚分配|,
接收部分,
对Vivado 2018.2打补丁,AR71203_Vivado_2018_1_preliminary_rev4.zip
,按照压缩包内的README.txt的提示打补丁即可,在Vivado 2019.1及以后的版本不需要,主要修复下面两个bug,
v4l驱动栈:
# 添加EMIO到复位
[ 5.655423] xilinx-frmbuf a0000000.v_frmbuf_rd: Unable to locate reset property in dt
[ 5.655441] xilinx-frmbuf: probe of a0000000.v_frmbuf_rd failed with error -2
[ 5.655489] xilinx-frmbuf a0020000.v_frmbuf_wr: Unable to locate reset property in dt
[ 5.655504] xilinx-frmbuf: probe of a0020000.v_frmbuf_wr failed with error -2
[ 5.655551] xilinx-frmbuf a0030000.v_frmbuf_wr: Unable to locate reset property in dt
[ 5.655566] xilinx-frmbuf: probe of a0030000.v_frmbuf_wr failed with error -2
[ 5.701267] xilinx-tpg a0010000.v_tpg: invalid number of ports 0
[ 5.701281] xilinx-tpg: probe of a0010000.v_tpg failed with error -22
# 添加bus width到flash0
[ 7.567194] zynqmp-qspi ff0f0000.spi: rx bus width not found
[ 7.572908] zynqmp-qspi ff0f0000.spi: tx bus width not found
# 添加phys
[ 7.666543] dwc3-of-simple ff9d0000.usb0: dwc3_simple_set_phydata: Can't find usb3-phy
[ 7.674946] dwc3 fe200000.dwc3: Failed to get clk 'ref': -2
# 暂时不用wifi,忽略
[ 8.109651] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[ 8.121265] cfg80211: failed to load regulatory.db
# 添加EMIO到复位
[ 8.399957] xilinx-vcu-core a0140000.vcu: No reset gpio info from dts for vcu. This may lead to incorrect functionality if VCU isolation is removed post initialization.
[ 8.708911] xilinx-vcu xilinx-vcu: Could not get core_enc clock
[ 8.721748] VCU PLL: enable
[ 8.728767] xilinx-vcu xilinx-vcu: xvcu_probe: Probed successfully
添加设备树节点,Probe deferred due to GPIO reset defer
这个打印还是存在,好像是驱动都初始化了2次?暂不深究,
[ 5.219188] xilinx-frmbuf a0000000.v_frmbuf_rd: Probe deferred due to GPIO reset defer
[ 5.219241] xilinx-frmbuf a0040000.v_frmbuf_rd: Probe deferred due to GPIO reset defer
[ 5.219290] xilinx-frmbuf a0020000.v_frmbuf_wr: Probe deferred due to GPIO reset defer
[ 5.219339] xilinx-frmbuf a0030000.v_frmbuf_wr: Probe deferred due to GPIO reset defer
[ 5.219387] xilinx-frmbuf a0050000.v_frmbuf_wr: Probe deferred due to GPIO reset defer
...
[ 5.264871] xilinx-video amba_pl@0:vcap_tp0: /amba_pl@0/vcap_tp0/ports/port@0 initialization failed
[ 5.264885] xilinx-video amba_pl@0:vcap_tp0: DMA initialization failed
...
[ 6.748250] xilinx-frmbuf a0000000.v_frmbuf_rd: Xilinx AXI frmbuf DMA_MEM_TO_DEV
[ 6.755706] xilinx-frmbuf a0000000.v_frmbuf_rd: Xilinx AXI FrameBuffer Engine Driver Probed!!
[ 6.764354] xilinx-frmbuf a0040000.v_frmbuf_rd: Xilinx AXI frmbuf DMA_MEM_TO_DEV
[ 6.771811] xilinx-frmbuf a0040000.v_frmbuf_rd: Xilinx AXI FrameBuffer Engine Driver Probed!!
[ 6.780461] xilinx-frmbuf a0020000.v_frmbuf_wr: Xilinx AXI frmbuf DMA_DEV_TO_MEM
[ 6.787912] xilinx-frmbuf a0020000.v_frmbuf_wr: Xilinx AXI FrameBuffer Engine Driver Probed!!
[ 6.796562] xilinx-frmbuf a0030000.v_frmbuf_wr: Xilinx AXI frmbuf DMA_DEV_TO_MEM
[ 6.804020] xilinx-frmbuf a0030000.v_frmbuf_wr: Xilinx AXI FrameBuffer Engine Driver Probed!!
[ 6.812663] xilinx-frmbuf a0050000.v_frmbuf_wr: Xilinx AXI frmbuf DMA_DEV_TO_MEM
[ 6.820116] xilinx-frmbuf a0050000.v_frmbuf_wr: Xilinx AXI FrameBuffer Engine Driver Probed!!
...
[ 7.472985] xilinx-video amba_pl@0:vcap_tp0: device registered
[ 7.482519] xilinx-tpg a0010000.v_tpg: device found, version 0.000
[ 7.492090] xilinx-video amba_pl@0:vcap_tp0: Entity type for entity a0010000.v_tpg was not initialized!
...
[ 8.082901] mali: loading out-of-tree module taints kernel.
[ 8.444071] VCU PLL: enable
[ 8.450935] xilinx-vcu xilinx-vcu: xvcu_probe: Probed successfully
[ 8.482970] al5d a0120000.al5d: l2 prefetch size:11468800 (bits), l2 color bitdepth:10
[ 8.484123] al5e a0100000.al5e: l2 prefetch size:11468800 (bits), l2 color bitdepth:10
...
Running postinst /etc/rpm-postinsts/100-libmali-xlnx...
/usr/sbin/run-postinsts: line 70: update-alternatives:: command not found
>=2018.1
Documentation/devicetree/bindings/display/xlnx
<2018.1
Documentation/devicetree/bindings/drm/xilinx
wget petalinux.xilinx.com/sswreleases/video-files/bbb_sunflower_2160p_30fps_normal_avc.mp4
wget petalinux.xilinx.com/sswreleases/video-files/bbb_sunflower_2160p_30fps_normal_hevc.mkv
图形化应用界面。
命令行应用程序。
VCU GStreamer接口库,配置pipeline,控制pipeline中的数据流,
库输出以下函数接口,
通过libmediactl
,libv4l2subdev
,控制,
vcu_qt
用这个接口来监控VCU编解码访存性能。
gst-launch
查看DRI设备,
# ls -l /dev/dri/by-path/
total 0
lrwxrwxrwx 1 root root 8 Aug 4 08:14 platform-fd4a0000.zynqmp-display-card -> ../card0
测试图像,
# 失败
$ modetest -D fd4a0000.zynqmp-display -s 39:1920x1080-24@BG24 &
# 彩条
$ modetest -D fd4a0000.zynqmp-display -s 39:1920x1080-60@BG24 &
$ modetest -D fd4a0000.zynqmp-display -s 39:1920x1080-60@AR24 &
$ gst-launch-1.0 videotestsrc ! kmssink bus-id="fd4a0000.zynqmp-display"
$ gst-launch-1.0 videotestsrc pattern=1 ! kmssink bus-id="fd4a0000.zynqmp-display"
# 2020.2 zcu104
$ ps -ef
root 792 1 0 02:17 ? 00:00:00 xinit /etc/X11/Xsession -- /usr/bin/Xorg :0 -br -pn
$ kill 792
$ modetest -M xlnx -c
Connectors:
id encoder status name size (mm) modes encoders
43 42 connected DP-1 530x300 32 42
# 彩条
$ modetest -M xlnx -D fd4a0000.zynqmp-display -s 43:1920x1080-60@AR24 &
# 失败
$ gst-launch-1.0 videotestsrc ! video/x-raw,width=1920,height=1080,framerate=60/1 ! kmssink bus-id="fd4a0000.zynqmp-display"
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
WARNING: from element /GstPipeline:pipeline0/GstKMSSink:kmssink0: A lot of buffers are being dropped.
Additional debug info:
../../../../git/libs/gst/base/gstbasesink.c(2902): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstKMSSink:kmssink0:
There may be a timestamping problem, or this computer is too slow.
WARNING: from element /GstPipeline:pipeline0/GstKMSSink:kmssink0: A lot of buffers are being dropped.
解码显示,
gst-launch-1.0 filesrc location="/run/media/mmcblk0p1/VID_20200427_184617.mp4" ! qtdemux name=demux demux.video_0 ! h264parse ! omxh264dec ! queue max-size-bytes=0 ! kmssink bus-id=fd4a0000.zynqmp-display fullscreen-overlay=true sync=false
gst-launch-1.0 filesrc location=/media/usb/test.NV12! videoparse format=23 width=1920 height=1080 framerate=15/1 ! queue ! kmssink bus-id="fd4a0000.zynqmp-display"fullscreen-overlay=true
调试信息,
# entity 1是"a0010000.v_tpg",entity 5是"vcap_tp0 output 0"
root@zynqmp_vcu:~# media-ctl -d /dev/media0 -p
Media controller API version 4.19.0
Media device information
------------------------
driver xilinx-video
model Xilinx Video Composite Device
serial
bus info
hw revision 0x0
driver version 4.19.0
Device topology
- entity 1: vcap_tp0 output 0 (1 pad, 1 link)
type Node subtype V4L flags 0
device node name /dev/video0
pad0: Sink
<- "a0010000.v_tpg":0 [ENABLED]
- entity 5: a0010000.v_tpg (1 pad, 1 link)
type V4L2 subdev subtype Unknown flags 0
device node name /dev/v4l-subdev0
pad0: Source
[fmt:UYVY10_1X20/0x0@1/30 field:none colorspace:srgb]
-> "vcap_tp0 output 0":0 [ENABLED]
root@zynqmp_vcu:~# modetest -c
Connectors:
id encoder status name size (mm) modes encoders
39 38 connected DP-1 530x300 32 38
modes:
name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 148500 flags: phsync, pvsync; type: driver
1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 148500 flags: phsync, pvsync; type: driver
1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 148352 flags: phsync, pvsync; type: driver
1920x1080 50 1920 2448 2492 2640 1080 1084 1089 1125 148500 flags: phsync, pvsync; type: driver
1920x1080 24 1920 2558 2602 2750 1080 1084 1089 1125 74250 flags: phsync, pvsync; type: driver
1920x1080 24 1920 2558 2602 2750 1080 1084 1089 1125 74176 flags: phsync, pvsync; type: driver
1600x1200 60 1600 1664 1856 2160 1200 1201 1204 1250 162000 flags: phsync, pvsync; type: driver
1680x1050 60 1680 1784 1960 2240 1050 1053 1059 1089 146250 flags: nhsync, pvsync; type: driver
1280x1024 75 1280 1296 1440 1688 1024 1025 1028 1066 135000 flags: phsync, pvsync; type: driver
1280x1024 60 1280 1328 1440 1688 1024 1025 1028 1066 108000 flags: phsync, pvsync; type: driver
1280x800 60 1280 1352 1480 1680 800 803 809 831 83500 flags: nhsync, pvsync; type: driver
1152x864 75 1152 1216 1344 1600 864 865 868 900 108000 flags: phsync, pvsync; type: driver
1280x720 60 1280 1390 1430 1650 720 725 730 750 74250 flags: phsync, pvsync; type: driver
1280x720 60 1280 1390 1430 1650 720 725 730 750 74250 flags: phsync, pvsync; type: driver
1280x720 60 1280 1390 1430 1650 720 725 730 750 74176 flags: phsync, pvsync; type: driver
1280x720 50 1280 1720 1760 1980 720 725 730 750 74250 flags: phsync, pvsync; type: driver
1024x768 75 1024 1040 1136 1312 768 769 772 800 78750 flags: phsync, pvsync; type: driver
1024x768 60 1024 1048 1184 1344 768 771 777 806 65000 flags: nhsync, nvsync; type: driver
800x600 75 800 816 896 1056 600 601 604 625 49500 flags: phsync, pvsync; type: driver
800x600 60 800 840 968 1056 600 601 605 628 40000 flags: phsync, pvsync; type: driver
720x576 50 720 732 796 864 576 581 586 625 27000 flags: nhsync, nvsync; type: driver
720x576 50 720 732 796 864 576 581 586 625 27000 flags: nhsync, nvsync; type: driver
720x480 60 720 736 798 858 480 489 495 525 27027 flags: nhsync, nvsync; type: driver
720x480 60 720 736 798 858 480 489 495 525 27027 flags: nhsync, nvsync; type: driver
720x480 60 720 736 798 858 480 489 495 525 27000 flags: nhsync, nvsync; type: driver
720x480 60 720 736 798 858 480 489 495 525 27000 flags: nhsync, nvsync; type: driver
720x480 60 720 736 798 858 480 489 495 525 27000 flags: nhsync, nvsync; type: driver
640x480 75 640 656 720 840 480 481 484 500 31500 flags: nhsync, nvsync; type: driver
640x480 60 640 656 752 800 480 490 492 525 25200 flags: nhsync, nvsync; type: driver
640x480 60 640 656 752 800 480 490 492 525 25175 flags: nhsync, nvsync; type: driver
640x480 60 640 656 752 800 480 490 492 525 25175 flags: nhsync, nvsync; type: driver
720x400 70 720 738 846 900 400 412 414 449 28320 flags: nhsync, pvsync; type: driver
props:
1 EDID:
flags: immutable blob
blobs:
value:
00ffffffffffff0010acc4a04c574131
15190104a5351e783a7c15a7544b9f26
0d5054a54b008100b300d100714fa940
8180d1c00101565e00a0a0a029503020
35000f282100001a000000ff004e4459
373335354e3141574c0a000000fc0044
454c4c205032343136440a20000000fd
0031561d711c000a2020202020200185
02031df1509005040302071601061112
1513141f202309070783010000023a80
1871382d40582c45000f282100001e01
1d8018711c1620582c25000f28210000
9e011d007251d01e206e2855000f2821
00001e8c0ad08a20e02d10103e96000f
2821000018f44c00c082802b4060d835
480f282100001c0000000000000000d7
2 DPMS:
flags: enum
enums: On=0 Standby=1 Suspend=2 Off=3
value: 0
5 link-status:
flags: enum
enums: Good=0 Bad=1
value: 0
6 non-desktop:
flags: immutable range
values: 0 1
value: 0
19 CRTC_ID:
flags: object
value: 37
40 sync:
flags: range
values: 0 1
value: 0
41 bpc:
flags: enum
enums: 6BPC=6 8BPC=8 10BPC=10 12BPC=12
value: 8
root@zynqmp_vcu:~# modetest -e
Encoders:
id crtc type possible crtcs possible clones
38 37 TMDS 0x00000001 0x00000000
root@zynqmp_vcu:~# modetest -f
Frame buffers:
id size pitch
root@zynqmp_vcu:~# modetest -p
CRTCs:
id fb pos size
37 45 (0,0) (1920x1080)
1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 148500 flags: phsync, pvsync; type: driver
props:
20 ACTIVE:
flags: range
values: 0 1
value: 1
21 MODE_ID:
flags: blob
blobs:
value:
144402008007d8070408980800003804
3c044104650400003c00000005000000
40000000313932307831303830000000
00000000000000000000000000000000
00000000
18 OUT_FENCE_PTR:
flags: range
values: 0 18446744073709551615
value: 0
30 output_color:
flags: enum
enums: rgb=0 ycrcb444=1 ycrcb422=2 yonly=3
value: 0
31 bg_c0:
flags: range
values: 0 4095
value: 0
32 bg_c1:
flags: range
values: 0 4095
value: 0
33 bg_c2:
flags: range
values: 0 4095
value: 0
Planes:
id crtc fb CRTC x,y x,y gamma size possible crtcs
35 0 0 0,0 0,0 0 0x00000001
formats: VYUY UYVY YUYV YVYU YU16 YV16 YU24 YV24 NV16 NV61 GREY Y10 BG24 RG24 XB24 XR24 XB30 XR30 YU12 YV12 NV12 NV21 XV15 XV20
props:
7 type:
flags: immutable enum
enums: Overlay=0 Primary=1 Cursor=2
value: 0
16 FB_ID:
flags: object
value: 0
17 IN_FENCE_FD:
flags: signed range
values: -1 2147483647
value: -1
19 CRTC_ID:
flags: object
value: 0
12 CRTC_X:
flags: signed range
values: -2147483648 2147483647
value: 0
13 CRTC_Y:
flags: signed range
values: -2147483648 2147483647
value: 0
14 CRTC_W:
flags: range
values: 0 2147483647
value: 0
15 CRTC_H:
flags: range
values: 0 2147483647
value: 0
8 SRC_X:
flags: range
values: 0 4294967295
value: 0
9 SRC_Y:
flags: range
values: 0 4294967295
value: 0
10 SRC_W:
flags: range
values: 0 4294967295
value: 0
11 SRC_H:
flags: range
values: 0 4294967295
value: 0
34 tpg:
flags: range
values: 0 1
value: 0
36 37 45 0,0 0,0 0 0x00000001
formats: AB24 AR24 RA24 BA24 BG24 RG24 RA15 BA15 RA12 BA12 RG16 BG16
props:
7 type:
flags: immutable enum
enums: Overlay=0 Primary=1 Cursor=2
value: 1
16 FB_ID:
flags: object
value: 45
17 IN_FENCE_FD:
flags: signed range
values: -1 2147483647
value: -1
19 CRTC_ID:
flags: object
value: 37
12 CRTC_X:
flags: signed range
values: -2147483648 2147483647
value: 0
13 CRTC_Y:
flags: signed range
values: -2147483648 2147483647
value: 0
14 CRTC_W:
flags: range
values: 0 2147483647
value: 1920
15 CRTC_H:
flags: range
values: 0 2147483647
value: 1080
8 SRC_X:
flags: range
values: 0 4294967295
value: 0
9 SRC_Y:
flags: range
values: 0 4294967295
value: 0
10 SRC_W:
flags: range
values: 0 4294967295
value: 125829120
11 SRC_H:
flags: range
values: 0 4294967295
value: 70778880
28 alpha:
flags: range
values: 0 255
value: 255
29 g_alpha_en:
flags: range
values: 0 1
value: 1
$ gst-launch-1.0 udpsrc port=5004 buffer-size=60000000 caps="application/x-rtp, clock-rate=90000" ! rtpjitterbuffer latency=1000 ! rtpmp2tdepay ! tsparse ! video/mpegts ! tsdemux name=demux ! queue ! h265parse ! avdec_h265 ! videoconvert ! autovideosink
$ gst-launch-1.0 udpsrc port=5004 buffer-size=60000000 caps="application/x-rtp, clock-rate=90000" ! rtpjitterbuffer latency=1000 ! rtpmp2tdepay ! tsparse ! video/mpegts ! tsdemux name=demux ! queue ! h265parse ! video/x-h265, profile=main, alignment=au ! omxh265dec internal-entropy-buffers=5 low-latency=0 ! queue max-size-bytes=0 ! kmssink bus-id="a0070000.v_mix"
$ gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! video/x-raw, width=1920, height=1080, format=NV16, framerate=60/1 ! omxh265enc qp-mode=auto gop-mode=basic gop-length=60 b-frames=0 target-bitrate=60000 num-slices=8 control-rate=constant prefetch-buffer=true low-bandwidth=false filler-data=true cpb-size=1000 initial-delay=500 ! queue ! mpegtsmux alignment=7 name=mux ! rtpmp2tpay ! udpsink host=192.168.6.6 port=5004
$ gst-launch-1.0 -v rtspsrc location="rtsp://admin:[email protected]:554/11" ! rtph264depay ! h264parse ! video/x-h264,stream-format=byte-stream ! filesink location=/media/usb/videos/dump210.h264
gst-launch-1.0 -v filesrc location=/media/usb/videos/dump210.h264 ! h264parse ! omxh264dec ! kmssink bus-id=fd4a0000.zynqmp-display fullscreen-overlay=true
# Zynq UltraScale+ MPSoC VCU TRD 2019.1 - HDMI Video Capture
$ gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! video/x-raw, format=NV12, width=3840, height=2160, framerate=60/1 ! omxh265enc qp-mode=auto gop-mode=basic gop-length=60 b-frames=0 target-bitrate=60000 num-slices=8 control-rate=constant prefetch-buffer=true low-bandwidth=false filler-data=true cpb-size=1000 initial-delay=500 ! queue ! mpegtsmux alignment=7 name=mux ! filesink location="/run/media/sda/test.ts"
$ gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! video/x-raw, format=NV12, width=3840, height=2160, framerate=60/1 ! omxh265enc qp-mode=auto gop-mode=basic gop-length=60 b-frames=0 target-bitrate=60000 num-slices=8 control-rate=constant prefetch-buffer=true low-bandwidth=false filler-data=true cpb-size=1000 initial-delay=500 periodicity-idr=60 ! video/x-h265, profile=main, alignment=au ! queue ! mpegtsmux alignment=7 name=mux ! rtpmp2tpay ! udpsink host=192.168.25.89 port=5004
$ gst-launch-1.0 v4l2src device=/dev/videoX io-mode=4 ! video/x-raw, format=NV12, width=3840, height=2160, framerate=60/1 ! omxh265enc qp-mode=auto gop-mode=basic gop-length=60 b-frames=0 target-bitrate=60000 num-slices=8 control-rate=low-latency prefetch-buffer=true low-bandwidth=false filler-data=true cpb-size=1000 initial-delay=500 periodicity-idr=60 ! video/x-h265, profile=main, alignment=nal ! queue ! mpegtsmux alignment=7 name=mux ! rtpmp2tpay ! udpsink host=192.168.25.89 port=5004
# Zynq UltraScale+ MPSoC VCU TRD 2019.1 - HDMI Video Display
$ gst-launch-1.0 uridecodebin uri="file:///run/media/sda/test.ts" ! queue max-size-bytes=0 ! kmssink bus-id="a0070000.v_mix"
$ gst-launch-1.0 udpsrc port=5004 buffer-size=60000000 caps="application/x-rtp, clock-rate=90000" ! rtpjitterbuffer latency=1000 ! rtpmp2tdepay ! tsparse ! video/mpegts ! tsdemux name=demux ! queue ! h265parse ! video/x-h265, profile=main, alignment=au ! omxh265dec internal-entropy-buffers=5 low-latency=0 ! queue max-size-bytes=0 ! kmssink bus-id="a0070000.v_mix"
$ gst-launch-1.0 udpsrc port=5004 buffer-size=60000000 caps="application/x-rtp, clock-rate=90000" ! rtpjitterbuffer latency=1000 ! rtpmp2tdepay ! tsparse ! video/mpegts ! tsdemux name=demux ! queue ! h265parse ! video/x-h265, profile=main, alignment=nal ! omxh265dec internal-entropy-buffers=5 low-latency=1 ! queue max-size-bytes=0 ! kmssink bus-id="a0070000.v_mix"
# Zynq UltraScale+ MPSoC ZCU104 VCU HDMI ROI 2020.2
gst-launch-1.0 mediasrcbin media-device=/dev/media0 v4l2src0::io-mode=4 ! video/x-raw, width=3840, height=2160, format=NV12, framerate=30/1 ! xlnxroivideo1detect capture-io-mode=4 output-io-mode=5 relative-qp=-21 ! omxh265enc gop-mode=basic gop-length=60 b-frames=0 target-bitrate=1500 num-slices=8 control-rate=constant prefetch-buffer=true low-bandwidth=false filler-data=true cpb-size=1000 initial-delay=500 qp-mode=roi ! video/x-h265, profile=main, alignment=au ! queue ! omxh265dec internal-entropy-buffers=5 low-latency=0 split-input=true ! queue max-size-bytes=0 ! fpsdisplaysink name=fpssink text-overlay=false 'video-sink=kmssink bus-id=a00c0000.v_mix hold-extra-sample=1 show-preroll=false sync=true' sync=true -v # Capture → (ROI) → Encode → Decode → Display
gst-launch-1.0 mediasrcbin media-device=/dev/media0 v4l2src0::io-mode=4 ! video/x-raw, format=NV12, width=3840, height=2160, framerate=30/1 ! xlnxroivideo1detect capture-io-mode=4 output-io-mode=5 relative-qp=-21 ! omxh265enc gop-mode=basic gop-length=60 b-frames=0 target-bitrate=1500 num-slices=8 control-rate=constant prefetch-buffer=true low-bandwidth=false filler-data=true cpb-size=1000 initial-delay=500 periodicity-idr=60 qp-mode=roi ! video/x-h265, profile=main, alignment=au ! queue ! mpegtsmux alignment=7 name=mux ! rtpmp2tpay ! udpsink host=192.168.25.89 port=5004 # Capture → (ROI) → Encode → Stream-out
gst-launch-1.0 udpsrc port=5004 buffer-size=60000000 caps="application/x-rtp, clock-rate=90000" ! rtpjitterbuffer latency=1000 ! rtpmp2tdepay ! tsparse ! video/mpegts ! tsdemux name=demux ! queue ! h265parse ! video/x-h265, profile=main, alignment=au ! omxh265dec internal-entropy-buffers=5 low-latency=0 split-input=true ! queue max-size-bytes=0 ! fpsdisplaysink name=fpssink text-overlay=false 'video-sink=kmssink bus-id=a00c0000.v_mix hold-extra-sample=1 show-preroll=false sync=true' sync=true -v # Stream-in→ Decode → Display
# Xilinx Zynq UltraScale+ MPSoC VCU ROI Demo跑
gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! video/x-raw, width=1920, height=1080, format=NV12, framerate=30/1 ! queue ! omxh264enc ! video/x-h264, profile=main, alignment=au ! omxh264dec ! kmssink bus-id="a0060000.v_mix" # RX->ENC->DEC->TX
gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! video/x-raw, width=1920, height=1080, format=NV12, framerate=30/1 ! xlnxroivideo1detect capture-io-mode=4 output-io-mode=5 ! omxh265enc qp-mode=roi num-slices=8 prefetch-buffer=true gop-length=60 periodicity-idr=270 control-rate=low-latency target-bitrate=5000 gop-mode=low-delay-p cpb-size=200 initial-delay=100 filler-data=false min-qp=15 max-qp=40 b-frames=0 low-bandwidth=false ! video/x-h265, profile=main, alignment=au ! queue ! omxh265dec internal-entropy-buffers=5 low-latency=0 ! queue max-size-bytes=0 ! fpsdisplaysink text-overlay=false video-sink="kmssink bus-id="a0060000.v_mix"" # RX->ROI->ENC->DEC->TX
# MPSOC VCU Example Gstreamer pipelines YUV 422 10bit
# modetest -D a0070000.v_mix -s 37:1920x1080-60@BG24 & (find hdmi drm crtc id)
# xmedia-ctl -d /dev/media0 -V "\"a0080000.v_proc_ss\":0 [fmt:VUY8_1X24/1920x1080 field:none]“
# xmedia-ctl -d /dev/media0 -V "\"a0080000.v_proc_ss\":1 [fmt:UYVY10_1X20/1920x1080 field:none]“
# gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! video/x-raw, width=1920, height=1080, format=NV16_10LE32, framerate=60/1 ! queue max-size-bytes=0 ! fpsdisplaysink text-overlay=false video-sink="kmssink bus-id="a0070000.v_mix" plane-id=30“
# gst-launch-1.0 uridecodebin uri="file:///media/usb/avit_stream/4KP50highCBR42210bit20M.ts" ! queue max-size-bytes=0 ! fpsdisplaysink text-overlay=false video-sink="kmssink bus-id="a0070000.v_mix" plane-id=30"
# Hobbit玩转Zynq MPSoC系列之3:HDMI输入+DP显示
gst-launch-1.0 v4l2src device=/dev/video0 ! “video/x-raw, width=1920, height=1080” ! kmssink bus-id=fd4a0000.zynqmp-display fullscreen-overlay=1
# Hobbit玩转Zynq MPSoC系列之2:TPG输入+VCU编码+rtp网络传输
gst-launch-1.0 v4l2src device=/dev/video0 ! “video/x-raw, width=1920, height=1080” ! omxh264enc target-bitrate=20000 ! h264parse config-interval=-1 ! mpegtsmux ! rtpmp2tpay ! udpsink host=192.168.1.99 port=9001 sync=true
# H.265 1080p 运行 Xilinx Low Latency PL DDR XV20 HDMI Video Capture and Display
$ gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! video/x-raw\(memory:XLNXLL\), width=1920, height=1080, format=NV16_10LE32, framerate=60/1 ! omxh265enc qp-mode=auto gop-mode=low-delay-p gop-length=60 b-frames=0 target-bitrate=20000 num-slices=8 control-rate=low-latency prefetch-buffer=TRUE low-bandwidth=false filler-data=0 cpb-size=1000 initial-delay=500 ! video/x-h265, alignment=nal ! queue max-size-buffers=0 ! rtph265pay ! udpsink host=192.168.25.89 port=5004 buffer-size=60000000 max-bitrate=120000000 max-lateness=-1 qos-dscp=60 async=false
# modetest -c
failed to open device 'xlnx': No such file or directory
板卡上电时显示器没有启动,后面再上电启动,执行命令报这个错误。