hlssink2: Respect requested max-files property for decision on removing old fragments...
authorSeungha Yang <seungha.yang@navercorp.com>
Mon, 7 Oct 2019 05:21:58 +0000 (14:21 +0900)
committerSeungha Yang <seungha.yang@navercorp.com>
Mon, 7 Oct 2019 05:29:57 +0000 (14:29 +0900)
hlssink2 defined "max-files" property to decide the maximum number
of fragments which should be stored in disk. But we've not used
the property. Instead, the size has been maintained by "playlist-length".
Since "max-files" and "playlist-length" have different meaning,
the decision should be done by "max-files" property.

For example, an user might want expose only 3 fragments via playlist
but might want to keep more files than 3 in disk.

ext/hls/gsthlssink2.c

index 275e41c..f4d6b0a 100644 (file)
@@ -295,11 +295,12 @@ gst_hls_sink2_handle_message (GstBin * bin, GstMessage * message)
           g_queue_push_tail (&sink->old_locations,
               g_strdup (sink->current_location));
 
-          while (g_queue_get_length (&sink->old_locations) >
-              g_queue_get_length (sink->playlist->entries)) {
-            gchar *old_location = g_queue_pop_head (&sink->old_locations);
-            g_remove (old_location);
-            g_free (old_location);
+          if (sink->max_files > 0) {
+            while (g_queue_get_length (&sink->old_locations) > sink->max_files) {
+              gchar *old_location = g_queue_pop_head (&sink->old_locations);
+              g_remove (old_location);
+              g_free (old_location);
+            }
           }
         }
       }