GMSL Virtual Channel ID

From RidgeRun Developer Connection
Jump to: navigation, search

Nvidia-preferred-partner-badge-rgb-for-screen.png

Error something wrong.jpg Problems running the pipelines shown on this page?
Please see our GStreamer Debugging guide for help.

RR Contact Us.png


Introduction to GMSL Virtual Channel ID

The Maxim Gigabit Multimedia Serial Link (GMSL) SERDES technology provides high bandwidth and rich point-to-point interconnections between two endpoints over a single cable, which can be up to 15 meters long. SERDES (serializer / deserializer) technology is widely used for sensors and network communication. SERDES supports multiple protocols over the same link. Automotive industry applications rely heavily on this technology due to its flexibility and performance. This technology is enabling next-gen multimedia applications. For example (and not limited to):

  • Advanced Driver Assistance Systems (ADAS)
  • Smart agriculture
  • Infotainment systems

Virtual channel ID

One approach to enable multiple camera capture using a SERDES architecture is to use virtual channels which are supported by the MIPI CSI-2 and CSI-3 specifications. Specifically for MIPI CSI-2 a deserializer can effectively decode up to four virtual channel IDs (see Figure 1). One deserializer that supports this feature is the MAX9286. In order for this deserializer to be able to combine all incoming video streams (up to four) and output them through CSI-2 (using virtual channel identified packets) frame sync locked status has to be achieved.

Figure 1. Quad GMSL cameras use case.

Sensor synchronization

For these systems based on GMSL compliant ICs, image sensor synchronization is usually a challenge. The SERDES chips offer a control channel which can be used to send a frame sync pulse to the cameras. This frame sync pulse can be generated using a reference signal from the host processor or internally in the deserializer (which may include various mode of usage).

GStreamer examples

GMSL MAX96705 MAX9286 - OV10635

The following pipelines were tested using a Jetson AGX Xavier and Jetson TX2:

  • Multiple capture (1280x800@30 fps)
gst-launch-1.0 v4l2src device=/dev/video0 !  'video/x-raw, format=(string)UYVY, width=(int)1280, height=(int)800, framerate=(fraction)30/1' ! queue ! mix.sink_0 v4l2src device=/dev/video1 !  'video/x-raw, format=(string)UYVY, width=(int)1280, height=(int)800, framerate=(fraction)30/1' ! queue ! mix.sink_1 videomixer name=mix background=1 sink_0::xpos=0 sink_0::ypos=0  sink_1::xpos=1280 sink_1::ypos=0 ! queue ! xvimagesink sync=false
  • Capture and display (1280x800@30 fps)
gst-launch-1.0 v4l2src device=/dev/video0 !  "video/x-raw, format=(string)UYVY, width=(int)1280, height=(int)800, framerate=(fraction)30/1" ! nvvidconv ! "video/x-raw(memory:NVMM), width=(int)1280, height=(int)720, framerate=(fraction)30/1, interlace-mode=(string)progressive, format=(string)RGBA" ! nvoverlaysink sync=false
  • Recording H.264 (1280x800@30 fps)
gst-launch-1.0 v4l2src device=/dev/video0 ! "video/x-raw, format=(string)UYVY, width=(int)1280, height=(int)800, framerate=(fraction)30/1" ! nvvidconv ! omxh264enc ! mpegtsmux ! filesink location=gstreamer_test.ts -e

Video demonstration

The video below was taken using a Jetson AGX Xavier running the following the following pipeline:

gst-launch-1.0 v4l2src device=/dev/video0 !  'video/x-raw, format=(string)UYVY, width=(int)1280, height=(int)800, framerate=(fraction)30/1' ! queue ! mix.sink_0 v4l2src device=/dev/video1 !  'video/x-raw, format=(string)UYVY, width=(int)1280, height=(int)800, framerate=(fraction)30/1' ! queue ! mix.sink_1 videomixer name=mix background=1 sink_0::xpos=0 sink_0::ypos=0  sink_1::xpos=1280 sink_1::ypos=0 ! queue ! xvimagesink sync=false

Results:

Format Mean ARM Load (%) FPS (Hz)
1280x800@30 21.53 30.07

Glass to glass latency

Mean glass to glass latency: 122 ms

Figure 2. Glass to glass latency dual camera capture.

Linux drivers

Ridgerun has developed Linux drivers for GMSL based systems, this drivers now have support for MIPI CSI-2 virtual channel. If you are interested in our GMSL SERDES Linux Drivers, please visit the following page: MAX96705 MAX9286 GMSL SERDES Linux Drivers or feel free to contact us.


RidgeRun Resources

Quick Start Client Engagement Process RidgeRun Blog Homepage
Technical and Sales Support RidgeRun Online Store RidgeRun Videos Contact Us

OOjs UI icon message-progressive.svg Contact Us

Visit our Main Website for the RidgeRun Products and Online Store. RidgeRun Engineering informations are available in RidgeRun Professional Services, RidgeRun Subscription Model and Client Engagement Process wiki pages. Please email to support@ridgerun.com for technical questions and contactus@ridgerun.com for other queries. Contact details for sponsoring the RidgeRun GStreamer projects are available in Sponsor Projects page. Ridgerun-logo.svg
RR Contact Us.png