Video Input

There are multiple ways of inputting video into Oden. Depending on whether the video stream should be shared with another system, there are different alternatives. See Video Inputs for available video inputs into Oden.

Recommended input methods if data should not be shared with another system:

Share video stream

In most scenarios the video stream needs to be shared with another system (Autonomy, Recording, etc). RTP/RTSP are by design sharable but all other input types are not.

Gstreamer

For the NVidia Jetson platform we highly recommend using Gstreamer with the gst-nvunixfd plugin, this will share GPU memory with all subscribers which will minimize latency. Oden ships this plugin and it can be used on Jetpack 5.0 and above.

Example code:

Test source sharing video with the plugin nvunixfdsink
gst-launch-1.0 -e -v videotestsrc is-live=true pattern=smpte ! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 ! nvvidconv ! "video/x-raw(memory:NVMM),format=UYVY,width=1280,height=720,framerate=30/1" ! nvunixfdsink socket-path=/tmp/nvunixfd.sock

In Oden, add a 2D video and change the input to "GStreamer Pipeline" and add the following line.

Example of Gstreamer Pipeline to receive video data through nvunixfdsink
nvunixfdsrc socket-path=/tmp/nvunixfd.sock buffer-timestamp-copy=true ! video/x-raw(memory:NVMM),format=UYVY,width=1280,height=720,framerate=30/1
nvunixfd
Figure 1. Gstreamer Pipeline for nvunixfdsrc
Remember to uncheck the "HW Decode" checkbox if the data is not encoded.

ROS/ROS2

We do not recommend ROS/ROS2 for production deployment since ROS adds extra latency, but for POC and testing it can work. Oden does not ship with ROS functionality built in. Contact Voysys team for support.