protected bool playing;
protected Player slave;
protected Player master;
+ protected bool loop;
+ protected string uri;
public Player()
{
master = null;
player = Gst.ElementFactory.make("playbin", null);
playing = false;
+ loop = false;
var bus = player.get_bus();
bus.add_signal_watch();
bus.message += on_message;
slave.master = this;
}
- public void play(string uri)
+ public void play(string uri, bool loop = false)
{
+ this.uri = uri;
+
if (slave != null && slave.playing)
slave.pause();
player.set_property("uri", uri);
player.set_state(master != null && master.playing ? Gst.State.PAUSED : Gst.State.PLAYING);
playing = true;
+ this.loop = loop;
}
public void pause()
player.set_state(Gst.State.PLAYING);
}
+ public void restart()
+ {
+ player.seek_simple(Gst.Format.TIME, Gst.SeekFlags.FLUSH | Gst.SeekFlags.KEY_UNIT, 0);
+ player.set_state(Gst.State.PLAYING);
+ }
+
public void stop()
{
playing = false;
protected void on_message(Gst.Message message)
{
if (message.type == Gst.MessageType.EOS)
- stop();
+ {
+ if (loop)
+ restart();
+ else
+ stop();
+ }
}
public void shutdown()