summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--gst/law/mulaw-decode.c9
2 files changed, 13 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 1b4f0293..da4876f1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-02-28 Sebastian Dröge <slomo@circular-chaos.org>
+
+ * gst/law/mulaw-decode.c: (gst_mulawdec_chain):
+ Return GST_FLOW_NOT_NEGOTIATED when the caps are not set
+ yet on the srcpad. We need rate and channels before we
+ can do any processing. Fixes bug #519088.
+
2008-02-26 Jan Schmidt <jan.schmidt@sun.com>
* configure.ac:
diff --git a/gst/law/mulaw-decode.c b/gst/law/mulaw-decode.c
index d7a858e4..c39e26b3 100644
--- a/gst/law/mulaw-decode.c
+++ b/gst/law/mulaw-decode.c
@@ -153,7 +153,12 @@ gst_mulawdec_chain (GstPad * pad, GstBuffer * buffer)
GstBuffer *outbuf;
GstFlowReturn ret;
- mulawdec = GST_MULAWDEC (gst_pad_get_parent (pad));
+ mulawdec = GST_MULAWDEC (GST_PAD_PARENT (pad));
+
+ if (G_UNLIKELY (mulawdec->srccaps == NULL)) {
+ gst_buffer_unref (buffer);
+ return GST_FLOW_NOT_NEGOTIATED;
+ }
mulaw_data = (guint8 *) GST_BUFFER_DATA (buffer);
mulaw_size = GST_BUFFER_SIZE (buffer);
@@ -179,8 +184,6 @@ gst_mulawdec_chain (GstPad * pad, GstBuffer * buffer)
ret = gst_pad_push (mulawdec->srcpad, outbuf);
- gst_object_unref (mulawdec);
-
return ret;
}