GNOME Bugzilla – Bug 335958
[speexenc] doesn't work
Last modified: 2006-04-20 17:40:07 UTC
That bug has been opened on https://launchpad.net/distros/ubuntu/+source/sound-juicer/+bug/34904 "If I select Voice, Lossy as the format, it extracts it, but nothing will play it. It seems as if it isn't encoding to speex correctly." The corresponding profile: "speexenc name=enc ! oggmux" gst-launch complains when trying to read the corresponding .ogg about: "** Message: don't know how to handle application/octet-stream ERROR: from element /playbin0: You do not have a decoder installed to handle this file. You might need to install the necessary plugins."
This looks a lot like a gstreamer bug: $ gst-launch-0.10 fakesrc ! audioconvert ! audioresample ! speexenc ! fakesink Setting pipeline to PAUSED ... Pipeline is PREROLLING ... ERROR: from element /pipeline0/audioconvert0: not negotiated Additional debug info: gstbasetransform.c(1272): gst_base_transform_handle_buffer (): /pipeline0/audioconvert0: not negotiated ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... FREEING pipeline ... That pipeline should work, right?
No, that pipeline won't work, because (a) fakesrc will by default push buffers of size 0, with no data (b) fakesrc will not set raw audio caps on the buffer Try with audiotestsrc: $ gst-launch-0.10 audiotestsrc ! audioconvert ! audioresample ! audio/x-raw-int,channels=2 ! speexenc ! fakesink or similar should work. For a file: $ gst-launch-0.10 audiotestsrc ! audioconvert ! audioresample ! audio/x-raw-int,channels=2 ! speexenc ! oggmux ! filesink location=speextest.ogg
$ gst-launch-0.10 audiotestsrc ! audioconvert ! audioresample ! audio/x-raw-int,channels=2 ! speexenc ! oggmux ! filesink location=speextest.ogg Setting pipeline to PAUSED ... Pipeline is PREROLLING ... (gst-launch-0.10:28816): GStreamer-CRITICAL **: gst_value_list_append_value: assertion `GST_VALUE_HOLDS_LIST (value)' failed (gst-launch-0.10:28816): GStreamer-CRITICAL **: gst_value_list_append_value: assertion `GST_VALUE_HOLDS_LIST (value)' failed Pipeline is PREROLLED ... Setting pipeline to PLAYING ... New clock: GstSystemClock [control-c after a few seconds] Caught interrupt -- Pausing pipeline. Pipeline paused. WARNING: Element "pipeline0" warns: pipeline interrupted Element "pipeline0" has gone from PLAYING to PAUSED, quitting. Execution ended after 5115145000 ns. Setting pipeline to PAUSED ... Setting pipeline to READY ... (gst-launch-0.10:28816): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GstMiniObject' (gst-launch-0.10:28816): GStreamer-CRITICAL **: gst_mini_object_unref: assertion `mini_object->refcount > 0' failed Setting pipeline to NULL ... FREEING pipeline ... $ gst-launch-0.10 playbin uri=file:///home/ross/speextest.ogg Setting pipeline to PAUSED ... Pipeline is PREROLLING ... ** Message: don't know how to handle application/octet-stream ERROR: from element /playbin0: You do not have a decoder installed to handle thi s file. You might need to install the necessary plugins. Additional debug info: gstplaybasebin.c(1457): prepare_output (): /playbin0 ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... FREEING pipeline ... Something is wrong here.
commited some fixes to -good to properly fix that last warning, not sure it fixes the problem since I cannot reproduce it...
Really can't reproduce, works very fine with current CVS, both recording and playback, no errors or anything. Can you verify this? What versions of plugins/core were used?
I'm using gstreamer 0.10.4-1ubuntu1 and gst-plugins-good 0.10.2-2ubuntu2.
0.10.5 of -base?
Yep, 0.10.5 of -base. Still broken for me.
I can reproduce all of the above issues with -good 0.10.2 as well, but I'm pretty sure they have been fixed in -good CVS by these two commits: 2006-03-27 Wim Taymans <wim@fluendo.com> * ext/speex/gstspeexenc.c: (gst_speexenc_class_init), (gst_speexenc_finalize), (gst_speexenc_sink_setcaps), (gst_speexenc_chain): * ext/speex/gstspeexenc.h: Don't leak adapter. A push *always* takes ownership of the buffer, even on errors. Small cleanups. 2006-03-06 Thomas Vander Stichele <thomas at apestaart dot org> * ext/speex/gstspeexenc.c: (gst_speexenc_set_header_on_caps), (gst_speexenc_chain): fix a tag list assert follow gst-plugins-base/ext/ogg/README; set OFFSET and OFFSET_END. Muxes correctly with gst-plugins-base > 0.9.3 Please re-open if you can still reproduce this with the upcoming -good 0.10.3 release or with good CVS.