summaryrefslogtreecommitdiffstats
path: root/gst/avi/gstavidemux.c
diff options
context:
space:
mode:
authorEdward Hervey <bilboed@bilboed.com>2006-07-10 20:11:34 +0000
committerEdward Hervey <bilboed@bilboed.com>2006-07-10 20:11:34 +0000
commit7c8f0009ccff653f2c08dd1b284d5889c29094ca (patch)
tree5b2f32ef41e2ba4daa695133c87237448321b1f2 /gst/avi/gstavidemux.c
parentf08deb4345e4509f8e25cb9c3f10713246db6e36 (diff)
gst/avi/gstavidemux.*: Don't push tag events found by gst_riff_parse_info() before outputting
Original commit message from CVS: * gst/avi/gstavidemux.c: (gst_avi_demux_reset), (gst_avi_demux_stream_header), (push_tag_lists): * gst/avi/gstavidemux.h: Don't push tag events found by gst_riff_parse_info() before outputting GST_EVENT_NEWSEGMENT.
Diffstat (limited to 'gst/avi/gstavidemux.c')
-rw-r--r--gst/avi/gstavidemux.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c
index 886a6b20..37800daf 100644
--- a/gst/avi/gstavidemux.c
+++ b/gst/avi/gstavidemux.c
@@ -232,6 +232,10 @@ gst_avi_demux_reset (GstAviDemux * avi)
gst_event_unref (avi->seek_event);
avi->seek_event = NULL;
+ if (avi->globaltags)
+ gst_tag_list_free (avi->globaltags);
+ avi->globaltags = NULL;
+
avi->got_tags = FALSE;
gst_segment_init (&avi->segment, GST_FORMAT_TIME);
@@ -2219,13 +2223,8 @@ gst_avi_demux_stream_header (GstAviDemux * avi)
&avi->offset, &tag, &buf)) != GST_FLOW_OK)
return res;
else {
- GstTagList *t;
-
sub = gst_buffer_create_sub (buf, 4, GST_BUFFER_SIZE (buf) - 4);
- gst_riff_parse_info (GST_ELEMENT (avi), sub, &t);
- if (t) {
- gst_element_found_tags (GST_ELEMENT (avi), t);
- }
+ gst_riff_parse_info (GST_ELEMENT (avi), sub, &avi->globaltags);
if (sub) {
gst_buffer_unref (sub);
sub = NULL;
@@ -2603,12 +2602,18 @@ push_tag_lists (GstAviDemux * avi)
if (!avi->got_tags)
return;
+ GST_DEBUG_OBJECT (avi, "Pushing pending tag lists");
+
for (i = 0; i < avi->num_streams; i++)
if (avi->stream[i].pad && avi->stream[i].taglist) {
gst_element_found_tags_for_pad (GST_ELEMENT (avi), avi->stream[i].pad,
avi->stream[i].taglist);
avi->stream[i].taglist = NULL;
}
+ if (avi->globaltags) {
+ gst_element_found_tags (GST_ELEMENT (avi), avi->globaltags);
+ avi->globaltags = NULL;
+ }
avi->got_tags = FALSE;
}