summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Hervey <bilboed@bilboed.com>2008-05-13 09:33:09 +0000
committerEdward Hervey <bilboed@bilboed.com>2008-05-13 09:33:09 +0000
commit826629a9b081b0f8b8aef4efcd097cc275e39742 (patch)
tree095103f9aedab0c8dd8d56d572fc56778adc6b92
parenta3e36958aec4d4ec48dbd31d11f6ff6dc5d47b26 (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--ChangeLog7
m---------common0
-rw-r--r--gst/realmedia/rmdemux.c8
3 files changed, 13 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 01b6a2d1..9fce80d9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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 */