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 343051 - [autoaudiosink] doesn't try esdsink
[autoaudiosink] doesn't try esdsink
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
0.10.x
Other Linux
: Normal normal
: 0.10.4
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on: 346665
Blocks:
 
 
Reported: 2006-05-26 19:18 UTC by Loïc Minier
Modified: 2006-07-24 14:55 UTC
See Also:
GNOME target: ---
GNOME version: 2.13/2.14


Attachments
"gst-launch-0.10 --gst-debug-no-color --gst-debug=3" log of the failing pipeline (23.41 KB, text/plain)
2006-05-26 19:21 UTC, Loïc Minier
Details
--gst-debug-level=5 log (91.85 KB, application/x-bzip2)
2006-05-26 20:36 UTC, Loïc Minier
Details

Description Loïc Minier 2006-05-26 19:18:32 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,
Comment 1 Loïc Minier 2006-05-26 19:21:23 UTC
Created attachment 66299 [details]
"gst-launch-0.10 --gst-debug-no-color --gst-debug=3" log of the failing pipeline
Comment 2 Loïc Minier 2006-05-26 20:36:15 UTC
Created attachment 66302 [details]
--gst-debug-level=5 log
Comment 3 Loïc Minier 2006-05-26 21:11:59 UTC
It's not clear to me how esdsink has a change of being used if it's registered with GST_RANK_NONE?
Comment 4 Tim-Philipp Müller 2006-05-27 11:20:38 UTC
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.
  */

Comment 5 Loïc Minier 2006-05-27 18:09:15 UTC
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.
Comment 6 Tim-Philipp Müller 2006-07-24 14:55:30 UTC
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).