AR# 72325

2019.1 Zynq UltraScale+ MPSoC VCU - Why do I see frame drops or Block Noise for some Use Case 2 (UC2) use cases when PL-DDR is being used?

描述

Why do I see frame drops or Block Noise for some Use Case 2 (UC2) use cases when PL-DDR is being used?

Example 1: Four 1080p60 XV20 (10-bit 4:2:2) with B-Frames=4, AVC Encode with a target bitrate of 15000kbps

gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! video/x-raw, width=1920, height=1080, format=NV16_10LE32, framerate=60/1 ! omxh264enc qp-mode=auto gop-mode=basic gop-length=60 b-frames=4 target-bitrate=15000 num-slices=8 control-rate=constant prefetch-buffer=true low-bandwidth=false filler-data=true ! video/x-h264, profile=high-4:2:2, alignment=au ! h264parse ! omxh264dec internal-entropy-buffers=3 low-latency=0 ! queue max-size-bytes=0 ! fpsdisplaysink text-overlay=false video-sink="kmssink bus-id="a0070000.v_mix" plane-id=30 render-rectangle=<0,0,1920,1080>" -v &

gst-launch-1.0 v4l2src device=/dev/video1 io-mode=4 ! video/x-raw, width=1920, height=1080, format=NV16_10LE32, framerate=60/1 ! omxh264enc qp-mode=auto gop-mode=basic gop-length=60 b-frames=4 target-bitrate=15000 num-slices=8 control-rate=constant prefetch-buffer=true low-bandwidth=false filler-data=true ! video/x-h264, profile=high-4:2:2, alignment=au ! h264parse ! omxh264dec internal-entropy-buffers=3 low-latency=0 ! queue max-size-bytes=0 ! fpsdisplaysink text-overlay=false video-sink="kmssink bus-id="a0070000.v_mix" plane-id=31 render-rectangle=<1920,0,1920,1080>" -v &

gst-launch-1.0 v4l2src device=/dev/video2 io-mode=4 ! video/x-raw, width=1920, height=1080, format=NV16_10LE32, framerate=60/1 ! omxh264enc qp-mode=auto gop-mode=basic gop-length=60 b-frames=4 target-bitrate=15000 num-slices=8 control-rate=constant prefetch-buffer=true low-bandwidth=false filler-data=true ! video/x-h264, profile=high-4:2:2, alignment=au ! h264parse ! omxh264dec internal-entropy-buffers=3 low-latency=0 ! queue max-size-bytes=0 ! fpsdisplaysink text-overlay=false video-sink="kmssink bus-id="a0070000.v_mix" plane-id=32 render-rectangle=<0,1080,1920,1080>" -v &

gst-launch-1.0 v4l2src device=/dev/video3 io-mode=4 ! video/x-raw, width=1920, height=1080, format=NV16_10LE32, framerate=60/1 ! omxh264enc qp-mode=auto gop-mode=basic gop-length=60 b-frames=4 target-bitrate=15000 num-slices=8 control-rate=constant prefetch-buffer=true low-bandwidth=false filler-data=true ! video/x-h264, profile=high-4:2:2, alignment=au ! h264parse ! omxh264dec internal-entropy-buffers=3 low-latency=0 ! queue max-size-bytes=0 ! fpsdisplaysink text-overlay=false video-sink="kmssink bus-id="a0070000.v_mix" plane-id=33 render-rectangle=<1920,1080,1920,1080>" -v &

 

Example 2: Two 4Kp30 XV20 (10-bit 4:2:2) with B-Frames=4, AVC Encode with a target bitrate of 30000kbps

gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! video/x-raw, width=3840, height=2160, format=NV16_10LE32, framerate=30/1 ! omxh264enc qp-mode=auto gop-mode=basic gop-length=60 b-frames=4 target-bitrate=30000 num-slices=8 control-rate=constant prefetch-buffer=true low-bandwidth=false filler-data=true ! video/x-h264, profile=high-4:2:2, alignment=au ! h264parse ! omxh264dec internal-entropy-buffers=3 low-latency=0 ! queue max-size-bytes=0 ! fpsdisplaysink text-overlay=false video-sink="kmssink bus-id="a0070000.v_mix" plane-id=30 render-rectangle=<0,0,3840,2160>" -v &

gst-launch-1.0 v4l2src device=/dev/video1 io-mode=4 ! video/x-raw, width=3840, height=2160, format=NV16_10LE32, framerate=30/1 ! omxh264enc qp-mode=auto gop-mode=basic gop-length=60 b-frames=4 target-bitrate=30000 num-slices=8 control-rate=constant prefetch-buffer=true low-bandwidth=false filler-data=true ! video/x-h264, profile=high-4:2:2, alignment=au ! h264parse ! omxh264dec internal-entropy-buffers=3 low-latency=0 ! queue max-size-bytes=0 ! fpsdisplaysink text-overlay=false video-sink="kmssink bus-id="a0070000.v_mix" plane-id=31 render-rectangle=<1920,0,3840,2160>" -v &

 

Example 3: Two 4Kp60 XV20 (10-bit 4:2:2) with B-Frames=4, AVC Encode with a target bitrate of 60000kbps

gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! video/x-raw, width=3840, height=2160, format=NV16_10LE32, framerate=60/1 ! omxh264enc qp-mode=auto gop-mode=basic gop-length=60 b-frames=4 target-bitrate=60000 num-slices=8 control-rate=constant prefetch-buffer=true low-bandwidth=false filler-data=true ! video/x-h264, profile=high-4:2:2 ! omxh264dec ! queue max-size-bytes=0 ! fpsdisplaysink text-overlay=false video-sink="kmssink bus-id="a0070000.v_mix" plane-id=30" -v &

 

解决方案

This is a known issue with the Zynq UltraScale+ MPSoC - LogiCORE H.264/H.265 Video Codec Unit (VCU) that has been greatly improved in the 2019.2 version and later releases.

Users should update to the 2019.2 version or later.

If you continue to see problems, the following are some additional ways to reduce dropped frames and/or reduce Block Noise:

  • Reduce the requested bandwidth.
  • Reduce the number of B-Frames. For example, if 4 are requested, try reducing the number to 0, 1, 2, or 3.
  • When doing AVC encoding set the num-slices = 4 or 8 when multiple cores are enabled.  This will improve the performance. (Note: The default for num-slices is 1.)
  • Increase the number of capture buffers.

 

  • 2019.1 - Users should upgrade to the 2019.2 version or later for improved performance

链接问答记录

主要问答记录

AR# 72325
日期 11/07/2019
状态 Active
Type 综合文章
器件
Tools
IP