Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This page provides all the information related to Design Module 7 - VCU TRD Xilinx low latency(LLP2) PS DDR NV12 HDMI Audio Video Capture and Display design.

...

Code Block
gst-launch-1.0 udpsrc port=5004 buffer-size=60000000 caps="application/x-rtp, media=video, clock-rate=90000, payload=96, encoding-name=H265" ! rtpjitterbuffer latency=7 ! rtph265depay ! h265parse ! video/x-h265, alignment=nal ! omxh265dec low-latency=1 internal-entropy-buffers=5 ! video/x-raw\(memory:XLNXLL\) ! queue max-size-bytes=0 ! fpsdisplaysink name=fpssink text-overlay=false fps-displayupdate-interval=1000 'video-sink=kmssink bus-id=a0070000.v_mix show-preroll-frame=false sync=true ' sync=true -v

...

Pixel Format

GStreamer Format

Media Bus Format

GStreamer HEVC Profile

GStreamer AVC Profile

Kmssink Plane-id

NV12

NV12

VYYUYY8_1X24

main

high

34 and 35

  • Video0 in the each gst-launch pipelines indicates a video node for the input source.

  • Make sure HDMI-Rx should be configured to 4kp60 mode, while running below example pipelines.

  • LLP1/LLP2 video / audio+video stream-in pipelines are not supported using vcu_gst_app.

  • For LLP1/LLP2 Multi-stream HEVC serial and stream-out use-cases (2-4kp30, 2-1080p60, 4-1080p60), use ENC_EXTRA_OP_BUFFERS=10 variable before gst-launch-1.0 command.

  • For LLP1/LLP2 Multi-stream serial and stream-in use-cases (2-4kp30, 2-1080p60, 4-1080p60), use internal-entropy-buffers=3 property in decoder.

  • latency-time and buffer-time in Audio+Video serial and streaming pipelines are very aggressive here compared to upstream GStreamer default values to get optimize latency for LLP2 Audio+Video pipeline. You can tune and experiment these parameters in case of any issue with audio/video sync, audio/video packet drop and audio distortion for your use-case. You may observe higher latency when increasing latency-time and buffer-time values in pipeline(e.g. In LLP2 HDMI video and raw HDMI audio display pipeline we have used higher latency-time and buffer-time values to prevent audio distortion).

...

Code Block
gst-launch-1.0 -v v4l2src io-mode=dmabuf device=/dev/video0 ! video/x-raw, width=3840, height=2160, format=NV12, framerate=60/1 ! omxh265enc num-slices=8 control-rate=low-latency gop-mode=low-delay-p target-bitrate=25000 cpb-size=500 gdr-mode=horizontal initial-delay=250 periodicity-idr=240 filler-data=0 prefetch-buffer=true ! video/x-h265, alignment=nal ! queue max-size-buffers=0 ! omxh265dec low-latency=1 internal-entropy-buffers=5 ! video/x-raw ! queue max-size-bytes=0 ! fpsdisplaysink name=fpssink text-overlay=false fps-displayupdate-interval=1000 video-sink="kmssink bus-id="a0070000.v_mix" show-preroll-frame=false sync=true" sync=true -v

...

Code Block
gst-launch-1.0 -v v4l2src io-mode=dmabuf device=/dev/video0 ! video/x-raw\(memory:XLNXLL\), width=3840, height=2160, format=NV12, framerate=60/1 ! omxh265enc num-slices=8 control-rate=low-latency gop-mode=low-delay-p target-bitrate=25000 cpb-size=500 gdr-mode=horizontal initial-delay=250 periodicity-idr=240 filler-data=0 prefetch-buffer=true ! video/x-h265, alignment=nal ! queue max-size-buffers=0 ! omxh265dec low-latency=1 internal-entropy-buffers=5 ! video/x-raw\(memory:XLNXLL\) ! queue max-size-bytes=0 ! fpsdisplaysink name=fpssink text-overlay=false fps-displayupdate-interval=1000 video-sink="kmssink bus-id="a0070000.v_mix" show-preroll-frame=false sync=true" sync=true -v

...

Code Block
gst-launch-1.0 -v v4l2src io-mode=dmabuf device=/dev/video0 ! video/x-raw\(memory:XLNXLL\), width=3840, height=2160, format=NV12, framerate=60/1 ! omxh265enc gop-length=60 gop-mode=low-delay-p low-bandwidth=FALSE target-bitrate=25000 b-frames=0 num-slices=8 control-rate=low-latency qp-mode=auto prefetch-buffer=true cpb-size=500 initial-delay=250 gdr-mode=horizontal periodicity-idr=240 ! video/x-h265, alignment=nal, profile=main ! queue max-size-buffers=0 ! omxh265dec low-latency=1 internal-entropy-buffers=5 ! video/x-raw\(memory:XLNXLL\) ! queue max-size-bytes=0 ! fpsdisplaysink name=fpssink text-overlay=false fps-displayupdate-interval=1000 video-sink="kmssink bus-id="a0070000.v_mix" show-preroll-frame=false sync=true" sync=true -v alsasrc device="hw:1,1" latency-time=5000 buffer-time=10000 provide-clock=false ! audio/x-raw, channels=2, rate=48000, format=S24_32LE ! queue max-size-bytes=0  ! alsasink device="hw:1,0" latency-time=25000 buffer-time=500000

...

Code Block
gst-launch-1.0 udpsrc port=5004 buffer-size=60000000 caps="application/x-rtp, media=video, clock-rate=90000, payload=96, encoding-name=H265" ! rtpjitterbuffer latency=7 ! rtph265depay ! h265parse ! video/x-h265, alignment=nal ! omxh265dec low-latency=1 internal-entropy-buffers=5 ! video/x-raw ! queue max-size-bytes=0 ! fpsdisplaysink name=fpssink text-overlay=false fps-displayupdate-interval=1000 video-sink="kmssink bus-id="a0070000.v_mix" show-preroll-frame=false sync=true" sync=true -v 

...

Code Block
gst-launch-1.0 udpsrc port=5004 buffer-size=60000000 caps="application/x-rtp, media=video, clock-rate=90000, payload=96, encoding-name=H265" ! rtpjitterbuffer latency=7 ! rtph265depay ! h265parse ! video/x-h265, alignment=nal ! omxh265dec low-latency=1 internal-entropy-buffers=5 ! video/x-raw\(memory:XLNXLL\) ! queue max-size-bytes=0 ! fpsdisplaysink name=fpssink text-overlay=false fps-displayupdate-interval=1000 video-sink="kmssink bus-id="a0070000.v_mix" show-preroll-frame=false sync=true" sync=true -v

...

Code Block
gst-launch-1.0 rtpbin latency=20 name=rtpbin udpsrc name=udpsrc_video buffer-size=60000000 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H265" port=5004 ! rtpbin.recv_rtp_sink_0 rtpbin. ! queue ! rtph265depay ! h265parse ! video/x-h265, alignment=nal ! omxh265dec low-latency=1 ! video/x-raw\(memory:XLNXLL\) ! queue max-size-bytes=0 ! fpsdisplaysink name=fpssink text-overlay=false fps-displayupdate-interval=1000 video-sink="kmssink bus-id="a0070000.v_mix" show-preroll-frame=false sync=true" sync=true -v udpsrc name=udpsrc_audio port=5005 caps="application/x-rtp, media=(string)audio, clock-rate=(int)48000, encoding-name=(string)OPUS" ! rtpbin.recv_rtp_sink_1 rtpbin. ! queue ! rtpopusdepay ! opusdec ! alsasink device="hw:1,0" latency-time=7000 buffer-time=14000

...