Using 3D LUT for GStreamer Plugin Processing

I have tried using the OpenGl ES versions but have come to the conclusion that

none have support for gl TexImage3D function. If that is indeed the case what is my best approach for creating a GStreamer plugin to do 3D LUT processing on 2D images in the video pipeline.
We have used the OpenGL ES solution many times on phones where TextImage3D was supported. Any links to examples would be highly appreciated.

Thanks in advance.

Hi,
It can be better if you use pure gl TexImage3D functions. Is there strong reason to use gstreamer + gl?

Hello,

Need to use gstreamer for sure as my player for various reasons. Not tied to OpenGL but I need to add 3D LUT processing to the video pipeline for the Jetson Nano. I need a method that uses as little as possible the GPU and there will be multiple 3D LUT plugins in the pipeline performing 3D LUT processing.

You should always be able to combine multiple 3D luts into one if they are sequential. There shouldn’t be a reason to use more than one unless you are doing something in between that can’t be expressed as a LUT. You can google “3d lut combiner tool” and find some online services that can do it or you can use something like Photoshop, Resolve, or a dedicated tool to do it.

As to applying a 3d LUT to an accelerated GStreamer pipeline, it would certainly be useful (for all kinds of things), but Nvidia has not written one yet. If you have a look at the DeepStream package there are some plugin examples in there. If you do end up writing one, you’ll have my thanks. While I’m familiar with the theory of how they work, writing such a plugin is beyond my expertise for now. FFmpeg has a 3d lut filter IIRC, but I don’t think it’s hardware accelerated, certainly not on Nano.

I did come across this project perhaps doing something similar to you. It doesn’t look like they are applying the lut in the gstreamer pipeline, however, rather in the browser. You could look at how it’s done, if that’s applicable to your purposes. It may not be suitable depending on what you want to do.