Shmsink SEGSEV with NV12

adrien_sch adrien.schwartzentruber at gmail.com
Fri Dec 6 13:35:46 PST 2013


My pipeline is quite simple : 

filesrc ! asfdemux ! h264parse ! vaapidecode ! videoconvert ! shmsink

I had a closer look on my pipeline, and i observed that the stream
resolution change anormally after the decoder (example : 1920x1080 to
1920x1088). I had a look in vaapidecode.c in the function update_src_caps
and i found this : 

#if GST_CHECK_VERSION(1,1,0)
    vis = *vi;
    if (GST_VIDEO_INFO_FORMAT(vi) == GST_VIDEO_FORMAT_ENCODED) {
        /* XXX: this is a workaround until auto-plugging is fixed when
           format=ENCODED + memory:VASurface caps feature are provided.
           Meanwhile, providing a random format here works but this is
           a terribly wrong thing per se. */
        gst_video_info_set_format(&vis, GST_VIDEO_FORMAT_NV12,
            GST_VIDEO_INFO_WIDTH(vi), GST_VIDEO_INFO_HEIGHT(vi));
    }

The consequence of this workaround may be the cause of the segmentation
fault in shmsink. To confirm, I tried my pipeline is 1.0 and it worked as
expected. I will fill a bug to explain this case, from my point of view,
shmsink isn't the source of the error. 


For the unsuported profile and decodebin, I was surprise as you that the
hardware acceleration wasn"t available for the baseline profile, but as I
said, this is coherent with the vainfo output : 

libva: VA-API version 0.32.0
Xlib:  extension "XFree86-DRI" missing on display ":0".
libva: va_getDriverName() returns 0
libva: Trying to open /usr/lib/x86_64-linux-gnu/dri/nvidia_drv_video.so
libva: va_openDriver() returns 0
vainfo: VA-API version: 0.32 (libva 1.0.15)
vainfo: Driver version: Splitted-Desktop Systems VDPAU backend for VA-API -
0.7.3
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileMPEG4Simple            :	VAEntrypointVLD
      VAProfileMPEG4AdvancedSimple    :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD


I will make more test, to get more informations about the decodebin behavior
in this case, for sure, it doesn't work as espected in this case. 

Btw, I had a lot of difficulties to get the vaapi works with some pipeline
(tried unsuccefully to convert NV12 to something else (after the decoder,
from a videotestsrc that works) , or use xvimagesink instead of vaapisink). 






--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/Shmsink-SEGSEV-with-NV12-tp4663830p4663915.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.


More information about the gstreamer-devel mailing list