diff options
author | Wim Taymans <wim.taymans@gmail.com> | 2006-12-18 15:51:54 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2006-12-18 15:51:54 +0000 |
commit | 446a05bb1d07d60887369a64d4a39c67a6103eab (patch) | |
tree | 93478161db01d113af37fe3ca32e4263815f8ecf /ext/ladspa | |
parent | de19264a3dcdd83be622a714a016f3cbe64d5edd (diff) | |
download | gst-plugins-bad-446a05bb1d07d60887369a64d4a39c67a6103eab.tar.gz gst-plugins-bad-446a05bb1d07d60887369a64d4a39c67a6103eab.tar.bz2 gst-plugins-bad-446a05bb1d07d60887369a64d4a39c67a6103eab.zip |
ext/ladspa/gstsignalprocessor.c: Reset flow_state back to _OK after a flush stop so that we exit our error state afte...
Original commit message from CVS:
* ext/ladspa/gstsignalprocessor.c: (gst_signal_processor_setcaps),
(gst_signal_processor_event):
Reset flow_state back to _OK after a flush stop so that we exit our
error state after the flush. Fixes #374213
Diffstat (limited to 'ext/ladspa')
-rw-r--r-- | ext/ladspa/gstsignalprocessor.c | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/ext/ladspa/gstsignalprocessor.c b/ext/ladspa/gstsignalprocessor.c index 12a0faff..99865c0f 100644 --- a/ext/ladspa/gstsignalprocessor.c +++ b/ext/ladspa/gstsignalprocessor.c @@ -382,25 +382,26 @@ gst_signal_processor_setcaps (GstPad * pad, GstCaps * caps) GstStructure *s; gint sample_rate; + GST_DEBUG_OBJECT (pad, "got caps %" GST_PTR_FORMAT, caps); + s = gst_caps_get_structure (caps, 0); if (!gst_structure_get_int (s, "rate", &sample_rate)) { GST_WARNING ("got no sample-rate"); goto impossible; - } else { - GST_DEBUG_OBJECT (self, "Got rate=%d", sample_rate); } + GST_DEBUG_OBJECT (self, "Got rate=%d", sample_rate); + if (GST_SIGNAL_PROCESSOR_IS_RUNNING (self)) gst_signal_processor_stop (self); if (GST_SIGNAL_PROCESSOR_IS_INITIALIZED (self)) gst_signal_processor_cleanup (self); - if (!gst_signal_processor_setup (self, sample_rate)) { + if (!gst_signal_processor_setup (self, sample_rate)) goto start_failed; - } else { - self->sample_rate = sample_rate; - gst_caps_replace (&self->caps, caps); - } + + self->sample_rate = sample_rate; + gst_caps_replace (&self->caps, caps); } else { GST_DEBUG_OBJECT (self, "skipping, have caps already"); } @@ -449,6 +450,16 @@ gst_signal_processor_event (GstPad * pad, GstEvent * event) if (bclass->event) bclass->event (self, event); + switch (GST_EVENT_TYPE (event)) { + case GST_EVENT_FLUSH_START: + break; + case GST_EVENT_FLUSH_STOP: + /* clear errors now */ + self->flow_state = GST_FLOW_OK; + break; + default: + break; + } ret = gst_pad_event_default (pad, event); gst_object_unref (self); |