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 566428 - [playbin] Wrong error message if all possible sources fail to change state
[playbin] Wrong error message if all possible sources fail to change state
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
0.10.x
Other All
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
: 589179 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2009-01-03 17:12 UTC by diego.p77
Modified: 2013-07-18 07:03 UTC
See Also:
GNOME target: ---
GNOME version: 2.23/2.24



Description diego.p77 2009-01-03 17:12:02 UTC
Version: 2.24.3

Totem doesn't read libgstdvb.so. This library is installed, but when i run totem for play dvb channel it doesn't work. It try to find a dvb plugins, but it's just installed (gstreamer-plugins-bad-0.10.9-1.fc10).


Distribution: Fedora release 10 (Cambridge)
Gnome Release: 2.24.2 2008-11-25 (Red Hat, Inc)
BugBuddy Version: 2.24.2

Output of custom script "/usr/libexec/totem/totem-bugreport.py":
gst-typefind-0.10 version 0.10.21
GStreamer 0.10.21
http://download.fedora.redhat.com/fedora
Comment 1 Philip Withnall 2009-01-03 18:13:41 UTC
Does Totem give an error message when you try to play a DVB channel? If you run `totem --debug` from the terminal, is any output printed there?
Comment 2 diego.p77 2009-01-06 14:24:05 UTC
This is the output to `totem --debug`:

** (totem:3622): DEBUG: Init of Python module
** (totem:3622): DEBUG: Registering Python plugin instance: YouTube+TotemPythonPlugin
** (totem:3622): DEBUG: Creating object of type YouTube+TotemPythonPlugin
** (totem:3622): DEBUG: Creating Python plugin instance
** Message: Error: Per riprodurre questo stream è richiesto un plugin Sorgente protocollo DVB, che però non risulta installato. 
gstplaybasebin.c(1673): gen_source_element (): /GstPlayBin:play:
No URI handler for dvb

** Message: Missing plugin: gstreamer|0.10|totem|Sorgente protocollo DVB|urisource-dvb (Sorgente protocollo DVB)
** Message: PackageKit: xid = 62914563
** Message: PackageKit: Codec nice name: Sorgente protocollo DVB
** Message: PackageKit: non-structure: gstreamer0.10(urisource-dvb)()(64bit)
** Message: PackageKit: Did not install codec: Method failed: failed to find: gstreamer0.10(urisource-dvb)()(64bit)
** Message: No installation candidate for missing plugins found.
** Message: Error: Per riprodurre questo stream è richiesto un plugin Sorgente protocollo DVB, che però non risulta installato. 
gstplaybasebin.c(1673): gen_source_element (): /GstPlayBin:play:
No URI handler for dvb

** Message: Missing plugin: gstreamer|0.10|totem|Sorgente protocollo DVB|urisource-dvb (ignoring)
** Message: All missing plugins are blacklisted, doing nothing
** (totem:3622): DEBUG: Finalizing Python plugin instance


P.S.: I wrote to redhat bugzilla too, and Bastien Nocera work for this.
Comment 3 Bastien Nocera 2009-01-06 14:48:33 UTC
(In reply to comment #2)
<snip>
> P.S.: I wrote to redhat bugzilla too, and Bastien Nocera work for this.

Don't do that. One bug is more than enough.
Comment 4 diego.p77 2009-01-07 10:54:53 UTC
Excuse me it's my error.
Comment 5 Philip Withnall 2009-01-07 15:20:42 UTC
What's the output of `gst-inspect dvb`?
Comment 6 diego.p77 2009-01-08 11:20:06 UTC
The output is this:

Plugin Details:
  Name:			dvb
  Description:		DVB elements
  Filename:		/usr/lib64/gstreamer-0.10/libgstdvb.so
  Version:		0.10.9
  License:		LGPL
  Source module:	gst-plugins-bad
  Binary package:	gst-plugins-bad rpmfusion rpm
  Origin URL:		http://rpmfusion.org/

  dvbbasebin: DVB bin
  dvbsrc: DVB Source

  2 features:
  +-- 2 elements
Comment 7 Philip Withnall 2009-01-25 00:12:24 UTC
Tim, any ideas?
Comment 8 Bastien Nocera 2009-01-27 16:37:39 UTC
Seeing the same thing on my system. I'm at loss.

$ gst-launch-0.10 playbin uri=dvb://ITV1
Setting pipeline to PAUSED ...
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPlayBin:playbin0: A DVB protocol source plugin is required to play this stream, but not installed.
Additional debug info:
gstplaybasebin.c(1673): gen_source_element (): /GstPlayBin:playbin0:
No URI handler for dvb
Setting pipeline to NULL ...
FREEING pipeline ...
Comment 9 Jan Schmidt 2009-01-27 16:54:34 UTC
check the library list for  /usr/lib64/gstreamer-0.10/libgstdvb.so is being resolved:

ldd - /usr/lib64/gstreamer-0.10/libgstdvb.so

It could be it's not pulling in a library that it needs to, which gst-inspect-0.10 happens to provide. Can't think what though.
Comment 10 Bastien Nocera 2009-01-27 17:50:05 UTC
$ ldd -r /usr/lib64/gstreamer-0.10/libgstdvb.so
	linux-vdso.so.1 =>  (0x00007fffc3dff000)
	libgstbase-0.10.so.0 => /usr/lib64/libgstbase-0.10.so.0 (0x0000000000324000)
	libgstreamer-0.10.so.0 => /usr/lib64/libgstreamer-0.10.so.0 (0x0000000000559000)
	libgobject-2.0.so.0 => /lib64/libgobject-2.0.so.0 (0x0000000000825000)
	libgmodule-2.0.so.0 => /lib64/libgmodule-2.0.so.0 (0x0000000000a6a000)
	libgthread-2.0.so.0 => /lib64/libgthread-2.0.so.0 (0x0000000000c6d000)
	librt.so.1 => /lib64/librt.so.1 (0x0000000000e71000)
	libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00000000eb0c3000)
	libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x000000000107a000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x000000000135c000)
	libc.so.6 => /lib64/libc.so.6 (0x0000000001578000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00000000018ea000)
	/lib64/ld-linux-x86-64.so.2 (0x0000003433200000)
	libz.so.1 => /lib64/libz.so.1 (0x0000000001aee000)
	libm.so.6 => /lib64/libm.so.6 (0x0000000001d03000)

There's a full debug output at:
https://bugzilla.redhat.com/attachment.cgi?id=328109
Comment 11 Jan Schmidt 2009-01-27 18:32:45 UTC
the ldd output is fine.

In the debug log you linked to, I can see that it *is* successfully loading the dvb plugin and attempting to start it, including creating an mpegtsparse and linking stuff.... the it stops, unlinks things and errors out without printing any debug (at least not in that log file).

Because the only element that's offering dvb:// as a uri fails to change state successfully, playbin then posts the 'no element provides dvb://' error message.

I don't know if you're seeing a bug that might be fixed in gst-plugins-bad 0.10.10 already.
Comment 12 Bastien Nocera 2009-07-26 13:05:38 UTC
*** Bug 589179 has been marked as a duplicate of this bug. ***
Comment 13 Tim-Philipp Müller 2009-07-26 14:56:34 UTC
> Because the only element that's offering dvb:// as a uri fails to change state
> successfully, playbin then posts the 'no element provides dvb://' error
> message.

So in essence this is a bug in playbin(2), right? It should report that there has been an error, not that there are not elements handling the URI protocol in question.
Comment 14 a_64 2009-07-30 18:45:48 UTC
Please change the bug status from UNCONFIRMED to CONFIRMED or 
similar.

Since my bug (Bug 589179 - "Totem can't play digital tv: A DVB 
protocol source plugin is required") has been resolved as a 
duplicate of this one, I'd like to copy here a thing that I 
mentioned there, and that may give some clue to solve the problem:

--------------------
I've updated Fedora, run Totem, clicked on Movie > Watch TV on 
'DVB Adapter 0', and then a PackageKit window is opened, asking
to search for a "DVB protocol source" complement. After clicking on
"Search" button, another PackageKit window is opened, asking to 
install this packet:

  GStreamer streaming media framework "bad" plug-ins
  gstreamer-plugins-bad-0.10.11-4.fc11 (i586)

It is asking for an old packet (0.10.11-4), since the following
packet (0.10.13-3) is already installed:

  gstreamer-plugins-bad-0.10.13-3.fc11.i586

Maybe something is wrong with rpmfusion packets? Do I open a bug
at bugzilla.rpmfusion.org?
--------------------
rpmfusion bug opened:
https://bugzilla.rpmfusion.org/show_bug.cgi?id=735
--------------------

Please, can some Gstreamer developer (Jan Schmidt?) investigate the 
error in playbin (a library function?) pointed out by Tim-Philipp 
Müller in the previous comment?
Comment 15 Sebastian Dröge (slomo) 2010-01-16 16:20:40 UTC
The problem with fixing this (yes, It's still valid with playbin2) is, that gst_element_make_from_uri() returns NULL if no element factories for that URI scheme are available but also if the URI couldn't be set on any of the possible element factories. There's no way to distinguish here.

Any suggestions how to fix this cleanly without copying that code to uridecodebin? A
GstElementMakeFromUriReturn gst_element_make_from_uri_full (const GstURIType type, const gchar * uri, const gchar * elementname, GstElement **element)
seems to be too much :)
Comment 16 Bastien Nocera 2010-01-18 11:33:02 UTC
(In reply to comment #15)
> The problem with fixing this (yes, It's still valid with playbin2) is, that
> gst_element_make_from_uri() returns NULL if no element factories for that URI
> scheme are available but also if the URI couldn't be set on any of the possible
> element factories. There's no way to distinguish here.

I guess that it's the latter that's causing problems on the F11 install then. Any hints as to why it would fail then?
Comment 17 Sebastian Dröge (slomo) 2010-01-18 11:49:00 UTC
Well, it will fail if the URI is not dvb://channel where channel must be something that can be mapped to a valid channel (dvbsrc looks in some config files and does some magic).
Comment 18 Edward Hervey 2013-07-18 07:03:12 UTC
We now provide proper error messages from dvbbasebin when setting a uri fails.