GNOME Bugzilla – Bug 132306
Esdsink does not work
Last modified: 2004-12-22 21:47:04 UTC
When I use esdsink, I get the following error: Internal GStreamer error: negotiation problem. File a bug It's easy to reproduce with gst-launch: gst-launch-0.7 filesrc location=song.mp3 ! mad ! osssink RUNNING pipeline ... Osd works. And now esd: [rhult@carrot rhythmbox]$ gst-launch-0.7 filesrc location=song.mp3 ! mad ! esdsink RUNNING pipeline ... ERROR: from element /pipeline0/esdsink0: Internal GStreamer error: negotiation problem. File a bug. Additional debug info: esdsink.c(269):gst_esdsink_chain: element wasn't negotiated before chain function ERROR scheduler( 7687) gstoptimalscheduler.c(2074):gst_opt_scheduler_iterate: [GstOptScheduler@0x92a6b88] in error state Execution ended after 1 iterations (sum 73959000 ns, average 73959000 ns, min 73959000 ns, max 73959000 ns).
I added better debugging and also erroring for some cases in the sink, please give a new error report so we can see what goes wrong.
Additional debug info: [rhult@carrot rhult]$ gst-launch-0.7 --gst-debug=esd:5 filesrc location=song.mp3 ! mad ! esdsink RUNNING pipeline ... ERROR: from element /pipeline0/esdsink0: Internal GStreamer error: negotiation problem. File a bug. Additional debug info: esdsink.c(272):gst_esdsink_chain: element wasn't negotiated before chain function DEBUG esd(19473) esdsink.c(447):gst_esdsink_open_audio: esdsink: attempting to open connection to esound server ERROR scheduler(19473) gstoptimalscheduler.c(2074):gst_opt_scheduler_iterate: [GstOptScheduler@0x86e0c08] in error state Execution ended after 1 iterations (sum 90662000 ns, average 90662000 ns, min 90662000 ns, max 90662000 ns). DEBUG esd(19473) esdsink.c(471):gst_esdsink_close_audio: esdsink: closed sound device
Again, with updated debugging code: [rhult@carrot esd]$ gst-launch-0.7 --gst-debug=esd:4 filesrc location=song.mp3 ! mad ! esdsink RUNNING pipeline ... ERROR: from element /pipeline0/esdsink0: Internal GStreamer error: negotiation problem. File a bug. Additional debug info: esdsink.c(273):gst_esdsink_chain: element wasn't negotiated before chain function INFO esd(19791) esdsink.c(448):gst_esdsink_open_audio: attempting to open connection to esound server INFO esd(19791) esdsink.c(459):gst_esdsink_open_audio: successfully opened connection to esound server ERROR scheduler(19791) gstoptimalscheduler.c(2074):gst_opt_scheduler_iterate: [GstOptScheduler@0x8853c08] in error state Execution ended after 1 iterations (sum 51962000 ns, average 51962000 ns, min 51962000 ns, max 51962000 ns). INFO esd(19791) esdsink.c(473):gst_esdsink_close_audio: esdsink: closed sound device
This should be fixed. esdsink now forces rate=44100,width=16,channels=2. synchronization is fixed, too.
Thanks guys! Works like a charm :)
I got esdsink working with some help from Thomas (he told be to add audioscale and audioconvert) but now it seems to have broken again: (works with osssink) gst-launch-0.7 --gst-debug=esd:4 filesrc location=song.mp3 ! mad ! audioscale ! audioconvert ! esdsink RUNNING pipeline ... INFO esd(28651) esdsink.c(408):gst_esdsink_open_audio: NULL attempting to open connection to esound server INFO esd(28651) esdsink.c(419):gst_esdsink_open_audio: NULL successfully opened connection to esound server ERROR esd(28651) esdsink.c(257):gst_esdsink_chain: <esdsink0> element wasn't negotiated before chain function ERROR: from element /pipeline0/esdsink0: Internal GStreamer error: negotiation problem. File a bug. Additional debug info: esdsink.c(257):gst_esdsink_chain: element wasn't negotiated before chain function
Apparently, nobody checked this. Negotiation is removed (good thing, esd can't negotiate anyway) and ... we set state to unnegotiated by default and set it to negotiated after negotiation. That's useful. Fixed in CVS.