Hi,
I have a system where it seems the performance is hitting some bottleneck and the frame rate drops.
We currently have 28.1 installed and cannot update at the moment for various reasons.
I can reproduce similar behaviour to my issue by creating a pipeline that has a single nvcamerasrc, followed by a nvvidconv to CPU memory. I then tee this, and on each of the tees, perform another nvvidconv back to NVMM. With one or two branches from the tee, I can get full frame rate. If I add a few more branches, the frame rate slows down.
The odd part is that if I use a multifilesrc and load buffers from disk, I see no such performance slow down.
Is there some sort of interaction between nvcamerasrc and nvvidconv that would be a limitation?
Here are the two pipelines for reference:
Fast pipeline (180 fps): (load 1080p data, nvvidconv to NVMM, then back to CPU, then tee)
gst-launch-1.0 -v multifilesrc loop=true location=/tmp/test.%03d.raw caps=“video/x-raw,format=I420,width=1920,height=1080,framerate=24/1” !
nvvidconv !
“video/x-raw(memory:NVMM),width=128,height=128” !
nvvidconv !
“video/x-raw(memory),width=128,height=128” !
queue !
tee name=s !
queue ! nvvidconv interpolation-method=0 ! “video/x-raw(memory:NVMM),width=1920,height=1080” ! fpsdisplaysink video-sink=fakesink text-overlay=false
s. ! queue ! nvvidconv ! “video/x-raw(memory:NVMM),width=1920,height=1080” ! fpsdisplaysink video-sink=fakesink text-overlay=false
s. ! queue ! nvvidconv ! “video/x-raw(memory:NVMM),width=1920,height=1080” ! fpsdisplaysink video-sink=fakesink text-overlay=false
s. ! queue ! nvvidconv ! “video/x-raw(memory:NVMM),width=1920,height=1080” ! fpsdisplaysink video-sink=fakesink text-overlay=false
s. ! queue ! nvvidconv ! “video/x-raw(memory:NVMM),width=1920,height=1080” ! fpsdisplaysink video-sink=fakesink text-overlay=false
s. ! queue ! nvvidconv ! “video/x-raw(memory:NVMM),width=1920,height=1080” ! fpsdisplaysink video-sink=fakesink text-overlay=false
s. ! queue ! nvvidconv ! “video/x-raw(memory:NVMM),width=1920,height=1080” ! fpsdisplaysink video-sink=fakesink text-overlay=false
s. ! queue ! nvvidconv ! “video/x-raw(memory:NVMM),width=1920,height=1080” ! fpsdisplaysink video-sink=fakesink text-overlay=false
s. ! queue ! nvvidconv ! “video/x-raw(memory:NVMM),width=1920,height=1080” ! fpsdisplaysink video-sink=fakesink text-overlay=false
s. ! queue ! nvvidconv ! “video/x-raw(memory:NVMM),width=1920,height=1080” ! fpsdisplaysink video-sink=fakesink text-overlay=false
s. ! queue ! nvvidconv ! “video/x-raw(memory:NVMM),width=1920,height=1080” ! fpsdisplaysink video-sink=fakesink text-overlay=false
Slow pipeline (20fps… sensor generates 30fps):
gst-launch-1.0 -v nvcamerasrc sensor-id=4 ! “video/x-raw(memory:NVMM),width=128,height=128” !
nvvidconv !
“video/x-raw(memory),width=128,height=128” !
queue !
tee name=s !
queue ! nvvidconv ! “video/x-raw(memory:NVMM),width=1920,height=1080” ! fpsdisplaysink video-sink=fakesink text-overlay=false
s. ! queue ! nvvidconv ! “video/x-raw(memory:NVMM),width=1920,height=1080” ! fpsdisplaysink video-sink=fakesink text-overlay=false
s. ! queue ! nvvidconv ! “video/x-raw(memory:NVMM),width=1920,height=1080” ! fpsdisplaysink video-sink=fakesink text-overlay=false
s. ! queue ! nvvidconv ! “video/x-raw(memory:NVMM),width=1920,height=1080” ! fpsdisplaysink video-sink=fakesink text-overlay=false
s. ! queue ! nvvidconv ! “video/x-raw(memory:NVMM),width=1920,height=1080” ! fpsdisplaysink video-sink=fakesink text-overlay=false
s. ! queue ! nvvidconv ! “video/x-raw(memory:NVMM),width=1920,height=1080” ! fpsdisplaysink video-sink=fakesink text-overlay=false
s. ! queue ! nvvidconv ! “video/x-raw(memory:NVMM),width=1920,height=1080” ! fpsdisplaysink video-sink=fakesink text-overlay=false
s. ! queue ! nvvidconv ! “video/x-raw(memory:NVMM),width=1920,height=1080” ! fpsdisplaysink video-sink=fakesink text-overlay=false
s. ! queue ! nvvidconv ! “video/x-raw(memory:NVMM),width=1920,height=1080” ! fpsdisplaysink video-sink=fakesink text-overlay=false
s. ! queue ! nvvidconv ! “video/x-raw(memory:NVMM),width=1920,height=1080” ! fpsdisplaysink video-sink=fakesink text-overlay=false
s. ! queue ! nvvidconv ! “video/x-raw(memory:NVMM),width=1920,height=1080” ! fpsdisplaysink video-sink=fakesink text-overlay=false