mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-11 18:05:37 +00:00
gst/flv/gstflvdemux.*: If our index was created by the element and not provided from the outside we should destroy it...
Original commit message from CVS: * gst/flv/gstflvdemux.c: (gst_flv_demux_change_state), (gst_flv_demux_set_index), (gst_flv_demux_init): * gst/flv/gstflvdemux.h: If our index was created by the element and not provided from the outside we should destroy it when starting a new stream to get all old entries removed.
This commit is contained in:
parent
eae8170d94
commit
8877f3590d
3 changed files with 22 additions and 0 deletions
|
@ -1,3 +1,12 @@
|
|||
2008-10-27 Sebastian Dröge <sebastian.droege@collabora.co.uk>
|
||||
|
||||
* gst/flv/gstflvdemux.c: (gst_flv_demux_change_state),
|
||||
(gst_flv_demux_set_index), (gst_flv_demux_init):
|
||||
* gst/flv/gstflvdemux.h:
|
||||
If our index was created by the element and not provided from the
|
||||
outside we should destroy it when starting a new stream to get
|
||||
all old entries removed.
|
||||
|
||||
2008-10-27 Sebastian Dröge <sebastian.droege@collabora.co.uk>
|
||||
|
||||
* gst/flv/gstflvdemux.c: (gst_flv_demux_pull_range):
|
||||
|
|
|
@ -1064,6 +1064,14 @@ gst_flv_demux_change_state (GstElement * element, GstStateChange transition)
|
|||
|
||||
switch (transition) {
|
||||
case GST_STATE_CHANGE_READY_TO_PAUSED:
|
||||
/* If this is our own index destroy it as the
|
||||
* old entries might be wrong for the new stream */
|
||||
if (demux->own_index) {
|
||||
gst_object_unref (demux->index);
|
||||
demux->index = NULL;
|
||||
demux->own_index = FALSE;
|
||||
}
|
||||
|
||||
/* If no index was created, generate one */
|
||||
if (G_UNLIKELY (!demux->index)) {
|
||||
GST_DEBUG_OBJECT (demux, "no index provided creating our own");
|
||||
|
@ -1072,6 +1080,7 @@ gst_flv_demux_change_state (GstElement * element, GstStateChange transition)
|
|||
|
||||
gst_index_get_writer_id (demux->index, GST_OBJECT (demux),
|
||||
&demux->index_id);
|
||||
demux->own_index = TRUE;
|
||||
}
|
||||
gst_flv_demux_cleanup (demux);
|
||||
break;
|
||||
|
@ -1106,6 +1115,7 @@ gst_flv_demux_set_index (GstElement * element, GstIndex * index)
|
|||
GST_OBJECT_UNLOCK (demux);
|
||||
|
||||
gst_index_get_writer_id (index, GST_OBJECT (element), &demux->index_id);
|
||||
demux->own_index = FALSE;
|
||||
}
|
||||
|
||||
static GstIndex *
|
||||
|
@ -1249,6 +1259,8 @@ gst_flv_demux_init (GstFLVDemux * demux, GstFLVDemuxClass * g_class)
|
|||
demux->taglist = gst_tag_list_new ();
|
||||
gst_segment_init (demux->segment, GST_FORMAT_TIME);
|
||||
|
||||
demux->own_index = FALSE;
|
||||
|
||||
gst_flv_demux_cleanup (demux);
|
||||
}
|
||||
|
||||
|
|
|
@ -59,6 +59,7 @@ struct _GstFLVDemux
|
|||
|
||||
GstIndex *index;
|
||||
gint index_id;
|
||||
gboolean own_index;
|
||||
|
||||
GArray * times;
|
||||
GArray * filepositions;
|
||||
|
|
Loading…
Reference in a new issue