I am trying to run a Gstreamer plugin written to run NVIDIA Maxine filters through the pipeline.
I keep getting no element "nvmaxinevideofx"
, and I’m wondering if there is anything fundamentally wrong with my approach or if I’m just making a mistake somewhere.
I am super new to Gstreamer and any help would be much appreciated.
I am running on Ubuntu 20.04 through WSL.
I managed to build the plugin files successfully, but no matter how I add the plugin path to the build directory containing the .so
files, it’s not getting picked up by either gst-launch
or gst-inspect
.
I tried both adding to the GST_PLUGIN_PATH
variable and as an argument to gst-launch
with --gst-plugin-path
.
I have also managed to get Maxine installed at /usr/local/VideoFX
.
I have also managed to build the gst-template
plugin from the official tutorials and run it successfully with:
gst-launch-1.0 -v -m --gst-plugin-path=/mnt/d/projects/stream/gst-template/build/gst-plugin/ fakesrc ! my_filter ! fakesink silent=TRUE
But when I try to run the same thing with the appropriate parameters for this plugin it returns no element "nvmaxinevideofx"
:
gst-launch-1.0 -v -m --gst-plugin-path=/mnt/d/projects/stream/gst-nvmaxine/build/ fakesrc ! nvmaxinevideofx ! fakesink silent=TRUE
2
Answers
It is a long time since I used CMake, build gstreamer and I cannot now. But, from settings in CMakeList.txt:
Isn’t your plugin called "gstnvmaxinevideofx", not "nvmaxinevideofx"?
Possibly. I can’t say for sure, but I see two potential problems:
First, you are running in WSL2, which is a virtualized environment. While WSL2 offers some GPU compute tasks, it does this through specialized WSL2 libraries that interact with the Windows GPU driver. It does not provide direct access to the GPU from Linux applications running inside WSL2.
On the plus side, Linux CUDA support is provided by WSL2 (again, through the Windows NVIDIA driver), but it’s not clear to me from reading the Maxine dependencies whether or not there are additional NVIDIA libraries required.
But that brings us to the second potential problem. Unless I’m reading it incorrectly, the dependencies specifically says that Linux support is only available for server-class GPUs. While you don’t mention your actual GPU, I’m fairly sure you aren’t running a server-class GPU on a desktop Windows system with WSL. It seems odd that Linux support would be limited in this way, and it might be worthwhile to check with the
gst-nvmaxine
maintainer to see if that’s truly the case. I do see that you already have an issue open there as well.I wouldn’t mind being wrong about this, of course, but I’m taking an educated guess that you probably won’t be able to use WSL for this task, at least not with the current state of the dependencies.