From 40325be3a491275eb267c07c8151a173a76c749f Mon Sep 17 00:00:00 2001 From: Luciana Fujii Pontello Date: Mon, 29 Oct 2012 13:24:25 +0000 Subject: [PATCH] hlssink: reset when going to NULL state https://bugzilla.gnome.org/show_bug.cgi?id=687133 --- gst/hls/gsthlssink.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/gst/hls/gsthlssink.c b/gst/hls/gsthlssink.c index 8d33c335c7..02b134e0ef 100644 --- a/gst/hls/gsthlssink.c +++ b/gst/hls/gsthlssink.c @@ -151,6 +151,16 @@ gst_hls_sink_class_init (GstHlsSinkClass * klass) G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); } +static void +gst_hls_sink_reset (GstHlsSink * sink) +{ + sink->index = 0; + sink->multifilesink = NULL; + sink->last_stream_time = 0; + + sink->playlist = gst_m3u8_playlist_new (6, 5, FALSE); +} + static void gst_hls_sink_init (GstHlsSink * sink, GstHlsSinkClass * sink_class) { @@ -161,17 +171,14 @@ gst_hls_sink_init (GstHlsSink * sink, GstHlsSinkClass * sink_class) gst_pad_add_event_probe (sink->ghostpad, G_CALLBACK (gst_hls_sink_ghost_event_probe), sink); - sink->index = 0; - sink->multifilesink = NULL; - sink->last_stream_time = 0; sink->location = g_strdup (DEFAULT_LOCATION); sink->playlist_location = g_strdup (DEFAULT_PLAYLIST_LOCATION); sink->playlist_root = g_strdup (DEFAULT_PLAYLIST_ROOT); - sink->playlist = gst_m3u8_playlist_new (6, 5, FALSE); sink->max_files = DEFAULT_MAX_FILES; sink->target_duration = DEFAULT_TARGET_DURATION; sink->count = 0; sink->timeout_id = 0; + gst_hls_sink_reset (sink); } static gboolean @@ -320,6 +327,7 @@ gst_hls_sink_change_state (GstElement * element, GstStateChange trans) sink->count = 0; break; case GST_STATE_CHANGE_READY_TO_NULL: + gst_hls_sink_reset (sink); break; default: break;