GMSL Virtual Channel ID

From RidgeRun Developer Wiki




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

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.

Contact Us



For direct inquiries, please refer to the contact information available on our Contact page. Alternatively, you may complete and submit the form provided at the same link. We will respond to your request at our earliest opportunity.


Links to RidgeRun Resources and RidgeRun Artificial Intelligence Solutions can be found in the footer below.