GNOME Bugzilla – Bug 340379
[playbin] doesn't insert audioresample, causes problems with esdsink and other sinks
Last modified: 2006-05-25 14:51:03 UTC
Playing any audio or video file with esdsink selected in gstreamer-properties gives "Internal data stream error", "Internal data flow error", etc. This happens in totem, banshee, rhythmbox, listen, gmusicbrowser, etc.; anything that uses gstreamer for playback. However I cannot reproduce it using gst-launch; $ gst-launch playbin uri=file:///path/to/file $ gst-launch filesrc location=/path/to/file ! decodebin ! esdsink $ gst-launch filesrc location=/path/to/file ! decodebin ! gconfaudiosink all play fine. Totem does not produce any messages on stderr. Versions: gstreamer 0.10.5 gst-plugins-base 0.10.6 gst-plugins-good 0.10.2 I have also tried bringing ext/esd up to latest cvs. It still does not work.
Could you try again with gst-plugins-good 0.10.3 (or CVS, there shouldn't be a difference at the moment) and make sure it's actually picking up the right version by doing $ gst-inspect-0.10 esdsink | grep Version
I am running esdsink from gst-plugins-good-0.10.3: $ gst-inspect-0.10 esdsink | grep Version Version: 0.10.3 I have found a pipeline that fails: $ gst-launch filesrc location=/path/to/file ! decodebin ! audioconvert ! esdsink Setting pipeline to PAUSED ... Pipeline is PREROLLING ... (hangs at this point) Note the extra audioconvert element. audioconvert is version 0.10.6, from gst-plugins-base. If I try to play a wav file (as opposed to flac, ogg, etc.) totem produces output on stderr and occasionally segfaults: $ totem /usr/share/sounds/error.wav ** (totem:30586): WARNING **: could not link audio/x-raw-int, endianness=(int)1234, channels=(int)1, width=(int)16, depth=(int)16, signed=(boolean)true, rate=(int)44100: -4 (totem:30586): GStreamer-CRITICAL **: gst_caps_is_fixed: assertion `GST_IS_CAPS (caps)' failed (totem:30586): GStreamer-CRITICAL **: gst_pad_set_caps: assertion `caps == NULL || gst_caps_is_fixed (caps)' failed Segmentation fault esd server info: $ esdctl serverinfo server version = 0 server format = 0x00000021 server rate = 48000 esd output device is hw:0, a VIA 8235 (snd_via82xx, from ALSA 1.0.11, not the in-kernel module).
Could you try: $ gst-launch filesrc location=/path/to/file ! decodebin ! audioconvert ! audioresample ! esdsink
Yes, that works. Also, setting the gconf audio sink to custom "audioresample ! esdsink" makes Totem play OK.
D'oh, I know what's wrong: playbin doesn't insert audioresample by default. Re-assigning to gst-plugins-base.
2006-05-11 Tim-Philipp Müller <tim at centricular dot net> * gst/playback/gstplaybin.c: (gen_audio_element): Make playbin automatically plug an 'audioresample' element before the audio sink as well. This solves problems with sinks that only accept a very specific sample rate, like esdsink (e.g. #340379).
*** Bug 332725 has been marked as a duplicate of this bug. ***