diff options
author | Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk> | 2012-09-13 12:41:26 -0300 |
---|---|---|
committer | Lionel Landwerlin <llandwerlin@gmail.com> | 2013-03-18 16:24:19 +0000 |
commit | 4b3284ce58cb7cea9a5ab252546eedb4c8bca4e5 (patch) | |
tree | 7e0cf7c5eb139cf0e3f7499ecb27fdbac6f478b3 /clutter-gst/clutter-gst-player.c | |
parent | 8d8f0a7512903923e2eb715d9598a636d51ca8b1 (diff) | |
download | clutter-gst-4b3284ce58cb7cea9a5ab252546eedb4c8bca4e5.tar.gz |
ClutterGstPlayer: Handle buffering for live media.
Diffstat (limited to 'clutter-gst/clutter-gst-player.c')
-rw-r--r-- | 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; |