Obstacles to adopting product for the PX2

We are developing a product that currently runs over the usual Nvidia APIs (cuda and the nvidia-encoder). We’re trying to adapt it to run on the PX2 platform, but I ran into a few problems:

By far, the greatest time consuming obstacle is that the SDK is running on Ubuntu 16.04. Our code was developed on Ubuntu 18.04, and to get it to compile on 16.04 I’ll need to back port gcc, libavcodec and, likely, other libraries as well.

We are currently using USB 3 cameras. Switching to the Drive platform would mean rewriting the camera capture code. It would be highly useful to get the source code for the demo apps that come with the SDK (the camera pass-through to screen and the AI parsing).

Last, but not least, we are currently relying on the nvidia-encode library. It seems this library is not available for the ARM platform. The Drive API has its own encoder, and we could adapt our code to use that instead, but we are missing a feature that is very important to us. The nvidia-encode API has an option to invalidate specific frames, so that the encoder produced p-frames don’t reference them. This is a feature we rely on heavily, and which the new API (as far as I could tell) does not have.

Thank you,
Shachar

Dear shacharvj0zs,

By far, the greatest time consuming obstacle is that the SDK is running on Ubuntu 16.04. Our code was developed on Ubuntu 18.04, and to get it to compile on 16.04 I’ll need to back port gcc, libavcodec and, likely, other libraries as well.
-> Unfortunately we provide ubuntu 16.04

We are currently using USB 3 cameras. Switching to the Drive platform would mean rewriting the camera capture code. It would be highly useful to get the source code for the demo apps that come with the SDK (the camera pass-through to screen and the AI parsing).
-> We provide sample source codes please help to check below path on your host pc for USB camera.
/usr/local/driveworks-1.2/samples/src/sensors/camera_usb/main.cpp

Last, but not least, we are currently relying on the nvidia-encode library. It seems this library is not available for the ARM platform. The Drive API has its own encoder, and we could adapt our code to use that instead, but we are missing a feature that is very important to us. The nvidia-encode API has an option to invalidate specific frames, so that the encoder produced p-frames don’t reference them. This is a feature we rely on heavily, and which the new API (as far as I could tell) does not have.
-> That means the new APIs do not support existing ones? Could you explain it in more detail?

The API we’re using (documentation at https://developer.download.nvidia.com/designworks/video-codec-sdk/secure/7.1/01/NvEncodeAPI_v.7.1.pdf?R-sH50v2FNYz4OdlltSQJ2qTqjHIqWS2O1Ipuhswu-eaf2WU2sotKwPRAqKq7lfQJSfLdp1ITCXwPRpb_5zim0kvHvgkWdVQjw7RMCA5ne3W7drK_RAg4Iv6x_PtDfLlnDAERJ3tKaBKg2EHAYcnaQFyKH3tX8424yWHfd-K) has a function called “NvEncInvalidateRefFrames”. According to the docs:

This is indeed very useful for low latency encoding, and we rely on it heavily. The encoder API for the Drive platform does not seem to have a parallel capability.

Thank you,

Shachar