GNOME Bugzilla – Bug 343051
[autoaudiosink] doesn't try esdsink
Last modified: 2006-07-24 14:55:30 UTC
Hi, Matt Kraai reported in Debian bug http://bugs.debian.org/361841 that autoaudiosink doesn't work for esd. I confirm this problem on my host. Without esd, this works fine: gst-launch-0.10 audiotestsrc ! audioconvert ! audioresample ! autoaudiosink With esd, this works: gst-launch-0.10 audiotestsrc ! audioconvert ! audioresample ! esdsink But this doesn't work anymore: gst-launch-0.10 audiotestsrc ! audioconvert ! audioresample ! autoaudiosink Setting pipeline to PAUSED ... ERROR: Pipeline doesn't want to pause. ERROR: from element /actual-sink: Resource busy or not available. Additional debug info: gstalsasink.c(775): gst_alsasink_open (): /actual-sink: Device is busy Setting pipeline to NULL ... FREEING pipeline ... I had a look at a --gst-debug log (gst-launch-0.10 --gst-debug-no-color --gst-debug=3), and it contains no reference to esdsink, while it tries loading alsasink and osssink twice (alsa, oss, alsa, oss) before failing. It seems to me that the feature search is incomplete from gst/autodetect/gstautoaudiosink.c: list = gst_registry_feature_filter (gst_registry_get_default (), (GstPluginFeatureFilter) gst_auto_audio_sink_factory_filter, FALSE, sink); list = g_list_sort (list, (GCompareFunc) gst_auto_audio_sink_compare_ranks); I'll attach the full log. Bye,
Created attachment 66299 [details] "gst-launch-0.10 --gst-debug-no-color --gst-debug=3" log of the failing pipeline
Created attachment 66302 [details] --gst-debug-level=5 log
It's not clear to me how esdsink has a change of being used if it's registered with GST_RANK_NONE?
It's true, it doesn't have a chance of being used, since it has no rank. There's this FIXME in the code, so maybe we should do more than just give esdsink a rank ... /* FIXME: * - soundservers have no priority yet. * - soundserversinks should only be chosen if already running, or if * the user explicitly wants this to run... That is not easy. */
Would it cause any harm if the sound servers are tried last? Ubuntu uses the rank PRIMARY - 2 for that to happen. I tried avoiding esd to start, but it seems there's no way to prevent that if autospawn=1 is configured somewhere.
autoaudiosink should now try esdsink as well: 2006-07-24 Tim-Philipp Müller <tim at centricular dot net> * ext/esd/esdsink.c: (gst_esdsink_open), (gst_esdsink_factory_init): Prevent libesd from auto-spawning a sound daemon if it is not already running. Now that we don't do evil stuff like that any longer we can give esdsink a rank so that autoaudiosink will try it as well if all other audio sinks fail (#343051).