Tegra 3 L4T - nvvidconv and nvimagesink Gstreamer plugin issue.

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 :

  1. Is there a known issue with these Gstreamer plugins ?
  2. Do we have to use the both nvvidconv AND nvxvimagesink to obtain a complete hardware accelerated scaling ?
  3. Do we have a way to obtain further documentation on these Gstreamer plugins ?
  4. Is there a way to have nvvidconv scaling and get a raw RGB output format ?
  5. 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 !