Porting/using the Gstreamer-OMX plugins for hardware H.264 encoding/decoding on the NVIDIA Shield K1?

Hello all!

I am wondering if it is possible to use or port the NVIDIA GST plugins that give access to hardware encoding/decoding such as nv_omx_h264enc for use on the NVIDIA K1 Shield Android Tablet with the Android GST SDK?

Thank you, I appreciate any help or direction! Please let me know if you need any further information.

EDIT1: After some research, it turns out the NVIDIA uses the OMX API to provide a wrapper through Gstreamer. So the main task would be to port the gst-omx library to android?

Does anyone have the source for this gst-omx library that includes omxh264enc or nv_omxh_264enc? Will freedesktop’s latest gst-imx source ([url]https://gstreamer.freedesktop.org/src/gst-omx/[/url]) work?

Am I on the right path here?

EDIT2: I ran the Media Codec Info app on my tablet, which detects which multimedia encoders/decoders (codecs) are available on the device. The app shows that the OMX.Nvidia.h264.decode and other OMX.Nvidia codecs are there and included. Now, the only question remains is how to get access to these through a wrapper for GST (omxh264dec or nv_omx_h264dec).

EDIT3: I found the Libgstomx.so on NVIDIA’s latest L4T release for the K1 (https://developer.nvidia.com/linux-tegra-r214). Would cross-compiling this on Android be what is required to get access to these plugins?

Hi AkshayB,
In theory, if you can link libgstomx.so to libnvomx.so, gst command probably can run. But we don’t have support for this case and suggest using Android framework. Samples are at frameworks\av\cmds\stagefright

Hi DaneLLL, thank you for your response!

I appreciate that this scenario is not supported but I would greatly appreciate some further guidance.

At the moment, I am stuck trying to build libgstomx to get libgstomx.so. I got the source for libgstomx.so from here - https://developer.nvidia.com/linux-tegra-r214 (gstomx1_src) and I’m trying to follow the instructions to build it. Since I need it for android, I need to cross-compile from my Ubuntu host machine for the nvidia tegra shield target. Is this possible? I saw an Android.mk file in the source, do you know if we are supposed to use this with NDK?

Can you also shed some light on what you mean when you say linking libgstomx.so to libnvomx.so?

Hi AkshayB,
The Android.mk is not from NVIDIA. It is from 3rdparty and has been removed in the latest gst-omx package
[url]https://cgit.freedesktop.org/gstreamer/gst-omx[/url]

For Android OS, we support HW functionality through Android frameworks only.