After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 723916 - Missing element: video/x-surface decoder / Your GStreamer installation is missing a plug-in
Missing element: video/x-surface decoder / Your GStreamer installation is mis...
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gst-plugins
0.10.36
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2014-02-08 18:38 UTC by Sergei
Modified: 2015-06-15 06:58 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Sergei 2014-02-08 18:38:20 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 ...
Comment 1 Sebastian Dröge (slomo) 2014-02-08 18:53:56 UTC
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.
Comment 2 Sergei 2014-02-08 20:58:43 UTC
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!
Comment 3 Sebastian Dröge (slomo) 2014-02-08 21:46:10 UTC
(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
Comment 4 Sergei 2014-02-09 11:41:16 UTC
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
Comment 5 Sebastian Dröge (slomo) 2014-02-09 12:01:33 UTC
(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 :)
Comment 6 Sergei 2014-02-09 18:14:09 UTC
thank you very much for your invaluable assistance!