summaryrefslogtreecommitdiffstats
path: root/ext/ladspa
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2006-12-18 15:51:54 +0000
committerWim Taymans <wim.taymans@gmail.com>2006-12-18 15:51:54 +0000
commit3abb0f8d67b7c8d64792aeb39b9ca424249a6cb9 (patch)
tree8c576bb682c8a2bcc867f6f11f6376eed453bf8c /ext/ladspa
parent5c63981e41958369c0aeb9bf53e9f40a186c79e9 (diff)
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.c25
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);