[MOVED FROM BAD 34/57] 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:
Sebastian Dröge 2008-10-27 09:14:45 +00:00 committed by Sebastian Dröge
parent 1b235bb8b0
commit 5dd573262d
2 changed files with 13 additions and 0 deletions

View file

@ -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);
}

View file

@ -59,6 +59,7 @@ struct _GstFLVDemux
GstIndex *index;
gint index_id;
gboolean own_index;
GArray * times;
GArray * filepositions;