summaryrefslogtreecommitdiffstats
path: root/gst
diff options
context:
space:
mode:
Diffstat (limited to 'gst')
-rw-r--r--gst/qtdemux/qtdemux.c35
1 files changed, 21 insertions, 14 deletions
diff --git a/gst/qtdemux/qtdemux.c b/gst/qtdemux/qtdemux.c
index bd1254ac..22cb1fc9 100644
--- a/gst/qtdemux/qtdemux.c
+++ b/gst/qtdemux/qtdemux.c
@@ -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