[clutter-gst] ClutterGstPlayer: Handle buffering for live media.
- From: Lionel Landwerlin <llandwerlin src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [clutter-gst] ClutterGstPlayer: Handle buffering for live media.
- Date: Mon, 18 Mar 2013 23:36:34 +0000 (UTC)
commit 4b3284ce58cb7cea9a5ab252546eedb4c8bca4e5
Author: Andre Moreira Magalhaes (andrunko) <andre magalhaes collabora co uk>
Date: Thu Sep 13 12:41:26 2012 -0300
ClutterGstPlayer: Handle buffering for live media.
clutter-gst/clutter-gst-player.c | 36 ++++++++++++++++++++----------------
1 files changed, 20 insertions(+), 16 deletions(-)
---
diff --git a/clutter-gst/clutter-gst-player.c b/clutter-gst/clutter-gst-player.c
index 22358d5..0b5dc81 100644
--- a/clutter-gst/clutter-gst-player.c
+++ b/clutter-gst/clutter-gst-player.c
@@ -1003,31 +1003,36 @@ bus_message_buffering_cb (GstBus *bus,
switch (mode)
{
+ case GST_BUFFERING_LIVE:
case GST_BUFFERING_STREAM:
gst_message_parse_buffering (message, &buffer_percent);
priv->buffer_fill = CLAMP ((gdouble) buffer_percent / 100.0, 0.0, 1.0);
CLUTTER_GST_NOTE (BUFFERING, "buffer-fill: %.02f", priv->buffer_fill);
- /* The playbin documentation says that we need to pause the pipeline
- * when there's not enough data yet. We try to limit the calls to
- * gst_element_set_state() */
- gst_element_get_state (priv->pipeline, ¤t_state, NULL, 0);
-
- if (priv->buffer_fill < 1.0)
+ /* no state management needed for live pipelines */
+ if (!priv->is_live)
{
- if (current_state != GST_STATE_PAUSED)
+ /* The playbin documentation says that we need to pause the pipeline
+ * when there's not enough data yet. We try to limit the calls to
+ * gst_element_set_state() */
+ gst_element_get_state (priv->pipeline, ¤t_state, NULL, 0);
+
+ if (priv->buffer_fill < 1.0)
{
- CLUTTER_GST_NOTE (BUFFERING, "pausing the pipeline");
- gst_element_set_state (priv->pipeline, GST_STATE_PAUSED);
+ if (current_state != GST_STATE_PAUSED)
+ {
+ CLUTTER_GST_NOTE (BUFFERING, "pausing the pipeline");
+ gst_element_set_state (priv->pipeline, GST_STATE_PAUSED);
+ }
}
- }
- else
- {
- if (current_state != priv->target_state)
+ else
{
- CLUTTER_GST_NOTE (BUFFERING, "restoring the pipeline");
- gst_element_set_state (priv->pipeline, priv->target_state);
+ if (current_state != priv->target_state)
+ {
+ CLUTTER_GST_NOTE (BUFFERING, "restoring the pipeline");
+ gst_element_set_state (priv->pipeline, priv->target_state);
+ }
}
}
@@ -1060,7 +1065,6 @@ bus_message_buffering_cb (GstBus *bus,
break;
case GST_BUFFERING_TIMESHIFT:
- case GST_BUFFERING_LIVE:
default:
g_warning ("Buffering mode %d not handled", mode);
break;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]