diff options
author | Edward Hervey <bilboed@bilboed.com> | 2008-05-13 09:33:09 +0000 |
---|---|---|
committer | Edward Hervey <bilboed@bilboed.com> | 2008-05-13 09:33:09 +0000 |
commit | 826629a9b081b0f8b8aef4efcd097cc275e39742 (patch) | |
tree | 095103f9aedab0c8dd8d56d572fc56778adc6b92 | |
parent | a3e36958aec4d4ec48dbd31d11f6ff6dc5d47b26 (diff) |
gst/realmedia/rmdemux.c: Properly aggregate GstFlowReturn from downstream in order to properly stop, and doing that a...
Original commit message from CVS:
* gst/realmedia/rmdemux.c: (gst_rmdemux_parse_video_packet):
Properly aggregate GstFlowReturn from downstream in order to properly
stop, and doing that as early as possible.
Fixes #532807
-rw-r--r-- | ChangeLog | 7 | ||||
m--------- | common | 0 | ||||
-rw-r--r-- | gst/realmedia/rmdemux.c | 8 |
3 files changed, 13 insertions, 2 deletions
@@ -1,3 +1,10 @@ +2008-05-13 Edward Hervey <edward.hervey@collabora.co.uk> + + * gst/realmedia/rmdemux.c: (gst_rmdemux_parse_video_packet): + Properly aggregate GstFlowReturn from downstream in order to properly + stop, and doing that as early as possible. + Fixes #532807 + 2008-05-10 Jan Schmidt <jan.schmidt@sun.com> * configure.ac: diff --git a/common b/common -Subproject dbf8f3aeceb6e57de097951a670cd853b4886ad +Subproject 2d9c09df0fe4ad3f570fea9f649cfc6c4511080 diff --git a/gst/realmedia/rmdemux.c b/gst/realmedia/rmdemux.c index 450210c5..4135aae9 100644 --- a/gst/realmedia/rmdemux.c +++ b/gst/realmedia/rmdemux.c @@ -2139,6 +2139,9 @@ gst_rmdemux_parse_video_packet (GstRMDemux * rmdemux, GstRMDemuxStream * stream, base = GST_BUFFER_DATA (in); data = base + offset; size = GST_BUFFER_SIZE (in) - offset; + /* if size <= 2, we want this method to return the same GstFlowReturn as it + * was previously for that given stream. */ + ret = stream->last_flow; while (size > 2) { guint8 pkg_header; @@ -2283,6 +2286,9 @@ gst_rmdemux_parse_video_packet (GstRMDemux * rmdemux, GstRMDemuxStream * stream, GST_BUFFER_TIMESTAMP (out) = timestamp; ret = gst_pad_push (stream->pad, out); + ret = gst_rmdemux_combine_flows (rmdemux, stream, ret); + if (ret != GST_FLOW_OK) + break; timestamp = GST_CLOCK_TIME_NONE; } @@ -2293,8 +2299,6 @@ gst_rmdemux_parse_video_packet (GstRMDemux * rmdemux, GstRMDemuxStream * stream, gst_buffer_unref (in); - ret = GST_FLOW_OK; - return ret; /* ERRORS */ |