赞
踩
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种,
GStreamer和VCU支持的格式,
速率为 @ 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编解码访存性能。
查看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:adminpw@10.0.0.210: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
板卡上电时显示器没有启动,后面再上电启动,执行命令报这个错误。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。