I wanna use HW decoder (Jetson Nano) and resizer simultaneously in OpenCV via Nvidia’s Gstreamer. I didn’t find any opportunity to use in OpenCV a pipeline with two appsinks(though in cmdline everything works). Here’s the sample of pipeline I wanna use.
gst-launch-1.0 filesrc location=… ! qtdemux ! queue ! h265parse ! omxh265dec ! tee name=decoded ! queue ! appsink name=1 decoded. ! queue ! nvvidconv ! video/x-raw,width=640,height=480 ! appsink name=2
This works (if you replace appsinks with jpeg encoders + multifilesinks particularly)
As a workaround to have only one appsink to work with OpenCV I’m going to use compositor(stack two images, bigger above smaller, right to smaller there’s a trashy pic, but it’s ok).
gst-launch-1.0 nvcompositor name=comp sink_0::xpos=0 sink_0::ypos=0 sink_1::xpos=0 sink_1::ypos=1952 sink1::width=640 sink1::height=480 ! appsink filesrc location=… ! qtdemux ! queue ! h265parse ! omxh265dec ! tee name=decoded ! queue ! comp.sink_0 decoded. ! queue ! nvvidconv ! video/x-raw,width=640,height=480 ! queue ! comp.sink_1
It works with common gstreamer plugins(nvvidconv → videoscale, omxh265dec → libde265dec). But doesn’t work with Nvidia decoding and resizing plugins, compositor or nvcompositor. Either hangs or SIGSEGV-s. Could someone fix my workaround or better help to avoid compositors at all?