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 335958 - [speexenc] doesn't work
[speexenc] doesn't work
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
0.10.x
Other Linux
: Normal major
: 0.10.3
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2006-03-25 14:59 UTC by Sebastien Bacher
Modified: 2006-04-20 17:40 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Sebastien Bacher 2006-03-25 14:59:32 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."
Comment 1 Ross Burton 2006-03-27 12:14:55 UTC
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?
Comment 2 Tim-Philipp Müller 2006-03-27 12:30:30 UTC
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

Comment 3 Ross Burton 2006-03-27 12:49:03 UTC
$ 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.
Comment 4 Wim Taymans 2006-03-27 15:56:25 UTC
commited some fixes to -good to properly fix that last warning, not sure it fixes the problem since I cannot reproduce it...
Comment 5 Wim Taymans 2006-03-29 14:11:59 UTC
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?
Comment 6 Ross Burton 2006-03-29 14:26:35 UTC
I'm using gstreamer 0.10.4-1ubuntu1 and gst-plugins-good 0.10.2-2ubuntu2.
Comment 7 Wim Taymans 2006-04-20 16:59:22 UTC
0.10.5 of -base?
Comment 8 Ross Burton 2006-04-20 17:06:04 UTC
Yep, 0.10.5 of -base.  Still broken for me.
Comment 9 Tim-Philipp Müller 2006-04-20 17:40:07 UTC
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.