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 350006 - [LADSPA] after changing state from PLAYING to READY/NULL, going back to PLAYING doesn't work
[LADSPA] after changing state from PLAYING to READY/NULL, going back to PLAYI...
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other All
: Normal critical
: 0.10.5
Assigned To: Wim Taymans
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2006-08-05 00:50 UTC by Jono Bacon
Modified: 2006-08-16 16:50 UTC
See Also:
GNOME target: ---
GNOME version: 2.13/2.14


Attachments
Test case (4.17 KB, text/plain)
2006-08-05 00:52 UTC, Jono Bacon
  Details
Glade file for use with test case (2.75 KB, application/xml)
2006-08-05 00:53 UTC, Jono Bacon
  Details
patchy patch (5.68 KB, patch)
2006-08-08 20:05 UTC, Andy Wingo
committed Details | Review

Description Jono Bacon 2006-08-05 00:50:45 UTC
Please describe the problem:
Attached is a sample script that demonstrates this bug. I basically create pipeline which feeds an ogg file through a LADSPA effect. I set the state to PLAYING, and it plays fine, complete with the expected effect output. I then switch to READY or NULL, which is fine, but when I set the state back to PLAYING, things go horribly wrong.

I get different errors, depending on whether we go from READY or NULL. This is after I have played it once. So, I first go from NULL to PLAYING, and it works, and then I either set it to READY or NULL, and when I go to PLAYING I get different errors:

>> From READY to PLAYING <<

** (ladspabug.py:9754): CRITICAL **: gst_signal_processor_setup: assertion `self->state == GST_SIGNAL_PROCESSOR_STATE_NULL' failed

** (ladspabug.py:9754): CRITICAL **: gst_signal_processor_setup: assertion `self->state == GST_SIGNAL_PROCESSOR_STATE_NULL' failed

** (ladspabug.py:9754): CRITICAL **: gst_signal_processor_setup: assertion `self->state == GST_SIGNAL_PROCESSOR_STATE_NULL' failed

** (ladspabug.py:9754): CRITICAL **: gst_signal_processor_setup: assertion `self->state == GST_SIGNAL_PROCESSOR_STATE_NULL' failed

** (ladspabug.py:9754): CRITICAL **: gst_signal_processor_setup: assertion `self->state == GST_SIGNAL_PROCESSOR_STATE_NULL' failed

** (ladspabug.py:9754): CRITICAL **: gst_signal_processor_setup: assertion `self->state == GST_SIGNAL_PROCESSOR_STATE_NULL' failed

** (ladspabug.py:9754): CRITICAL **: gst_signal_processor_setup: assertion `self->state == GST_SIGNAL_PROCESSOR_STATE_NULL' failed

** (ladspabug.py:9754): CRITICAL **: gst_signal_processor_setup: assertion `self->state == GST_SIGNAL_PROCESSOR_STATE_NULL' failed

** (ladspabug.py:9754): CRITICAL **: gst_signal_processor_setup: assertion `self->state == GST_SIGNAL_PROCESSOR_STATE_NULL' failed

** (ladspabug.py:9754): CRITICAL **: gst_signal_processor_setup: assertion `self->state == GST_SIGNAL_PROCESSOR_STATE_NULL' failed

I also check the error bus:

GStreamer encountered a general stream error.
gstoggdemux.c(2852): gst_ogg_demux_loop (): /mixer/mycomposition1/audio1/internal-decodebin/oggdemux1:
stream stopped, reason not-negotiated



>> From NULL to PLAYING <<

** (ladspabug.py:9829): CRITICAL **: gst_signal_processor_process: assertion `self->pending_out == 0' failed

** (ladspabug.py:9829): WARNING **: Unexpectedly empty buffer pen for pad effect1:Output

** (ladspabug.py:9829): CRITICAL **: Something wierd happened...

** (ladspabug.py:9829): CRITICAL **: gst_signal_processor_process: assertion `self->pending_out == 0' failed

** (ladspabug.py:9829): WARNING **: Unexpectedly empty buffer pen for pad effect1:Output

** (ladspabug.py:9829): CRITICAL **: Something wierd happened...

** (ladspabug.py:9829): CRITICAL **: gst_signal_processor_process: assertion `self->pending_out == 0' failed

** (ladspabug.py:9829): WARNING **: Unexpectedly empty buffer pen for pad effect1:Output

** (ladspabug.py:9829): CRITICAL **: Something wierd happened...

** (ladspabug.py:9829): CRITICAL **: gst_signal_processor_process: assertion `self->pending_out == 0' failed

** (ladspabug.py:9829): WARNING **: Unexpectedly empty buffer pen for pad effect1:Output

** (ladspabug.py:9829): CRITICAL **: Something wierd happened...

** (ladspabug.py:9829): CRITICAL **: gst_signal_processor_process: assertion `self->pending_out == 0' failed

** (ladspabug.py:9829): WARNING **: Unexpectedly empty buffer pen for pad effect1:Output

** (ladspabug.py:9829): CRITICAL **: Something wierd happened...

** (ladspabug.py:9829): CRITICAL **: gst_signal_processor_process: assertion `self->pending_out == 0' failed

** (ladspabug.py:9829): WARNING **: Unexpectedly empty buffer pen for pad effect1:Output

** (ladspabug.py:9829): CRITICAL **: Something wierd happened...

** (ladspabug.py:9829): CRITICAL **: gst_signal_processor_process: assertion `self->pending_out == 0' failed

** (ladspabug.py:9829): WARNING **: Unexpectedly empty buffer pen for pad effect1:Output

** (ladspabug.py:9829): CRITICAL **: Something wierd happened...

** (ladspabug.py:9829): CRITICAL **: gst_signal_processor_process: assertion `self->pending_out == 0' failed

** (ladspabug.py:9829): WARNING **: Unexpectedly empty buffer pen for pad effect1:Output

** (ladspabug.py:9829): CRITICAL **: Something wierd happened...

** (ladspabug.py:9829): CRITICAL **: gst_signal_processor_process: assertion `self->pending_out == 0' failed

** (ladspabug.py:9829): WARNING **: Unexpectedly empty buffer pen for pad effect1:Output

** (ladspabug.py:9829): CRITICAL **: Something wierd happened...

** (ladspabug.py:9829): CRITICAL **: gst_signal_processor_process: assertion `self->pending_out == 0' failed

** (ladspabug.py:9829): WARNING **: Unexpectedly empty buffer pen for pad effect1:Output

** (ladspabug.py:9829): CRITICAL **: Something wierd happened...

I also check the error bus:

GStreamer encountered a general stream error.
gstoggdemux.c(2852): gst_ogg_demux_loop (): /mixer/mycomposition1/audio1/internal-decodebin/oggdemux1:
stream stopped, reason error

Steps to reproduce:
1. 
2. 
3. 


Actual results:


Expected results:


Does this happen every time?


Other information:
Comment 1 Jono Bacon 2006-08-05 00:52:51 UTC
Created attachment 70236 [details]
Test case
Comment 2 Jono Bacon 2006-08-05 00:53:44 UTC
Created attachment 70237 [details]
Glade file for use with test case
Comment 3 Andy Wingo 2006-08-08 20:05:58 UTC
Created attachment 70507 [details] [review]
patchy patch

Jono, you should check out the python shell, and its most awesome variant ipython (google for it). It's great.

So my test case goes like this:

$ ipython
>> import pygst; pygst.require('0.10'); import gst
>> p = gst.parse_launch('audiotestsrc ! audioconvert ! ladspa-identity-audio ! fakesink')
>> p.set_state(gst.STATE_PLAYING)
>> p.set_state(gst.STATE_NULL)
>> p.set_state(gst.STATE_PLAYING)

Anyways, the attached patch fixes this bug and #349901. Unfortunately we are in a freeze. Try it out and tell me if there are more problems.
Comment 4 Jono Bacon 2006-08-09 09:30:03 UTC
I tested the patch, and it still doesn't solve the problem. Using my test script that I attached to this bug, I press play and it plays fine, press stop and when I press play again, it doesn't play.

These are the errors that gst spits at me:

** (ladspabug.py:18338): CRITICAL **: gst_signal_processor_process: assertion `self->pending_out == 0' failed

** (ladspabug.py:18338): WARNING **: Unexpectedly empty buffer pen for pad effect1:Output

** (ladspabug.py:18338): CRITICAL **: Something wierd happened...

** (ladspabug.py:18338): CRITICAL **: gst_signal_processor_process: assertion `self->pending_out == 0' failed

** (ladspabug.py:18338): WARNING **: Unexpectedly empty buffer pen for pad effect1:Output

** (ladspabug.py:18338): CRITICAL **: Something wierd happened...

** (ladspabug.py:18338): CRITICAL **: gst_signal_processor_process: assertion `self->pending_out == 0' failed

** (ladspabug.py:18338): WARNING **: Unexpectedly empty buffer pen for pad effect1:Output

** (ladspabug.py:18338): CRITICAL **: Something wierd happened...

** (ladspabug.py:18338): CRITICAL **: gst_signal_processor_process: assertion `self->pending_out == 0' failed

** (ladspabug.py:18338): WARNING **: Unexpectedly empty buffer pen for pad effect1:Output

** (ladspabug.py:18338): CRITICAL **: Something wierd happened...

** (ladspabug.py:18338): CRITICAL **: gst_signal_processor_process: assertion `self->pending_out == 0' failed

** (ladspabug.py:18338): WARNING **: Unexpectedly empty buffer pen for pad effect1:Output

** (ladspabug.py:18338): CRITICAL **: Something wierd happened...

** (ladspabug.py:18338): CRITICAL **: gst_signal_processor_process: assertion `self->pending_out == 0' failed

** (ladspabug.py:18338): WARNING **: Unexpectedly empty buffer pen for pad effect1:Output

** (ladspabug.py:18338): CRITICAL **: Something wierd happened...

** (ladspabug.py:18338): CRITICAL **: gst_signal_processor_process: assertion `self->pending_out == 0' failed

** (ladspabug.py:18338): WARNING **: Unexpectedly empty buffer pen for pad effect1:Output

** (ladspabug.py:18338): CRITICAL **: Something wierd happened...

** (ladspabug.py:18338): CRITICAL **: gst_signal_processor_process: assertion `self->pending_out == 0' failed

** (ladspabug.py:18338): WARNING **: Unexpectedly empty buffer pen for pad effect1:Output

** (ladspabug.py:18338): CRITICAL **: Something wierd happened...

** (ladspabug.py:18338): CRITICAL **: gst_signal_processor_process: assertion `self->pending_out == 0' failed

** (ladspabug.py:18338): WARNING **: Unexpectedly empty buffer pen for pad effect1:Output

** (ladspabug.py:18338): CRITICAL **: Something wierd happened...

** (ladspabug.py:18338): CRITICAL **: gst_signal_processor_process: assertion `self->pending_out == 0' failed

** (ladspabug.py:18338): WARNING **: Unexpectedly empty buffer pen for pad effect1:Output

** (ladspabug.py:18338): CRITICAL **: Something wierd happened...
!!!! bus message error: GStreamer encountered a general stream error.
!!!! bus message debug: gstoggdemux.c(2852): gst_ogg_demux_loop (): /mixer/mycomposition1/audio1/internal-decodebin/oggdemux1:
stream stopped, reason error

Comment 5 Wim Taymans 2006-08-16 16:50:28 UTC
        Patch by: Andy Wingo <wingo at pobox dot com>

        * ext/ladspa/gstsignalprocessor.c: (gst_signal_processor_setup),
        (gst_signal_processor_start), (gst_signal_processor_stop),
        (gst_signal_processor_cleanup), (gst_signal_processor_setcaps),
        (gst_signal_processor_pen_buffer), (gst_signal_processor_flush),
        (gst_signal_processor_do_pulls), (gst_signal_processor_do_pushes),
        (gst_signal_processor_change_state):
        Make ladspa elements reusable. Fixes #350006.