private void OnStateChange(IntPtr player, GstState old_state, GstState new_state, GstState pending_state) { // Start by clearing any timeout we might have StopIterating(); if (CurrentState != PlayerState.Loaded && old_state == GstState.Ready && new_state == GstState.Paused && pending_state == GstState.Playing) { if (ready_timeout != 0) { Application.IdleTimeoutRemove(ready_timeout); ready_timeout = 0; } OnStateChanged(PlayerState.Loaded); return; } else if (old_state == GstState.Paused && new_state == GstState.Playing && pending_state == GstState.VoidPending) { if (CurrentState == PlayerState.Loaded) { OnEventChanged(PlayerEvent.StartOfStream); } OnStateChanged(PlayerState.Playing); // Start iterating only when going to playing StartIterating(); return; } else if (CurrentState == PlayerState.Playing && old_state == GstState.Playing && new_state == GstState.Paused) { OnStateChanged(PlayerState.Paused); return; } else if (new_state == GstState.Ready && pending_state == GstState.Playing) { if (ready_timeout == 0) { ready_timeout = Application.RunTimeout(1000, OnReadyTimeout); } return; } }
private void OnStateChange(IntPtr player, GstState old_state, GstState new_state, GstState pending_state) { if (old_state == GstState.Ready && new_state == GstState.Paused && pending_state == GstState.Playing) { OnStateChanged(PlayerState.Loaded); return; } else if (old_state == GstState.Paused && new_state == GstState.Playing && pending_state == GstState.VoidPending) { if (CurrentState == PlayerState.Loaded) { OnEventChanged(PlayerEvent.StartOfStream); } OnStateChanged(PlayerState.Playing); return; } else if (CurrentState == PlayerState.Playing && old_state == GstState.Playing && new_state == GstState.Paused) { OnStateChanged(PlayerState.Paused); return; } }
private void OnStateChange (IntPtr player, GstState old_state, GstState new_state, GstState pending_state) { // Start by clearing any timeout we might have StopIterating (); if (CurrentState != PlayerState.Loaded && old_state == GstState.Ready && new_state == GstState.Paused && pending_state == GstState.Playing) { if (ready_timeout != 0) { Application.IdleTimeoutRemove (ready_timeout); ready_timeout = 0; } OnStateChanged (PlayerState.Loaded); return; } else if (old_state == GstState.Paused && new_state == GstState.Playing && pending_state == GstState.VoidPending) { if (CurrentState == PlayerState.Loaded) { OnEventChanged (PlayerEvent.StartOfStream); } OnStateChanged (PlayerState.Playing); // Start iterating only when going to playing StartIterating (); return; } else if (CurrentState == PlayerState.Playing && old_state == GstState.Playing && new_state == GstState.Paused) { OnStateChanged (PlayerState.Paused); return; } else if (new_state == GstState.Ready && pending_state == GstState.Playing) { if (ready_timeout == 0) { ready_timeout = Application.RunTimeout (1000, OnReadyTimeout); } return; } }
public static extern void gst_element_set_state(IntPtr pipeline, GstState gST_STATE_PLAYING);
public static extern GstStateChangeReturn gst_element_set_state(IntPtr pipeline, GstState gST_STATE_PLAYING);