diff --git a/ext/hls/gsthlsdemux.c b/ext/hls/gsthlsdemux.c index d8578e7ba5..1535815647 100644 --- a/ext/hls/gsthlsdemux.c +++ b/ext/hls/gsthlsdemux.c @@ -436,12 +436,18 @@ gst_hls_demux_process_manifest (GstAdaptiveDemux * demux, GstBuffer * buf) if (gst_m3u8_client_has_variant_playlist (hlsdemux->client)) { GstM3U8 *child = NULL; GError *err = NULL; - GList *current_variant = NULL; - current_variant = - gst_m3u8_client_get_playlist_for_bitrate (hlsdemux->client, - demux->connection_speed); - child = GST_M3U8 (current_variant->data); + /* TODO seems like something that could be simplified */ + if (demux->connection_speed == 0) { + GST_M3U8_CLIENT_LOCK (hlsdemux->client); + child = hlsdemux->client->main->current_variant->data; + GST_M3U8_CLIENT_UNLOCK (hlsdemux->client); + } else { + GList *tmp = gst_m3u8_client_get_playlist_for_bitrate (hlsdemux->client, + demux->connection_speed); + + child = GST_M3U8 (tmp->data); + } gst_m3u8_client_set_current (hlsdemux->client, child); if (!gst_hls_demux_update_playlist (hlsdemux, FALSE, &err)) { diff --git a/ext/hls/m3u8.c b/ext/hls/m3u8.c index 3f3c278e37..4b6e362897 100755 --- a/ext/hls/m3u8.c +++ b/ext/hls/m3u8.c @@ -1293,11 +1293,6 @@ gst_m3u8_client_get_playlist_for_bitrate (GstM3U8Client * client, guint bitrate) GST_M3U8_CLIENT_LOCK (client); current_variant = client->main->current_variant; - if (bitrate == 0) { - GST_M3U8_CLIENT_UNLOCK (client); - return current_variant; - } - /* Go to the highest possible bandwidth allowed */ while (GST_M3U8 (current_variant->data)->bandwidth <= bitrate) { list = g_list_next (current_variant);