selector: merge the tags

Merge the tags received on the input-selector sinkpads instead of only keeping
the last one we saw.
This commit is contained in:
Wim Taymans 2009-03-24 15:23:03 +01:00
parent c28c21d06f
commit 6b2c55e254

View file

@ -402,16 +402,18 @@ gst_selector_pad_event (GstPad * pad, GstEvent * event)
}
case GST_EVENT_TAG:
{
GstTagList *tags;
GstTagList *tags, *oldtags, *newtags;
gst_event_parse_tag (event, &tags);
GST_OBJECT_LOCK (selpad);
if (selpad->tags)
gst_tag_list_free (selpad->tags);
gst_event_parse_tag (event, &tags);
if (tags)
tags = gst_tag_list_copy (tags);
selpad->tags = tags;
GST_DEBUG_OBJECT (pad, "received tags %" GST_PTR_FORMAT, selpad->tags);
oldtags = selpad->tags;
newtags = gst_tag_list_merge (oldtags, tags, GST_TAG_MERGE_REPLACE);
selpad->tags = newtags;
if (oldtags)
gst_tag_list_free (oldtags);
GST_DEBUG_OBJECT (pad, "received tags %" GST_PTR_FORMAT, newtags);
GST_OBJECT_UNLOCK (selpad);
break;
}