Hello,
I have an issue using provided nvvidconv and nvxvimagesink Gstreamer plugins as I want to use the hardware acceleration to read a mp4 h264 video. My ultimate goal is to use our custom sink (raw-rgb), but I have an issue using the classical one xvimagesink.
Reproduce :
I’m using the video small.mp4 available here http://techslides.com/demos/sample-videos/small.mp4. Retrieve it on your board.
gst-launch filesrc -v location=/small.mp4 ! decodebin2 ! nvvidconv ! 'video/x-nvrm-yuv, width=640, height=354' ! nvxvimagesink &
This command build a “simple pipeline” using the converter and the sink provided by nvidia. Moreover we are using a capsfilter to fix the format AND the size of the video output (640x354).
This is working fine, video is well displayed (OK)
Then I want to use another sink, the classical one, xvimagesink.
If I do not use scaling, everything is working fine. See the following command.
gst-launch filesrc -v location=/small.mp4 ! decodebin2 ! nvvidconv ! xvimagesink &
Video is well displayed (OK)
But if I need scaling and rgb format , when I type the command :
gst-launch filesrc -v location=/small.mp4 ! decodebin2 ! nvvidconv ! 'video/x-raw-rgb, width=640, height=354' ! xvimagesink &
or
gst-launch filesrc -v location=/small.mp4 ! decodebin2 ! nvvidconv ! 'video/x-raw-yuv, width=640, height=354' ! xvimagesink &
This command build a “simple pipeline”, using only the converter from nvidia then the xvimagesink. All these caps are compatible, according to the
gst-inspect nvvidconv
and
gst-inspect xvimagesink
outputs.
This is NOT working fine, video is NOT displayed (NOK), pipeline never go in playing state.
Questions :
- Is there a known issue with these Gstreamer plugins ?
- Do we have to use the both nvvidconv AND nvxvimagesink to obtain a complete hardware accelerated scaling ?
- Do we have a way to obtain further documentation on these Gstreamer plugins ?
- Is there a way to have nvvidconv scaling and get a raw RGB output format ?
- Moreover, when I am using gst_x_overlay_set_window_handle(nvsink, properWindowXID) (using gstreamer c++ API), I am facing a crash (segmentation fault). This crash doesn’t occurs when using xvimagesink instead. I there any known issues around this method and nvxvimagesink?
Many thanks for your help !