Consume EGl streams created using libargus (jetson multimedia API) in nvxio (visionworks)

Can I plug in an EGL stream into ovxio as a frame source? Here is a what I have in mind.

Use an Argus::OutputStreamovxio::FrameSource (Output stream from argus as an input to ovxio framesource)

this way I can create a highly customised frame request via ‘argus’ and present it to ‘ovxio’ via a simple reference (or potentially a decoupled URI which I think can be super convenient).

I suspect the “device” framesources nvmedia and nvcamera (through gstreamer) works in a similar fashion.

PS: I am using a custom 16 camera board made by D3 Engineering. (So this might be not a common use case) . In my case "device:///nvcamera" or "nvmedia... URI"do not work.

Please share what functions you need in VisionWorks. If the function is supported in VPI, we would suggest use VPI. You can check document to get all supported functions:
VPI - Vision Programming Interface: Main Page

For Argus source, we can create NvBuffer and call NvEGLImageFromFd() to get EGLImage. There are samples in


Hi Thanks for getting back to me,
Codewise I’m in a similar situation as this post

on vx end I’m trying to use the function NVXIO_EXPORT std::unique_ptr<FrameSource> createDefaultFrameSource(vx_context context, const std::string& uri);

My URI (as instructed in the source comments) is device:///v4l2?index=0" however it does not work as it is , sadly my camera requires more than the frame index to get it to dump raw, However I can use the command v4l2-ctl --stream-mmap --stream-count --stream-skip=16 --stream-to=out.raw -cpreferred_stride=4096 -csensor_mode=0 which I believe is not compatible with the createDefaultFrameSource() function above.

My solution A was to use the “Argus<->VisionWorks” to convert between EGL and VX compatible images.

Solution B stick to the Argus and EGL land?

PS: I’ve also considered creating a loopback device but not sure if that’s a great idea or if it can interoperate all the instructions to v4l2-ctl or how to instruct createDefaultFrameSource to ingest that is straightforward (as providing a URI derived from /dev/videox)?

Argus<->VisionWorks is not supported. Would suggest use jetson_multimedia_api to develop your use-case. Please refer to the samples:


Thanks Dane!!
Note for anyone else reading this post and backtracking:

As of 9th July 2021 Argus only works with gcc/g++ 7.5. (Specially Note if now you are building the GuiElement.cpp to get graphics working)

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.