From 6b2c55e254a27c0caca19e00f7c1afa8047dbd69 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 24 Mar 2009 15:23:03 +0100 Subject: selector: merge the tags Merge the tags received on the input-selector sinkpads instead of only keeping the last one we saw. --- gst/selector/gstinputselector.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/gst/selector/gstinputselector.c b/gst/selector/gstinputselector.c index ec1ae542..7a458b0f 100644 --- a/gst/selector/gstinputselector.c +++ b/gst/selector/gstinputselector.c @@ -402,16 +402,18 @@ gst_selector_pad_event (GstPad * pad, GstEvent * event) } case GST_EVENT_TAG: { - GstTagList *tags; + GstTagList *tags, *oldtags, *newtags; - 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); + + GST_OBJECT_LOCK (selpad); + 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; } -- cgit v1.2.1