Can someone explain what are the difference between Nvidia own “nvtee” and regular “tee” plugins in gstreamer?
I would guess it must be a reason Nvidia came up with their own implementation of tee?
-albertr
Can someone explain what are the difference between Nvidia own “nvtee” and regular “tee” plugins in gstreamer?
I would guess it must be a reason Nvidia came up with their own implementation of tee?
-albertr
Hi albertr, nvtee supports the internal memory:NVMM type as to avoid extra memory copies between GPU<->CPU.
Thanks, Dustin! Is there any documentation available on how to use it? If I’m using “name” parameter with regular “tee” plugin in the following pipeline:
$PREFIX/bin/gst-launch-1.0 -vvv v4l2src device=/dev/video0 ! 'video/x-raw, format=I420, width=1280, height=720, framerate=30/1' ! tee name=t \
t. ! queue ! nvvidconv ! 'video/x-raw(memory:NVMM), width=1280, height=720, format=I420, framerate=30/1' ! nvoverlaysink sync=false -e -vvv \
t. ! queue ! omxh264enc bitrate=12000000 ! h264parse ! matroskamux ! filesink location=/tmp/test.mkv sync=false -e -vvv
gst-inspect-1.0 nvtee
says that “nvtee” has name parameter too, but if I replace “tee” with “nvtee” in the pipeline above, I’m getting the following error (which identified itself as a “warning” but terminates my pipeline nevertheless):
WARNING: erroneous pipeline: could not link v4l2src0 to t
Does it mean I cannot use nvtee with v4l2 devices?
How exactly “memory:NVMM” was implemented? Is it the same as userptr buffer allocation in gsteamer?
If v4l2src device will use userptr buffer allocation (io-mode=userptr), will it be able to work with nvtee?
Or should I put nvvidconv before nvtee so both can use “memory:NVMM” buffers?
-albertr
@albertr, you may find usage in the L4T Accelerated GStreamer User Guide.
Well, I read it before. Unfortunately, it doesn’t give any description neither about nvtee nor “memory:NVMM”.
-albertr
There are example pipelines in the documentation that show using nvtee, otherwise you can gst-inspect nvtee.
memory:NVMM is an internal NVIDIA memory format that is not exposed to the user, but is passed between NVIDIA gstreamer elements.
The L4T Accelerated GStreamer User Guide Can’t help me !
I use gst-inspect to see its function,it can Convert single stream to three;However, I did not find the task’s description of 1 to N. Could your engineer who wrote the nvtee plug-in give me some help or write a reference example?Otherwise more people won’t be able to use this plug-in.
We can only use the pad of “pre_src” at present. Can you tell me what conditions need to be met if other SRC pads are to be used.
I found this on a search. Is nvtee actually required to avoid a copy or is it no longer required. I just did a search for nvtee within the deepstream source and it’s not used at all, while a regular tee
element is. Based on the names of the element I am guessing it was removed at some point.
Also, I don’t undrestand why it doesn’t have request pads, rather a fixed number of ‘always’ pads, and there seems to be no documentation for it in the current version of the gstreamer accelerated user’s guide. If it’s isn’t deprecated, am I supposed to put queues on the src pads like a regular tee? and which pads should I use:
SRC: 'pre_src'
Pad Template: 'vid_src'
SRC: 'img_src'
Pad Template: 'img_src'
SRC: 'vid_src'
Pad Template: 'pre_src'
SRC: 'vsnap_src'
Pad Template: 'vsnap_src'
I am also facing similar problem with using nvtee, since its proper usage is not mentioned in accelerated gstreamer guide. gst-inspect says it converts single stream to three. But all pads are always, didn’t mentioned how to use these pads to link to other bins.
Is nvtee
completely different from tee
? Can someone please explain to me what nvtee
is and what it does?
Would love to know the answer to this as well.