summaryrefslogtreecommitdiff
path: root/gst
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim.muller@collabora.co.uk>2012-05-26 11:37:49 +0100
committerTim-Philipp Müller <tim.muller@collabora.co.uk>2012-05-26 11:44:03 +0100
commit61dcbaab634560b9aeea0375ffd8c810c77446ee (patch)
tree53ecd916bc14f7b85ed8a9eb8f2ff84b5c38c1a5 /gst
parent97c2498bbec1ef98019e5c1298c17fbd4bdb7928 (diff)
downloadgstreamer-61dcbaab634560b9aeea0375ffd8c810c77446ee.tar.gz
message, event: update for tag lists not being structures any more
Diffstat (limited to 'gst')
-rw-r--r--gst/gstevent.c16
-rw-r--r--gst/gstmessage.c22
-rw-r--r--gst/gstquark.c2
-rw-r--r--gst/gstquark.h4
4 files changed, 29 insertions, 15 deletions
diff --git a/gst/gstevent.c b/gst/gstevent.c
index a6b092e326..d918d7b8cc 100644
--- a/gst/gstevent.c
+++ b/gst/gstevent.c
@@ -1002,9 +1002,16 @@ gst_event_copy_segment (GstEvent * event, GstSegment * segment)
GstEvent *
gst_event_new_tag (GstTagList * taglist)
{
+ GstStructure *s;
+ GValue val = G_VALUE_INIT;
+
g_return_val_if_fail (taglist != NULL, NULL);
- return gst_event_new_custom (GST_EVENT_TAG, (GstStructure *) taglist);
+ s = gst_structure_new_id_empty (GST_QUARK (EVENT_TAG));
+ g_value_init (&val, GST_TYPE_TAG_LIST);
+ g_value_take_boxed (&val, taglist);
+ gst_structure_id_take_value (s, GST_QUARK (TAGLIST), &val);
+ return gst_event_new_custom (GST_EVENT_TAG, s);
}
/**
@@ -1020,11 +1027,16 @@ gst_event_new_tag (GstTagList * taglist)
void
gst_event_parse_tag (GstEvent * event, GstTagList ** taglist)
{
+ const GValue *val;
+
g_return_if_fail (GST_IS_EVENT (event));
g_return_if_fail (GST_EVENT_TYPE (event) == GST_EVENT_TAG);
+ val = gst_structure_id_get_value (GST_EVENT_STRUCTURE (event),
+ GST_QUARK (TAGLIST));
+
if (taglist)
- *taglist = (GstTagList *) GST_EVENT_STRUCTURE (event);
+ *taglist = (GstTagList *) g_value_get_boxed (val);
}
/* buffersize event */
diff --git a/gst/gstmessage.c b/gst/gstmessage.c
index 6b8b2c037c..a4a54380f8 100644
--- a/gst/gstmessage.c
+++ b/gst/gstmessage.c
@@ -480,13 +480,17 @@ gst_message_new_info (GstObject * src, GError * error, const gchar * debug)
GstMessage *
gst_message_new_tag (GstObject * src, GstTagList * tag_list)
{
+ GstStructure *s;
GstMessage *message;
+ GValue val = G_VALUE_INIT;
- g_return_val_if_fail (GST_IS_STRUCTURE (tag_list), NULL);
-
- message =
- gst_message_new_custom (GST_MESSAGE_TAG, src, (GstStructure *) tag_list);
+ g_return_val_if_fail (GST_IS_TAG_LIST (tag_list), NULL);
+ s = gst_structure_new_id_empty (GST_QUARK (MESSAGE_TAG));
+ g_value_init (&val, GST_TYPE_TAG_LIST);
+ g_value_take_boxed (&val, tag_list);
+ gst_structure_id_take_value (s, GST_QUARK (TAGLIST), &val);
+ message = gst_message_new_custom (GST_MESSAGE_TAG, src, s);
return message;
}
@@ -1017,16 +1021,12 @@ gst_message_has_name (GstMessage * message, const gchar * name)
void
gst_message_parse_tag (GstMessage * message, GstTagList ** tag_list)
{
- GstStructure *ret;
-
g_return_if_fail (GST_IS_MESSAGE (message));
g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_TAG);
g_return_if_fail (tag_list != NULL);
- ret = gst_structure_copy (GST_MESSAGE_STRUCTURE (message));
- gst_structure_remove_field (ret, "source-pad");
-
- *tag_list = (GstTagList *) ret;
+ gst_structure_id_get (GST_MESSAGE_STRUCTURE (message),
+ GST_QUARK (TAGLIST), GST_TYPE_TAG_LIST, tag_list, NULL);
}
/**
@@ -2210,7 +2210,7 @@ gst_message_new_toc (GstObject * src, GstToc * toc, gboolean updated)
* @toc: (out): return location for the TOC.
* @updated: (out): return location for the updated flag.
*
- * Extract the TOC from the #GstMessage. The TOC returned in the
+ * Extract thef TOC from the #GstMessage. The TOC returned in the
* output argument is a copy; the caller must free it with
* gst_toc_free() when done.
*
diff --git a/gst/gstquark.c b/gst/gstquark.c
index 326607dcbb..2d55fa3273 100644
--- a/gst/gstquark.c
+++ b/gst/gstquark.c
@@ -62,7 +62,7 @@ static const gchar *_quark_strings[] = {
GST_ELEMENT_METADATA_KLASS, GST_ELEMENT_METADATA_DESCRIPTION,
GST_ELEMENT_METADATA_AUTHOR, "toc", "toc-entry", "updated", "extend-uid",
"uid", "tags", "sub-entries", "info", "info-structure",
- "time-structure"
+ "time-structure", "GstMessageTag", "GstEventTag"
};
GQuark _priv_gst_quark_table[GST_QUARK_MAX];
diff --git a/gst/gstquark.h b/gst/gstquark.h
index e7d9ea96af..969ce7920c 100644
--- a/gst/gstquark.h
+++ b/gst/gstquark.h
@@ -181,7 +181,9 @@ typedef enum _GstQuarkId
GST_QUARK_INFO = 152,
GST_QUARK_INFO_STRUCTURE = 153,
GST_QUARK_TIME_STRUCTURE = 154,
- GST_QUARK_MAX = 155
+ GST_QUARK_MESSAGE_TAG = 155,
+ GST_QUARK_EVENT_TAG = 156,
+ GST_QUARK_MAX = 157
} GstQuarkId;
extern GQuark _priv_gst_quark_table[GST_QUARK_MAX];