GNOME Bugzilla – Bug 723916
Missing element: video/x-surface decoder / Your GStreamer installation is missing a plug-in
Last modified: 2015-06-15 06:58:31 UTC
A strange behavior of the same application 1. working fine on Ubuntu 12.04 (x64) 2. crashing on Ubuntu 13.10, both x64 and arm (Odroid-XU) with the same symptoms. All three in 1 & 2 have full GStreamer 0.10.36 (same version!) installed using apt-get install gstreamer* Even the plain playbin2 crashes with: Missing element: video/x-surface decoder / Your GStreamer installation is missing a plug-in, see below. (My application crashes with the same error while exploring *any* .avi file) Any suggestions please? sergei@ts:~/mp-test-10$ gst-launch -v playbin2 uri=file:///home/fl/ads/41.avi Setting pipeline to PAUSED ... /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: ring-buffer-max-size = 0 /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: buffer-size = -1 /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: buffer-duration = -1 /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: use-buffering = FALSE /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: download = FALSE /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: uri = "file:///home/fl/ads/41.avi" /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: connection-speed = 0 /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: source = (GstFileSrc) source /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstTypeFindElement:typefind.GstPad:src: caps = video/x-msvideo Pipeline is PREROLLING ... /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstAviDemux:avidemux0.GstPad:sink: caps = video/x-msvideo /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0: max-size-buffers = 5 /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0: max-size-time = 0 /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0: max-size-bytes = 2097152 /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0.GstPad:sink0: caps = video/x-divx, divxversion=(int)5, framerate=(fraction)20/1, width=(int)768, height=(int)1366 /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0.GstPad:src0: caps = video/x-divx, divxversion=(int)5, framerate=(fraction)20/1, width=(int)768, height=(int)1366 libva info: VA-API version 0.33.0 libva info: va_getDriverName() returns 0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/nouveau_drv_video.so libva info: va_openDriver() returns -1 Missing element: video/x-surface decoder /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0: max-size-buffers = 5 WARNING: from element /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: No decoder available for type 'video/x-surface, width=(int)768, height=(int)1366, framerate=(fraction)20/1, type=(string)vaapi, opengl=(boolean)true'. Additional debug info: gsturidecodebin.c(874): unknown_type_cb (): /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0 /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0: max-size-time = 0 /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0: max-size-bytes = 2097152 /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0: max-size-buffers = 5 ERROR: from element /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20: Your GStreamer installation is missing a plug-in. /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0: max-size-time = 0 Additional debug info: gstdecodebin2.c(3576): gst_decode_bin_expose (): /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20: no suitable plugins found /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0: max-size-bytes = 2097152 ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstVaapiDecode:vaapidecode0.GstPad:src: caps = video/x-surface, width=(int)768, height=(int)1366, framerate=(fraction)20/1, type=(string)vaapi, opengl=(boolean)true libva info: VA-API version 0.33.0 libva info: va_getDriverName() returns 0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/nouveau_drv_video.so libva info: va_openDriver() returns -1 /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstVaapiDecode:vaapidecode0.GstPad:src: caps = NULL /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0.GstPad:sink0: caps = NULL /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0.GstPad:src0: caps = NULL /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstAviDemux:avidemux0.GstPad:video_00: caps = NULL /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstAviDemux:avidemux0.GstPad:sink: caps = NULL /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstTypeFindElement:typefind.GstPad:src: caps = NULL Freeing pipeline ...
There is no video/x-surface in 1.x anymore, and previously it was also only provided by gstreamer-vaapi in 0.10. GStreamer 0.10 is no longer maintained, so please test again with a more recent version.
Thank you! 1. Strange that the mainstream latest Ubuntu 13.10 (for x64 and arm) offers only the no longer maintained GStreamer 0.10. 2. Shall I compile myself from source? I understand it's a challenge, especially on arm (Odroid & Co). Is it a reason for #1? 3. Another inconvenience is that the GStreamer SDK (http://gstreamer.com/) for Windows is also supporting only GStreamer 0.10 (within MS VS2010 only). I was able to develop *real* portable GStreamer C-code for Windows and Linux simultaneously. It's not possible any more... What would be your recommendations? Many thanks!
(In reply to comment #2) > Thank you! > > 1. Strange that the mainstream latest Ubuntu 13.10 (for x64 and arm) offers > only the no longer maintained GStreamer 0.10. Ubuntu has GStreamer 1.x since quite some time and it's the default that is e.g. used by GNOME since 3.6. https://launchpad.net/ubuntu/+source/gstreamer1.0 > 2. Shall I compile myself from source? I understand it's a challenge, > especially on arm (Odroid & Co). Is it a reason for #1? It's really not much different than compiling other software :) What problems do you face when trying that? > 3. Another inconvenience is that the GStreamer SDK (http://gstreamer.com/) for > Windows is also supporting only GStreamer 0.10 (within MS VS2010 only). I was > able to develop *real* portable GStreamer C-code for Windows and Linux > simultaneously. It's not possible any more... gstreamer.com and the GStreamer SDK is a 3rd party project by two companies, and it does not have any connection with the GStreamer project. You can find binaries for Windows and other platforms using the very latest versions of GStreamer here: http://gstreamer.freedesktop.org/data/pkg/ These basically work the same as the binaries from gstreamer.com
Many thanks! I was able to install binaries for gstreamer-1.0 in Ubuntu alongside ...-0.10 and after a few tweaks (decodebin2 -> decodebin, ffmpegcolorspace -> videoconvert, gst_pad_get_caps -> gst_pad_query_caps, ...) was able to successfully run my app, both on x64 and arm. However, of all the video sinks: $ gst-inspect-1.0 | grep -i video | grep -i sink aasink: aasink: ASCII art video sink cacasink: cacasink: A colored ASCII art video sink clutter: cluttersink: Clutter video sink video4linux2: v4l2sink: Video (video4linux2) Sink autodetect: autovideosink: Auto video sink fbdevsink: fbdevsink: fbdev video sink debugutilsbad: fpsdisplaysink: Measure and show framerate on videosink xvimagesink: xvimagesink: Video sink ximagesink: ximagesink: Video sink inter: intervideosink: Internal video sink aasink and cacasink work but useless, and only autovideosink, xvimagesink, ximagesink work OK, whereas others fail: (maybe I should report it elsewhere?) gst-launch-1.0 filesrc location=../../fl/ads/41.avi ! decodebin ! videoconvert ! clutter WARNING: erroneous pipeline: no element "clutter" gst-launch-1.0 filesrc location=../../fl/ads/41.avi ! decodebin ! videoconvert ! video4linux WARNING: erroneous pipeline: no element "video4linux" gst-launch-1.0 filesrc location=../../fl/ads/41.avi ! decodebin ! videoconvert ! v4l2sink Setting pipeline to PAUSED ... ERROR: Pipeline doesn't want to pause. ERROR: from element /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0: Cannot identify device '/dev/video1'. Additional debug info: v4l2_calls.c(560): gst_v4l2_open (): /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0: system error: No such file or directory Setting pipeline to NULL ... Freeing pipeline ... gst-launch-1.0 filesrc location=../../fl/ads/41.avi ! decodebin ! videoconvert ! fbdevsink Setting pipeline to PAUSED ... ERROR: Pipeline doesn't want to pause. Setting pipeline to NULL ... Freeing pipeline ... Additionally mirsink on arm (does not exist on x64) also fails
(In reply to comment #4) > Many thanks! > > I was able to install binaries for gstreamer-1.0 in Ubuntu alongside ...-0.10 > and after a few tweaks (decodebin2 -> decodebin, ffmpegcolorspace -> > videoconvert, gst_pad_get_caps -> gst_pad_query_caps, ...) was able to > successfully run my app, both on x64 and arm. Great to hear that :) > aasink and cacasink work but useless, > and only autovideosink, xvimagesink, ximagesink work OK, whereas others fail: > (maybe I should report it elsewhere?) See below :) > gst-launch-1.0 filesrc location=../../fl/ads/41.avi ! decodebin ! videoconvert > ! clutter > WARNING: erroneous pipeline: no element "clutter" The element is named "cluttersink", not "clutter". And if it's not working, please file a bug against "clutter-gst". > gst-launch-1.0 filesrc location=../../fl/ads/41.avi ! decodebin ! videoconvert > ! video4linux > WARNING: erroneous pipeline: no element "video4linux" The element is named "v4l2sink", not "video4linux"... > gst-launch-1.0 filesrc location=../../fl/ads/41.avi ! decodebin ! videoconvert > ! v4l2sink > Setting pipeline to PAUSED ... > ERROR: Pipeline doesn't want to pause. > ERROR: from element /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0: Cannot > identify device '/dev/video1'. > Additional debug info: > v4l2_calls.c(560): gst_v4l2_open (): > /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0: > system error: No such file or directory > Setting pipeline to NULL ... > Freeing pipeline ... ... which you use here. The problem however seems to be that your v4l2 device video1 does not support working as a sink. Maybe you need to use a different one (see the device property on the sink). Or if video1 is supposed to be working as a sink, please file a separate bug about this and provide a debug log with GST_DEBUG=v4l2*:6 > gst-launch-1.0 filesrc location=../../fl/ads/41.avi ! decodebin ! videoconvert > ! fbdevsink > Setting pipeline to PAUSED ... > ERROR: Pipeline doesn't want to pause. > Setting pipeline to NULL ... > Freeing pipeline ... Please file a separate bug for this if your device is supposed to have support for fbdev (not to be confused with directfb!). In that bug again put a debug log, this time with GST_DEBUG=6. > Additionally mirsink on arm (does not exist on x64) also fails That's something to report to the Ubuntu folks, it's their sink :)
thank you very much for your invaluable assistance!