This page provides detailed information related to Design Module 2 - HLG SDI Video Capture and Display with PLDDR
...
The table below provides the supported resolution from GUI and command-line app in this design.
Resolution | GUI | Command Line | |
Single Stream | Single Stream | Multi Stream | |
4Kp60/59.94 | X | √ | X |
4Kp30/29.97 | X | √ | X |
1080p60/59.94 | X | √ | X |
√ - Supported
x – Not supported
The below table gives information about the features supported in this design.
Pipeline | Input Source | Output Type | ALSA Srivers | Resolution | Audio Codec Type | Audio Configuration | Video Codec | Deliverables |
---|---|---|---|---|---|---|---|---|
Record/Stream-Out pipeline | SDI-Rx | File Sink/ Stream-Out |
SDI-Rx ALSA drivers |
| Opus | 2 channel @ 48 kHz |
HEVC/AVC | SDI-Rx Audio encode with soft codec and video with VCU and store it in a container format. |
Vorbis | 8* channel @ 48 kHz | SDI-Rx Audio encode with soft codec and video with VCU and store it in a container format. | ||||||
Playback pipeline | File Source/ Stream-In | SDI-Tx | SDI-Tx ALSA drivers | 4K/1080p | Opus | 2 channel @ 48 kHz | HEVC/AVC | Playback of the local-file/stream-in with video decoded using VCU and Audio using GStreamer soft codec. |
Vorbis | 8* channel @ 48 kHz | Playback of the local-file/stream-in with video decoded using VCU and Audio using GStreamer soft codec. | ||||||
Capture → Display | SDI-Rx | SDI-Tx | SDI-Rx ALSA drivers and SDI-Tx ALSA drivers | 4K/1080p | NA | 2 channel @ 48 kHz OR 8* channel @ 48 kHz | HEVC/AVC | SDI-Rx Audio /Video pass to SDI-Tx without VCU/Audio-Codec. |
Capture → Encode → Decode → Display | SDI-Rx | SDI-Tx | SDI-Rx ALSA drivers and SDI-Tx ALSA drivers | 4K/1080p | NA | 2 channel @ 48 kHz OR | HEVC/AVC | SDI-Rx raw audio and video with VCU encoder and decode to achieve AV sync. |
* The 8-channels audio functionality is validated with Phabrix Qx 12G SDI Analyzer/Generator.
...
The example configuration files are stored at /media/card/config/
folder.
Configuration Type | Configuration Name | Description | Available Options |
---|---|---|---|
Common | Common Configuration | It is the starting point of common configuration | |
Num of Input | Number of input | 1 | |
Output | Select the video interface. | SDI or DP | |
Out Type | Type of output | display, record, stream | |
Display Rate | Pipeline frame rate | 30, 60 | |
Exit | It indicates to the application that the configuration is over | ||
Input | Input Configuration | It is the starting point of the input configuration | |
Input Num | Starting Nth input configuration | 1 | |
Input Type | Input source type | SDI, File, Stream | |
Uri | File path or Network URL. Applicable for file playback and Stream-in pipeline only. Supported file formats for playback are ts, mp4, and mkv. | file:///media/usb/abc.ts (for file path), udp://192.168.25.89:5004/ (for Network streaming, Here | |
Raw | To tell the pipeline is processed or pass-through | TRUE, FALSE | |
Width | The width of the live source | 3840,1920 | |
Height | The height of the live source | 2160, 1080 | |
Format | The format of input data | XV20 | |
Exit | It indicates to the application that the configuration is over | ||
Encoder | Encoder Configuration | It is the starting point of encoder configuration | |
Encoder Num | Starting Nth encoder configuration | 1 | |
Encoder Name | Name of the encoder | AVC, HEVC | |
Profile | Name of the profile | baseline, main or high for AVC. Main for HEVC. | |
Rate Control | Rate control options | CBR, VBR, and Low_Latency. | |
Filler Data | Filler Data NAL units for CBR rate control | True, False | |
QP | QP control mode used by the VCU encoder | Uniform, Auto | |
L2 Cache | Enable or Disable L2Cache buffer in encoding process. | True, False | |
Latency Mode | Encoder latency mode. | normal, sub_frame | |
Low Bandwidth | If enabled, decrease the vertical search range used for P-frame motion estimation to reduce the bandwidth. | True, False | |
Gop Mode | Group of Pictures mode. | Basic, low_delay_p, low_delay_b | |
Bitrate | Target bitrate in Kbps | 1-60000 | |
B Frames | Number of B-frames between two consecutive P-frames | 0-4 | |
Slice | The number of slices produced for each frame. Each slice contains one or more complete macroblock/CTU row(s). Slices are distributed over the frame as regularly as possible. If slice-size is defined as well more slices may be produced to fit the slice-size requirement | 4 to 22 : 4Kp resolution with HEVC codec | |
GoP Length | The distance between two consecutive I frames | 1-1000 | |
GDR Mode | It specifies which Gradual Decoder Refresh(GDR) scheme should be used when GDR mode is currently supported with LLP1/LLP2 low-delay-p use-cases only | Horizontal/Vertical/Disabled | |
Entropy Mode | It specifies the entropy mode for H.264 (AVC) encoding process | CAVLC/CABAC/Default | |
Max Picture Size | It is used to curtail instantaneous peak in the bit-stream using this parameter. It works in CBR/VBR rate-control only. When it is enabled, | TRUE/FALSE | |
HLG_SDR_Compatible | It specifies the whether vcu will use the HLG Only mode or Backward-Compatible-Mode. By default, vcu-gst-app will use HLG Only mode. | TRUE/FALSE | |
Preset | Encoder configuration Preset | HEVC_HIGH, HEVC_MEDIUM, HEVC_LOW, AVC_HIGH, AVC_MEDIUM, AVC_LOW, Custom | |
Exit | It indicates to the application that the configuration is over | ||
Record | Record Configuration | It is the starting point of record configuration. | |
Record Num | Starting Nth record configuration. | 1 | |
Out File Name | Record file path. | e.g. /media/usb/abc.ts | |
Duration | Duration in minutes. | 1-3 | |
Exit | It indicates to the application that the configuration is over. | ||
Streaming | Streaming Configuration | It is the starting point of streaming configuration. | |
Streaming Num | Starting Nth Streaming configuration | 1 | |
Host IP | The host to send the packets to | 192.168.25.89 or Windows PC IP | |
Port: | The port to send the packets to. | 5004, 5008, 5012, 5016 | |
Exit | It indicates to the application that the configuration is over. | ||
Audio Configuration | Audio Configuration | It is the starting point of the audio configuration. | |
Audio Enable | Enable or Disable audio in pipeline. | True, False | |
Audio Format | The format of the audio | S24_32LE | |
Sampling Rate | To set the audio sampling rate. | 48000 | |
Num Of Channel | The number of audio channels. The vcu-gst-app has only support of 2 channels audio as of now, However the design has 8-channels audio support. You can refer Appendix-B for 8-channels audio GStreamer pipelines. | 2 | |
Source | It should be SDI, as currently only SDI audio capture is supported. | ||
Renderer | It should be SDI, as currently only SDI audio renderer is supported. | ||
Volume | To set the volume level. The default value is 2.0. | 0.0 - 10.0 | |
Exit | It indicates to the application that the configuration is over. | ||
Trace | Trace Configuration | It is the starting point of trace configuration. | |
FPS Info | To display fps info on the console. | True, False | |
APM Info | To display APM counter number on the console. | True, False | |
Pipeline Info | To display pipeline info on console. | True, False | |
Exit | It indicates to the application that the configuration is over. |
...
4 Appendix B - SDI-Rx/Tx Link-up and GStreamer Commands
...
After booting you need to run the modetest command(mandatory) for respective resolution you want to validate.
Pixel Format | GStreamer Format | Media Bus Format | GStreamer HEVC Profile | GStreamer AVC Profile | Kmssink Plane-id |
---|---|---|---|---|---|
XV20 | NV16_10LE32 | UYVY10_1X20 | main-422-10 | high-4:2:2 | 32 |
All 8-channels GStreamer pipelines are only validated with Phabrix Qx 12G SDI Analyzer/Generator. It is a possibility that, 8-channels audio behavior might be different with actual setup containing 7.1 A/V receiver system.
All HLG GStreamer pipelines are only validated with Phabrix Qx 12G SDI Analyzer/Generator. It is a possibility that, HLG behavior might be different with actual setup containing HLG media source and display.
In record use-case, file location should be USB-3.0/SATA/RAMdisk to avoid the read-write bandwidth issue.
Video0
in the each below gst-launch pipelines indicates a video node for the input source.
...
Code Block |
---|
$ gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 num-buffers=3600 ! video/x-raw, width=3840, height=2160, format=NV16_10LE32, 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 ! video/x-h265, profile=main-422-10, alignment=au ! queue max-size-bytes=0 ! mux. alsasrc device=hw:1,1 provide-clock=false num-buffers=3600 ! audio/x-raw, rate=48000, channels=2, format=S24_32LE ! queue max-size-bytes=0 ! audioconvert ! audioresample ! opusenc ! mpegtsmux name=mux ! filesink location="/run/test.ts" |
...
Code Block |
---|
$ gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 num-buffers=3600 ! video/x-raw, width=3840, height=2160, format=NV16_10LE32, framerate=60/1 ! omxh265enc qp-mode=auto gop-mode=basic gop-length=60 b-frames=0 num-slices=8 control-rate=constant prefetch-buffer=true low-bandwidth=false filler-data=true cpb-size=1000 initial-delay=500 ! video/x-h265, profile=main-422-10, alignment=au ! h265parse ! queue max-size-bytes=0 ! mux. alsasrc device=hw:1,1 provide-clock=false num-buffers=3600 ! audio/x-raw, rate=48000, channels=8, format=S24_32LE ! queue max-size-bytes=0 ! audioconvert ! audioresample ! vorbisenc ! matroskamux name=mux ! filesink location="/run/test.mkv" |
...