diff --git a/ext/smoothstreaming/gstmssmanifest.c b/ext/smoothstreaming/gstmssmanifest.c index 0ab4096e3d..3a9af69f92 100644 --- a/ext/smoothstreaming/gstmssmanifest.c +++ b/ext/smoothstreaming/gstmssmanifest.c @@ -1223,7 +1223,10 @@ gst_mss_manifest_seek (GstMssManifest * manifest, gboolean forward, GSList *iter; for (iter = manifest->streams; iter; iter = g_slist_next (iter)) { - gst_mss_stream_seek (iter->data, forward, 0, time, NULL); + GstMssStream *stream = iter->data; + + gst_mss_manifest_live_adapter_clear (stream); + gst_mss_stream_seek (stream, forward, 0, time, NULL); } } @@ -1612,6 +1615,13 @@ gst_mss_manifest_live_adapter_take_buffer (GstMssStream * stream, gsize nbytes) return gst_adapter_take_buffer (stream->live_adapter, nbytes); } +void +gst_mss_manifest_live_adapter_clear (GstMssStream * stream) +{ + if (stream->live_adapter) + gst_adapter_clear (stream->live_adapter); +} + gboolean gst_mss_stream_fragment_parsing_needed (GstMssStream * stream) { diff --git a/ext/smoothstreaming/gstmssmanifest.h b/ext/smoothstreaming/gstmssmanifest.h index 03b066ae5e..0db6326210 100644 --- a/ext/smoothstreaming/gstmssmanifest.h +++ b/ext/smoothstreaming/gstmssmanifest.h @@ -77,6 +77,7 @@ const gchar * gst_mss_stream_type_name (GstMssStreamType streamtype); void gst_mss_manifest_live_adapter_push(GstMssStream * stream, GstBuffer * buffer); gsize gst_mss_manifest_live_adapter_available(GstMssStream * stream); GstBuffer * gst_mss_manifest_live_adapter_take_buffer(GstMssStream * stream, gsize nbytes); +void gst_mss_manifest_live_adapter_clear (GstMssStream * stream); gboolean gst_mss_stream_fragment_parsing_needed(GstMssStream * stream); void gst_mss_stream_parse_fragment(GstMssStream * stream, GstBuffer * buffer);