From 37889b48957d1476f9f1a7641e72e1fec1f8025b Mon Sep 17 00:00:00 2001 From: Sjoerd Simons Date: Fri, 2 Aug 2013 16:46:20 +0200 Subject: ClutterGstPlayback: implement a method to get position in seconds --- clutter-gst/clutter-gst-playback.c | 30 ++++++++++++++++++++++++++++++ clutter-gst/clutter-gst-playback.h | 1 + 2 files changed, 31 insertions(+) diff --git a/clutter-gst/clutter-gst-playback.c b/clutter-gst/clutter-gst-playback.c index 1aa4163..209ba76 100644 --- a/clutter-gst/clutter-gst-playback.c +++ b/clutter-gst/clutter-gst-playback.c @@ -812,6 +812,21 @@ set_subtitle_font_name (ClutterGstPlayback *self, g_object_set (priv->pipeline, "subtitle-font-desc", font_name, NULL); } +static gdouble +get_position (ClutterGstPlayback *self) +{ + ClutterGstPlaybackPrivate *priv = self->priv; + gboolean success; + GstFormat format = GST_FORMAT_TIME; + gint64 position; + + success = gst_element_query_position (priv->pipeline, format, &position); + if (G_UNLIKELY (success != TRUE)) + return 0.0; + + return (gdouble) position / GST_SECOND; +} + static gboolean player_buffering_timeout (gpointer data) { @@ -2764,6 +2779,21 @@ clutter_gst_playback_get_progress (ClutterGstPlayback *self) return get_progress (self); } +/** + * clutter_gst_playback_get_position: + * @self: a #ClutterGstPlayback + * + * Retrieves the position in the media stream that @self represents. + * + * Return value: the position in the media stream, in seconds + */ +gdouble +clutter_gst_playback_get_position (ClutterGstPlayback *self) +{ + g_return_val_if_fail (CLUTTER_GST_IS_PLAYBACK (self), 0); + + return get_position (self); +} /** * clutter_gst_playback_get_duration: diff --git a/clutter-gst/clutter-gst-playback.h b/clutter-gst/clutter-gst-playback.h index ba8ae3e..d92905b 100644 --- a/clutter-gst/clutter-gst-playback.h +++ b/clutter-gst/clutter-gst-playback.h @@ -159,6 +159,7 @@ gboolean clutter_gst_playback_get_in_seek (ClutterGstPl void clutter_gst_playback_set_progress (ClutterGstPlayback *self, gdouble progress); gdouble clutter_gst_playback_get_progress (ClutterGstPlayback *self); +gdouble clutter_gst_playback_get_position (ClutterGstPlayback *self); gdouble clutter_gst_playback_get_duration (ClutterGstPlayback *self); gboolean clutter_gst_playback_is_live_media (ClutterGstPlayback *self); -- cgit v1.2.1