From 25a041d46028965d06bee5904dea7d88d1efc071 Mon Sep 17 00:00:00 2001 From: "Zeeshan Ali (Khattak)" Date: Tue, 13 Jan 2009 14:33:32 +0000 Subject: [PATCH] Don't handle seeking when streaming. Turns out that seeking wasn't as simple as sending a seek event to the pipeline. svn path=/trunk/; revision=439 --- src/rygel/rygel-gst-stream.vala | 29 +++++------------------------ src/rygel/rygel-streamer.vala | 26 ++++++-------------------- 2 files changed, 11 insertions(+), 44 deletions(-) diff --git a/src/rygel/rygel-gst-stream.vala b/src/rygel/rygel-gst-stream.vala index fa13c06..68bd222 100644 --- a/src/rygel/rygel-gst-stream.vala +++ b/src/rygel/rygel-gst-stream.vala @@ -41,16 +41,12 @@ public class Rygel.GstStream : Rygel.Stream { private AsyncQueue buffers; - private Event seek_event; - - public GstStream (Soup.Server server, + public GstStream (Soup.Server server, Soup.Message msg, - string name, - Element src, - Event? seek_event) throws Error { - base (server, msg, seek_event != null); + string name, + Element src) throws Error { + base (server, msg, false); - this.seek_event = seek_event; this.buffers = new AsyncQueue (); this.prepare_pipeline (name, src); @@ -58,7 +54,7 @@ public class Rygel.GstStream : Rygel.Stream { public void start () { // Go to PAUSED first - this.pipeline.set_state (State.PAUSED); + this.pipeline.set_state (State.PLAYING); } public override void end (bool aborted) { @@ -224,21 +220,6 @@ public class Rygel.GstStream : Rygel.Stream { if (message.type == MessageType.EOS) { ret = false; - } else if (message.type == MessageType.STATE_CHANGED) { - State new_state; - State old_state; - - message.parse_state_changed (out old_state, out new_state, null); - if (new_state == State.PAUSED && old_state != State.PLAYING) { - if (this.seek_event != null) { - // Time to shove-in the pending seek event - this.pipeline.send_event (this.seek_event); - this.seek_event = null; - } - - // Now we can proceed to start streaming - this.pipeline.set_state (State.PLAYING); - } } else { GLib.Error err; string err_msg; diff --git a/src/rygel/rygel-streamer.vala b/src/rygel/rygel-streamer.vala index 734e034..7b66379 100644 --- a/src/rygel/rygel-streamer.vala +++ b/src/rygel/rygel-streamer.vala @@ -69,25 +69,12 @@ public class Rygel.Streamer : GLib.Object { return create_uri_for_path (query); } - private void stream_from_gst_source (Element# src, - Soup.Message msg, - Seek? seek) throws Error { - Event seek_event = null; - if (seek != null) { - seek_event = new Event.seek (1.0, - seek.format, - SeekFlags.FLUSH, - Gst.SeekType.SET, - seek.start, - Gst.SeekType.SET, - seek.stop); - } - + private void stream_from_gst_source (Element# src, + Soup.Message msg) throws Error { GstStream stream = new GstStream (this.context.server, msg, "RygelGstStream", - src, - seek_event); + src); stream.start (); stream.eos += on_eos; @@ -157,7 +144,7 @@ public class Rygel.Streamer : GLib.Object { if (item.upnp_class.has_prefix (MediaItem.IMAGE_CLASS)) { this.handle_interactive_item (msg, item, seek); } else { - this.handle_streaming_item (msg, item, seek); + this.handle_streaming_item (msg, item); } } @@ -199,8 +186,7 @@ public class Rygel.Streamer : GLib.Object { } private void handle_streaming_item (Soup.Message msg, - MediaItem item, - Seek? seek) { + MediaItem item) { string uri = item.res.uri; dynamic Element src = null; @@ -225,7 +211,7 @@ public class Rygel.Streamer : GLib.Object { try { // Then start the gst stream - this.stream_from_gst_source (src, msg, seek); + this.stream_from_gst_source (src, msg); } catch (Error error) { critical ("Error in attempting to start streaming %s: %s", uri, -- 2.7.4