hlsdemux: Simplify logic in process_manifest
authorJimmy Ohn <yongjin.ohn@lge.com>
Wed, 13 May 2015 17:11:50 +0000 (02:11 +0900)
committerSebastian Dröge <sebastian@centricular.com>
Mon, 18 May 2015 07:52:35 +0000 (10:52 +0300)
Simplify logic in process_manifest and remove a TODO item.

https://bugzilla.gnome.org/show_bug.cgi?id=749328

ext/hls/gsthlsdemux.c
ext/hls/m3u8.c

index 55138157f1b3a7bd8a23e3feb00a1a07e3561c52..85a9a91e430548f6d940ea7c7ff0146e72110a57 100644 (file)
@@ -438,18 +438,12 @@ 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;
 
-    /* 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);
-    }
+    current_variant =
+        gst_m3u8_client_get_playlist_for_bitrate (hlsdemux->client,
+        demux->connection_speed);
+    child = GST_M3U8 (current_variant->data);
 
     gst_m3u8_client_set_current (hlsdemux->client, child);
     if (!gst_hls_demux_update_playlist (hlsdemux, FALSE, &err)) {
index 0d1f892deddd1b1e49c1ff129dd7a025fbf90b0e..bf33793b2e5dd52f932b7c97ee436ee7ee860b5c 100755 (executable)
@@ -1257,6 +1257,11 @@ 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);