ExtractFdFromNvBuffer does not work with v4l2src ! nvvidconv

We have a plugin that uses ExtractFdFromNvBuffer. It fails when the source is v4l2src.

This works:
gst-launch-1.0 v4l2src ! nvvidconv ! ‘video/x-raw(memory:NVMM),format=NV12’ ! nvegltransform ! nveglglessink -e

But not this:
gst-launch-1.0 v4l2src ! nvvidconv ! ‘video/x-raw(memory:NVMM),format=NV12’ ! nvtracker ! nvegltransform ! nveglglessink -e

PosixMemMap:71 [9] mmap failed
nvcaffe-gie Buffer mapping failed
nvbuf_utils: dmabuf_fd 1828717655 mapped entry NOT found
nvbuf_utils: Can not get HW buffer from FD… Exiting…

Presumably nvtracker uses ExtractFdFromNvBuffer too.

We are using a WebCam

Do you use DS1.5/TX2? It is not supported on this release.

Furthermore, nvtracker needs matadata from previous nvcaffegie. Your pipeline is not valid.

ExtractFdFromNvBuffer in our plugin works when nvvidconv is the source. This works in all cases we have tried except when v4l2src feeds nvvidconv. Why is this so?

Please share how you construct ExtractFdFromNvBuffer() and nvvidconv in your usecase.

Maybe run ‘appsrc ! nvvidconv ! appsink’ and call ExtractFdFromNvBuffer() in appsink? And where to put nvtracker? nvtracker works as expected without nvcaffegie?

For more about ExtractFdFromNvBuffer(), please also refer to