// <name>Play</name> void play_cb (GUPnPService *service, GUPnPServiceAction *action, gpointer user_data) { g_debug ("play_cb"); if (!check_instance_id(action)) { return; } gstreamer_play(); GString *last_change = last_change_new (); set_transport_state (last_change, PLAYING); avtransport_notify_last_change(service, last_change); gupnp_service_action_return (action); }
void gstreamer_previous_frame() { gboolean error; gint64 pos = gstreamer_get_position(&error); if (!error) { double rate; if (!get_framerate(&rate)) return; printf("Position = %ld, Rate = %lf\n", pos, rate); pos -= ((gint64)GST_SECOND / rate) * 5; if (pos < 0) pos = 0; printf("Position = %ld\n", pos); if (gst_element_seek_simple(pipeline, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE, pos)) { printf("gstplay: Seek succeeded\n"); pause_on_state_change_to_playing = TRUE; gstreamer_play(); } else { printf("gstplay: Seek failed!.n"); } } }