From 581d8c0b8d0c3d7d4261282c8b1555e43deecb6b Mon Sep 17 00:00:00 2001 From: Thiago Santos Date: Fri, 5 Jun 2015 09:15:34 -0300 Subject: [PATCH] Revert "hlsdemux: Simplify logic in process_manifest" This reverts commit 4ca3a22b6b33ad8be4383063e76f79c4d346535d. The connection-speed=0 is used as a special value in the property of hlsdemux to mean 'automatic' selection, m3u8.c doesn't need to know about that as it should be as simple as possible. So this patch hides this automatic selection documented in hlsdemux into m3u8 logic and I think the gets harder to understand the code. It also makes the hlsdemux unit tests work again https://bugzilla.gnome.org/show_bug.cgi?id=749328 --- ext/hls/gsthlsdemux.c | 16 +++++++++++----- ext/hls/m3u8.c | 5 ----- 2 files changed, 11 insertions(+), 10 deletions(-) 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);