From ea28d448c6b96283f1abb3130c9958e74a1d4a1a Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Tue, 16 Aug 2005 09:54:10 +0000 Subject: [PATCH] Handle _push() return values. Original commit message from CVS: * ext/faad/gstfaad.c: (gst_faad_event), (gst_faad_chain): * gst/qtdemux/qtdemux.c: (gst_qtdemux_loop_header): Handle _push() return values. --- ChangeLog | 6 ++++++ common | 2 +- ext/faad/gstfaad.c | 9 +++++++-- gst/qtdemux/qtdemux.c | 5 ++++- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index b501c91ef9..88818adc21 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-08-16 Ronald S. Bultje + + * ext/faad/gstfaad.c: (gst_faad_event), (gst_faad_chain): + * gst/qtdemux/qtdemux.c: (gst_qtdemux_loop_header): + Handle _push() return values. + 2005-08-15 Ronald S. Bultje * ext/faad/gstfaad.c: (gst_faad_event): diff --git a/common b/common index fae12c8772..8ff526a316 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit fae12c87727e1a701975d0e72078e844c25f499c +Subproject commit 8ff526a316f9b576e727b8e32cba0a53cdec07a6 diff --git a/ext/faad/gstfaad.c b/ext/faad/gstfaad.c index 886193cc29..0ad592b726 100644 --- a/ext/faad/gstfaad.c +++ b/ext/faad/gstfaad.c @@ -669,6 +669,9 @@ gst_faad_event (GstPad * pad, GstEvent * event) GST_STREAM_UNLOCK (pad); break; } + case GST_EVENT_FLUSH_START: + res = gst_pad_push_event (faad->srcpad, event); + break; default: GST_STREAM_LOCK (pad); res = gst_pad_push_event (faad->srcpad, event); @@ -839,7 +842,7 @@ gst_faad_chain (GstPad * pad, GstBuffer * buffer) r = gst_pad_alloc_buffer (faad->srcpad, 0, bufsize, caps, &outbuf); if (r != GST_FLOW_OK) { GST_DEBUG ("Failed to allocate buffer"); - ret = GST_FLOW_OK; /* CHECK: or return something else? */ + ret = r; //GST_FLOW_OK; /* CHECK: or return something else? */ goto out; } @@ -855,7 +858,9 @@ gst_faad_chain (GstPad * pad, GstBuffer * buffer) GST_DEBUG ("pushing buffer, off=%" G_GUINT64_FORMAT ", ts=%" GST_TIME_FORMAT, GST_BUFFER_OFFSET (outbuf), GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (outbuf))); - gst_pad_push (faad->srcpad, outbuf); + if ((ret = gst_pad_push (faad->srcpad, outbuf)) != GST_FLOW_OK && + ret != GST_FLOW_NOT_LINKED) + goto out; } } } diff --git a/gst/qtdemux/qtdemux.c b/gst/qtdemux/qtdemux.c index b419e24fd9..3a5dbcd2c8 100644 --- a/gst/qtdemux/qtdemux.c +++ b/gst/qtdemux/qtdemux.c @@ -507,6 +507,7 @@ gst_qtdemux_loop_header (GstPad * pad) int offset; guint64 cur_offset; int size; + GstFlowReturn ret; /* FIXME _tell gets the offset wrong */ //cur_offset = gst_bytestream_tell(qtdemux->bs); @@ -683,7 +684,9 @@ gst_qtdemux_loop_header (GstPad * pad) GST_DEBUG ("Pushing buf with time=%" GST_TIME_FORMAT, GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf))); gst_buffer_set_caps (buf, stream->caps); - gst_pad_push (stream->pad, buf); + ret = gst_pad_push (stream->pad, buf); + if (ret != GST_FLOW_OK && ret != GST_FLOW_NOT_LINKED) + goto pause; GST_INFO ("pushing buffer on %" GST_PTR_FORMAT, stream->pad); }