gst/qtdemux/qtdemux.c: Also shove tags on kid pads.
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>
Mon, 10 Jan 2005 16:24:14 +0000 (16:24 +0000)
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>
Mon, 10 Jan 2005 16:24:14 +0000 (16:24 +0000)
Original commit message from CVS:
* gst/qtdemux/qtdemux.c: (qtdemux_parse_tree):
Also shove tags on kid pads.

ChangeLog
gst/qtdemux/qtdemux.c

index 7ed9e16..78ccdcc 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2005-01-10  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
 
+       * gst/qtdemux/qtdemux.c: (qtdemux_parse_tree):
+         Also shove tags on kid pads.
+
+2005-01-10  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
        * gst-libs/gst/riff/riff-read.c: (gst_riff_read_use_event):
          Don't bail on unknown events.
        * gst/audioscale/gstaudioscale.c: (gst_audioscale_chain):
index bd1254a..22cb1fc 100644 (file)
@@ -1860,19 +1860,6 @@ qtdemux_parse_tree (GstQTDemux * qtdemux)
   GNode *trak;
   GNode *udta;
 
-  udta = qtdemux_tree_get_child_by_type (qtdemux->moov_node, FOURCC_udta);
-  if (udta) {
-    qtdemux_parse_udta (qtdemux, udta);
-
-    if (qtdemux->tag_list) {
-      GST_DEBUG ("calling gst_element_found_tags with %s\n",
-          gst_structure_to_string (qtdemux->tag_list));
-      gst_element_found_tags (GST_ELEMENT (qtdemux), qtdemux->tag_list);
-    }
-  } else {
-    GST_LOG ("No udta node found.");
-  }
-
   mvhd = qtdemux_tree_get_child_by_type (qtdemux->moov_node, FOURCC_mvhd);
   if (mvhd == NULL) {
     GST_LOG ("No mvhd node found.");
@@ -1891,10 +1878,30 @@ qtdemux_parse_tree (GstQTDemux * qtdemux)
 /*  trak = qtdemux_tree_get_sibling_by_type(trak, FOURCC_trak);
   if(trak)qtdemux_parse_trak(qtdemux, trak);*/
 
+  /* kid pads */
   while ((trak = qtdemux_tree_get_sibling_by_type (trak, FOURCC_trak)) != NULL)
     qtdemux_parse_trak (qtdemux, trak);
-
   gst_element_no_more_pads (GST_ELEMENT (qtdemux));
+
+  /* tags */
+  udta = qtdemux_tree_get_child_by_type (qtdemux->moov_node, FOURCC_udta);
+  if (udta) {
+    qtdemux_parse_udta (qtdemux, udta);
+
+    if (qtdemux->tag_list) {
+      GstEvent *event;
+      gchar *t;
+
+      event = gst_event_new_tag (gst_tag_list_copy (qtdemux->tag_list));
+      gst_pad_event_default (qtdemux->sinkpad, event);
+      t = gst_structure_to_string (qtdemux->tag_list);
+      GST_DEBUG ("calling gst_element_found_tags with %s", t);
+      g_free (t);
+      gst_element_found_tags (GST_ELEMENT (qtdemux), qtdemux->tag_list);
+    }
+  } else {
+    GST_LOG ("No udta node found.");
+  }
 }
 
 static void