[clutter-gst] ClutterGstPlayer: Add API to set/get buffer size/duration.



commit 72b47d2bacdae6bc99a0092e85b13a49f6ba3659
Author: Andre Moreira Magalhaes (andrunko) <andre magalhaes collabora co uk>
Date:   Wed Aug 15 14:37:41 2012 -0300

    ClutterGstPlayer: Add API to set/get buffer size/duration.

 clutter-gst/clutter-gst-player.c |  133 ++++++++++++++++++++++++++++++++++++++
 clutter-gst/clutter-gst-player.h |   18 ++++-
 2 files changed, 147 insertions(+), 4 deletions(-)
---
diff --git a/clutter-gst/clutter-gst-player.c b/clutter-gst/clutter-gst-player.c
index 234d885..34aabdb 100644
--- a/clutter-gst/clutter-gst-player.c
+++ b/clutter-gst/clutter-gst-player.c
@@ -839,6 +839,7 @@ player_buffering_timeout (gpointer data)
     }
 
   /* signal the current range */
+
   gst_query_parse_buffering_stats (query, NULL, NULL, NULL, &left);
   gst_query_parse_buffering_range (query, NULL, &start, &stop, NULL);
 
@@ -1770,6 +1771,54 @@ clutter_gst_player_set_buffering_mode_impl (ClutterGstPlayer        *player,
   g_object_set (G_OBJECT (priv->pipeline), "flags", flags, NULL);
 }
 
+static gint
+clutter_gst_player_get_buffer_size_impl (ClutterGstPlayer *player)
+{
+  ClutterGstPlayerPrivate *priv;
+  gint size;
+
+  priv = PLAYER_GET_PRIVATE (player);
+
+  g_object_get (G_OBJECT (priv->pipeline), "buffer-size", &size, NULL);
+
+  return size;
+}
+
+static void
+clutter_gst_player_set_buffer_size_impl (ClutterGstPlayer *player,
+                                         gint              size)
+{
+  ClutterGstPlayerPrivate *priv;
+
+  priv = PLAYER_GET_PRIVATE (player);
+
+  g_object_set (G_OBJECT (priv->pipeline), "buffer-size", size, NULL);
+}
+
+static gint64
+clutter_gst_player_get_buffer_duration_impl (ClutterGstPlayer *player)
+{
+  ClutterGstPlayerPrivate *priv;
+  gint64 duration;
+
+  priv = PLAYER_GET_PRIVATE (player);
+
+  g_object_get (G_OBJECT (priv->pipeline), "buffer-duration", &duration, NULL);
+
+  return duration;
+}
+
+static void
+clutter_gst_player_set_buffer_duration_impl (ClutterGstPlayer *player,
+                                             gint64            duration)
+{
+  ClutterGstPlayerPrivate *priv;
+
+  priv = PLAYER_GET_PRIVATE (player);
+
+  g_object_set (G_OBJECT (priv->pipeline), "buffer-duration", duration, NULL);
+}
+
 static GList *
 clutter_gst_player_get_audio_streams_impl (ClutterGstPlayer *player)
 {
@@ -1981,6 +2030,10 @@ clutter_gst_player_init (ClutterGstPlayer *player)
   iface->set_seek_flags = clutter_gst_player_set_seek_flags_impl;
   iface->get_buffering_mode = clutter_gst_player_get_buffering_mode_impl;
   iface->set_buffering_mode = clutter_gst_player_set_buffering_mode_impl;
+  iface->get_buffer_size = clutter_gst_player_get_buffer_size_impl;
+  iface->set_buffer_size = clutter_gst_player_set_buffer_size_impl;
+  iface->get_buffer_duration = clutter_gst_player_get_buffer_duration_impl;
+  iface->set_buffer_duration = clutter_gst_player_set_buffer_duration_impl;
   iface->get_audio_streams = clutter_gst_player_get_audio_streams_impl;
   iface->get_audio_stream = clutter_gst_player_get_audio_stream_impl;
   iface->set_audio_stream = clutter_gst_player_set_audio_stream_impl;
@@ -2722,6 +2775,86 @@ clutter_gst_player_get_buffer_fill (ClutterGstPlayer *player)
   return retval;
 }
 
+/*
+ * clutter_gst_player_get_buffer_size:
+ * @player: a #ClutterGstPlayer
+ *
+ * Retrieves the buffer size when buffering network streams.
+ *
+ * Return value: The buffer size
+ */
+gint
+clutter_gst_player_get_buffer_size (ClutterGstPlayer *player)
+{
+  ClutterGstPlayerIface *iface;
+
+  g_return_val_if_fail (CLUTTER_GST_IS_PLAYER (player), -1);
+
+  iface = CLUTTER_GST_PLAYER_GET_INTERFACE (player);
+
+  return iface->get_buffer_size (player);
+}
+
+/**
+ * clutter_gst_player_set_buffer_size:
+ * @player: a #ClutterGstPlayer
+ * @size: The new size
+ *
+ * Sets the buffer size to be used when buffering network streams.
+ */
+void
+clutter_gst_player_set_buffer_size (ClutterGstPlayer *player,
+                                    gint              size)
+{
+  ClutterGstPlayerIface *iface;
+
+  g_return_if_fail (CLUTTER_GST_IS_PLAYER (player));
+
+  iface = CLUTTER_GST_PLAYER_GET_INTERFACE (player);
+
+  iface->set_buffer_size (player, size);
+}
+
+/**
+ * clutter_gst_player_get_buffer_duration:
+ * @player: a #ClutterGstPlayer
+ *
+ * Retrieves the buffer duration when buffering network streams.
+ *
+ * Return value: The buffer duration
+ */
+gint64
+clutter_gst_player_get_buffer_duration (ClutterGstPlayer *player)
+{
+  ClutterGstPlayerIface *iface;
+
+  g_return_val_if_fail (CLUTTER_GST_IS_PLAYER (player), -1);
+
+  iface = CLUTTER_GST_PLAYER_GET_INTERFACE (player);
+
+  return iface->get_buffer_duration (player);
+}
+
+/**
+ * clutter_gst_player_set_buffer_duration:
+ * @player: a #ClutterGstPlayer
+ * @duration: The new duration
+ *
+ * Sets the buffer duration to be used when buffering network streams.
+ */
+void
+clutter_gst_player_set_buffer_duration (ClutterGstPlayer *player,
+                                        gint64            duration)
+{
+  ClutterGstPlayerIface *iface;
+
+  g_return_if_fail (CLUTTER_GST_IS_PLAYER (player));
+
+  iface = CLUTTER_GST_PLAYER_GET_INTERFACE (player);
+
+  iface->set_buffer_duration (player, duration);
+}
+
 /**
  * clutter_gst_player_set_audio_volume:
  * @player: a #ClutterGstPlayer
diff --git a/clutter-gst/clutter-gst-player.h b/clutter-gst/clutter-gst-player.h
index 1ab9ff1..012210f 100644
--- a/clutter-gst/clutter-gst-player.h
+++ b/clutter-gst/clutter-gst-player.h
@@ -116,10 +116,14 @@ struct _ClutterGstPlayerIface
 
   gboolean (*get_in_seek) (ClutterGstPlayer *player);
 
-  void (* _iface_reserved16) (void);
-  void (* _iface_reserved17) (void);
-  void (* _iface_reserved18) (void);
-  void (* _iface_reserved19) (void);
+  gint   (* get_buffer_size) (ClutterGstPlayer *player);
+  void   (* set_buffer_size) (ClutterGstPlayer *player,
+                              gint              size);
+
+  gint64 (* get_buffer_duration) (ClutterGstPlayer *player);
+  void   (* set_buffer_duration) (ClutterGstPlayer *player,
+                                  gint64            duration);
+
   void (* _iface_reserved20) (void);
   void (* _iface_reserved21) (void);
   void (* _iface_reserved22) (void);
@@ -186,6 +190,12 @@ ClutterGstBufferingMode   clutter_gst_player_get_buffering_mode  (ClutterGstPlay
 void                      clutter_gst_player_set_buffering_mode  (ClutterGstPlayer        *player,
                                                                   ClutterGstBufferingMode  mode);
 gdouble                   clutter_gst_player_get_buffer_fill     (ClutterGstPlayer        *player);
+gint                      clutter_gst_player_get_buffer_size     (ClutterGstPlayer        *player);
+void                      clutter_gst_player_set_buffer_size     (ClutterGstPlayer        *player,
+                                                                  gint                     size);
+gint64                    clutter_gst_player_get_buffer_duration (ClutterGstPlayer        *player);
+void                      clutter_gst_player_set_buffer_duration (ClutterGstPlayer        *player,
+                                                                  gint64                   duration);
 
 void                      clutter_gst_player_set_audio_volume    (ClutterGstPlayer        *player,
                                                                   gdouble                  volume);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]