gstreamer_core/gst/gstmessage.c
branchRCL_3
changeset 30 7e817e7e631c
parent 29 567bb019e3e3
--- a/gstreamer_core/gst/gstmessage.c	Tue Aug 31 15:30:33 2010 +0300
+++ b/gstreamer_core/gst/gstmessage.c	Wed Sep 01 12:16:41 2010 +0100
@@ -57,14 +57,14 @@
 #include "gstmessage.h"
 #include "gsttaglist.h"
 #include "gstutils.h"
-#include "gstquark.h"
 
 #ifdef __SYMBIAN32__
 #include <glib_global.h>
 #endif
 
-#define GST_MESSAGE_SEQNUM(e) ((GstMessage*)e)->abidata.ABI.seqnum
 
+static void gst_message_init (GTypeInstance * instance, gpointer g_class);
+static void gst_message_class_init (gpointer g_class, gpointer class_data);
 static void gst_message_finalize (GstMessage * message);
 static GstMessage *_gst_message_copy (GstMessage * message);
 
@@ -116,8 +116,6 @@
   {GST_MESSAGE_LATENCY, "latency", 0},
   {GST_MESSAGE_ASYNC_START, "async-start", 0},
   {GST_MESSAGE_ASYNC_DONE, "async-done", 0},
-  {GST_MESSAGE_REQUEST_STATE, "request-state", 0},
-  {GST_MESSAGE_STEP_START, "step-start", 0},
   {0, NULL, 0}
 };
 
@@ -168,33 +166,60 @@
   }
   return 0;
 }
+#ifdef __SYMBIAN32__
+EXPORT_C
+#endif
 
-#define _do_init \
-{ \
-  gint i; \
-  \
-  for (i = 0; message_quarks[i].name; i++) { \
-    message_quarks[i].quark = \
-        g_quark_from_static_string (message_quarks[i].name); \
-  } \
+
+GType
+gst_message_get_type (void)
+{
+  static GType _gst_message_type;
+
+  if (G_UNLIKELY (_gst_message_type == 0)) {
+    gint i;
+    static const GTypeInfo message_info = {
+      sizeof (GstMessageClass),
+      NULL,
+      NULL,
+      gst_message_class_init,
+      NULL,
+      NULL,
+      sizeof (GstMessage),
+      0,
+      gst_message_init,
+      NULL
+    };
+
+    _gst_message_type = g_type_register_static (GST_TYPE_MINI_OBJECT,
+        "GstMessage", &message_info, 0);
+
+    for (i = 0; message_quarks[i].name; i++) {
+      message_quarks[i].quark =
+          g_quark_from_static_string (message_quarks[i].name);
+    }
+  }
+  return _gst_message_type;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GstMessage, gst_message, GST_TYPE_MINI_OBJECT,
-    _do_init);
+static void
+gst_message_class_init (gpointer g_class, gpointer class_data)
+{
+  GstMessageClass *message_class = GST_MESSAGE_CLASS (g_class);
 
-static void
-gst_message_class_init (GstMessageClass * klass)
-{
-  parent_class = g_type_class_peek_parent (klass);
+  parent_class = g_type_class_peek_parent (g_class);
 
-  klass->mini_object_class.copy = (GstMiniObjectCopyFunction) _gst_message_copy;
-  klass->mini_object_class.finalize =
+  message_class->mini_object_class.copy =
+      (GstMiniObjectCopyFunction) _gst_message_copy;
+  message_class->mini_object_class.finalize =
       (GstMiniObjectFinalizeFunction) gst_message_finalize;
 }
 
 static void
-gst_message_init (GstMessage * message)
+gst_message_init (GTypeInstance * instance, gpointer g_class)
 {
+  GstMessage *message = GST_MESSAGE (instance);
+
   GST_CAT_LOG (GST_CAT_MESSAGE, "new message %p", message);
   GST_MESSAGE_TIMESTAMP (message) = GST_CLOCK_TIME_NONE;
 }
@@ -222,7 +247,7 @@
     gst_structure_free (message->structure);
   }
 
-/*   GST_MINI_OBJECT_CLASS (parent_class)->finalize (GST_MINI_OBJECT (message)); */
+  GST_MINI_OBJECT_CLASS (parent_class)->finalize (GST_MINI_OBJECT (message));
 }
 
 static GstMessage *
@@ -241,7 +266,6 @@
   GST_MESSAGE_COND (copy) = GST_MESSAGE_COND (message);
   GST_MESSAGE_TYPE (copy) = GST_MESSAGE_TYPE (message);
   GST_MESSAGE_TIMESTAMP (copy) = GST_MESSAGE_TIMESTAMP (message);
-  GST_MESSAGE_SEQNUM (copy) = GST_MESSAGE_SEQNUM (message);
 
   if (GST_MESSAGE_SRC (message)) {
     GST_MESSAGE_SRC (copy) = gst_object_ref (GST_MESSAGE_SRC (message));
@@ -299,74 +323,10 @@
   }
   message->structure = structure;
 
-  GST_MESSAGE_SEQNUM (message) = gst_util_seqnum_next ();
-
   return message;
 }
 
 /**
- * gst_message_get_seqnum:
- * @message: A #GstMessage.
- *
- * Retrieve the sequence number of a message.
- *
- * Messages have ever-incrementing sequence numbers, which may also be set
- * explicitly via gst_message_set_seqnum(). Sequence numbers are typically used
- * to indicate that a message corresponds to some other set of messages or
- * events, for example a SEGMENT_DONE message corresponding to a SEEK event. It
- * is considered good practice to make this correspondence when possible, though
- * it is not required.
- *
- * Note that events and messages share the same sequence number incrementor;
- * two events or messages will never not have the same sequence number unless
- * that correspondence was made explicitly.
- *
- * Returns: The message's sequence number.
- *
- * MT safe.
- *
- * Since: 0.10.22
- */
-#ifdef __SYMBIAN32__
-EXPORT_C
-#endif
-
-guint32
-gst_message_get_seqnum (GstMessage * message)
-{
-  g_return_val_if_fail (GST_IS_MESSAGE (message), -1);
-
-  return GST_MESSAGE_SEQNUM (message);
-}
-
-/**
- * gst_message_set_seqnum:
- * @message: A #GstMessage.
- * @seqnum: A sequence number.
- *
- * Set the sequence number of a message.
- *
- * This function might be called by the creator of a message to indicate that
- * the message relates to other messages or events. See gst_message_get_seqnum()
- * for more information.
- *
- * MT safe.
- *
- * Since: 0.10.22
- */
-#ifdef __SYMBIAN32__
-EXPORT_C
-#endif
-
-void
-gst_message_set_seqnum (GstMessage * message, guint32 seqnum)
-{
-  g_return_if_fail (GST_IS_MESSAGE (message));
-
-  GST_MESSAGE_SEQNUM (message) = seqnum;
-}
-
-/**
  * gst_message_new_eos:
  * @src: The object originating the message.
  *
@@ -396,7 +356,7 @@
  * gst_message_new_error:
  * @src: The object originating the message.
  * @error: The GError for this message.
- * @debug: A debugging string.
+ * @debug: A debugging string for something or other.
  *
  * Create a new error message. The message will copy @error and
  * @debug. This message is posted by element when a fatal event
@@ -412,15 +372,13 @@
 #endif
 
 GstMessage *
-gst_message_new_error (GstObject * src, GError * error, const gchar * debug)
+gst_message_new_error (GstObject * src, GError * error, gchar * debug)
 {
   GstMessage *message;
-  GstStructure *structure;
 
-  structure = gst_structure_id_new (GST_QUARK (MESSAGE_ERROR),
-      GST_QUARK (GERROR), GST_TYPE_G_ERROR, error,
-      GST_QUARK (DEBUG), G_TYPE_STRING, debug, NULL);
-  message = gst_message_new_custom (GST_MESSAGE_ERROR, src, structure);
+  message = gst_message_new_custom (GST_MESSAGE_ERROR, src,
+      gst_structure_new ("GstMessageError", "gerror", GST_TYPE_G_ERROR, error,
+          "debug", G_TYPE_STRING, debug, NULL));
 
   return message;
 }
@@ -429,7 +387,7 @@
  * gst_message_new_warning:
  * @src: The object originating the message.
  * @error: The GError for this message.
- * @debug: A debugging string.
+ * @debug: A debugging string for something or other.
  *
  * Create a new warning message. The message will make copies of @error and
  * @debug.
@@ -443,15 +401,13 @@
 #endif
 
 GstMessage *
-gst_message_new_warning (GstObject * src, GError * error, const gchar * debug)
+gst_message_new_warning (GstObject * src, GError * error, gchar * debug)
 {
   GstMessage *message;
-  GstStructure *structure;
 
-  structure = gst_structure_id_new (GST_QUARK (MESSAGE_WARNING),
-      GST_QUARK (GERROR), GST_TYPE_G_ERROR, error,
-      GST_QUARK (DEBUG), G_TYPE_STRING, debug, NULL);
-  message = gst_message_new_custom (GST_MESSAGE_WARNING, src, structure);
+  message = gst_message_new_custom (GST_MESSAGE_WARNING, src,
+      gst_structure_new ("GstMessageWarning", "gerror", GST_TYPE_G_ERROR, error,
+          "debug", G_TYPE_STRING, debug, NULL));
 
   return message;
 }
@@ -460,31 +416,29 @@
  * gst_message_new_info:
  * @src: The object originating the message.
  * @error: The GError for this message.
- * @debug: A debugging string.
+ * @debug: A debugging string for something or other.
  *
  * Create a new info message. The message will make copies of @error and
  * @debug.
  *
- * MT safe.
- *
  * Returns: The new info message.
  *
  * Since: 0.10.12
+ *
+ * MT safe.
  */
 #ifdef __SYMBIAN32__
 EXPORT_C
 #endif
 
 GstMessage *
-gst_message_new_info (GstObject * src, GError * error, const gchar * debug)
+gst_message_new_info (GstObject * src, GError * error, gchar * debug)
 {
   GstMessage *message;
-  GstStructure *structure;
 
-  structure = gst_structure_id_new (GST_QUARK (MESSAGE_INFO),
-      GST_QUARK (GERROR), GST_TYPE_G_ERROR, error,
-      GST_QUARK (DEBUG), G_TYPE_STRING, debug, NULL);
-  message = gst_message_new_custom (GST_MESSAGE_INFO, src, structure);
+  message = gst_message_new_custom (GST_MESSAGE_INFO, src,
+      gst_structure_new ("GstMessageInfo", "gerror", GST_TYPE_G_ERROR, error,
+          "debug", G_TYPE_STRING, debug, NULL));
 
   return message;
 }
@@ -519,43 +473,6 @@
 }
 
 /**
- * gst_message_new_tag_full:
- * @src: The object originating the message.
- * @pad: The originating pad for the tag.
- * @tag_list: The tag list for the message.
- *
- * Create a new tag message. The message will take ownership of the tag list.
- * The message is posted by elements that discovered a new taglist.
- *
- * MT safe.
- *
- * Returns: The new tag message.
- *
- * Since: 0.10.24
- */
-#ifdef __SYMBIAN32__
-EXPORT_C
-#endif
-
-GstMessage *
-gst_message_new_tag_full (GstObject * src, GstPad * pad, GstTagList * tag_list)
-{
-  GstMessage *message;
-  GstStructure *s;
-
-  g_return_val_if_fail (GST_IS_STRUCTURE (tag_list), NULL);
-  g_return_val_if_fail (pad == NULL || GST_IS_PAD (pad), NULL);
-
-  s = (GstStructure *) tag_list;
-  if (pad)
-    gst_structure_set (s, "source-pad", GST_TYPE_PAD, pad, NULL);
-
-  message = gst_message_new_custom (GST_MESSAGE_TAG, src, s);
-
-  return message;
-}
-
-/**
  * gst_message_new_buffering:
  * @src: The object originating the message.
  * @percent: The buffering percent
@@ -571,11 +488,11 @@
  * message with @percent set to 100, which can happen after the pipeline
  * completed prerolling. 
  *
- * MT safe.
- *
  * Returns: The new buffering message.
  *
  * Since: 0.10.11
+ *
+ * MT safe.
  */
 #ifdef __SYMBIAN32__
 EXPORT_C
@@ -585,18 +502,12 @@
 gst_message_new_buffering (GstObject * src, gint percent)
 {
   GstMessage *message;
-  GstStructure *structure;
 
   g_return_val_if_fail (percent >= 0 && percent <= 100, NULL);
 
-  structure = gst_structure_id_new (GST_QUARK (MESSAGE_BUFFERING),
-      GST_QUARK (BUFFER_PERCENT), G_TYPE_INT, percent,
-      GST_QUARK (BUFFERING_MODE), GST_TYPE_BUFFERING_MODE, GST_BUFFERING_STREAM,
-      GST_QUARK (AVG_IN_RATE), G_TYPE_INT, -1,
-      GST_QUARK (AVG_OUT_RATE), G_TYPE_INT, -1,
-      GST_QUARK (BUFFERING_LEFT), G_TYPE_INT64, G_GINT64_CONSTANT (-1),
-      GST_QUARK (ESTIMATED_TOTAL), G_TYPE_INT64, G_GINT64_CONSTANT (-1), NULL);
-  message = gst_message_new_custom (GST_MESSAGE_BUFFERING, src, structure);
+  message = gst_message_new_custom (GST_MESSAGE_BUFFERING, src,
+      gst_structure_new ("GstMessageBuffering",
+          "buffer-percent", G_TYPE_INT, percent, NULL));
 
   return message;
 }
@@ -624,13 +535,12 @@
     GstState oldstate, GstState newstate, GstState pending)
 {
   GstMessage *message;
-  GstStructure *structure;
 
-  structure = gst_structure_id_new (GST_QUARK (MESSAGE_STATE),
-      GST_QUARK (OLD_STATE), GST_TYPE_STATE, (gint) oldstate,
-      GST_QUARK (NEW_STATE), GST_TYPE_STATE, (gint) newstate,
-      GST_QUARK (PENDING_STATE), GST_TYPE_STATE, (gint) pending, NULL);
-  message = gst_message_new_custom (GST_MESSAGE_STATE_CHANGED, src, structure);
+  message = gst_message_new_custom (GST_MESSAGE_STATE_CHANGED, src,
+      gst_structure_new ("GstMessageState",
+          "old-state", GST_TYPE_STATE, (gint) oldstate,
+          "new-state", GST_TYPE_STATE, (gint) newstate,
+          "pending-state", GST_TYPE_STATE, (gint) pending, NULL));
 
   return message;
 }
@@ -687,12 +597,11 @@
     gboolean ready)
 {
   GstMessage *message;
-  GstStructure *structure;
 
-  structure = gst_structure_id_new (GST_QUARK (MESSAGE_CLOCK_PROVIDE),
-      GST_QUARK (CLOCK), GST_TYPE_CLOCK, clock,
-      GST_QUARK (READY), G_TYPE_BOOLEAN, ready, NULL);
-  message = gst_message_new_custom (GST_MESSAGE_CLOCK_PROVIDE, src, structure);
+  message = gst_message_new_custom (GST_MESSAGE_CLOCK_PROVIDE, src,
+      gst_structure_new ("GstMessageClockProvide",
+          "clock", GST_TYPE_CLOCK, clock,
+          "ready", G_TYPE_BOOLEAN, ready, NULL));
 
   return message;
 }
@@ -721,11 +630,10 @@
 gst_message_new_clock_lost (GstObject * src, GstClock * clock)
 {
   GstMessage *message;
-  GstStructure *structure;
 
-  structure = gst_structure_id_new (GST_QUARK (MESSAGE_CLOCK_LOST),
-      GST_QUARK (CLOCK), GST_TYPE_CLOCK, clock, NULL);
-  message = gst_message_new_custom (GST_MESSAGE_CLOCK_LOST, src, structure);
+  message = gst_message_new_custom (GST_MESSAGE_CLOCK_LOST, src,
+      gst_structure_new ("GstMessageClockLost",
+          "clock", GST_TYPE_CLOCK, clock, NULL));
 
   return message;
 }
@@ -750,56 +658,10 @@
 gst_message_new_new_clock (GstObject * src, GstClock * clock)
 {
   GstMessage *message;
-  GstStructure *structure;
 
-  structure = gst_structure_id_new (GST_QUARK (MESSAGE_NEW_CLOCK),
-      GST_QUARK (CLOCK), GST_TYPE_CLOCK, clock, NULL);
-  message = gst_message_new_custom (GST_MESSAGE_NEW_CLOCK, src, structure);
-
-  return message;
-}
-
-/**
- * gst_message_new_structure_change:
- * @src: The object originating the message.
- * @type: The change type.
- * @owner: The owner element of @src.
- * @busy: Whether the structure change is busy.
- *
- * Create a new structure change message. This message is posted when the
- * structure of a pipeline is in the process of being changed, for example
- * when pads are linked or unlinked.
- *
- * @src should be the srcpad that unlinked or linked.
- *
- * Returns: The new structure change message.
- *
- * MT safe.
- *
- * Since: 0.10.22.
- */
-#ifdef __SYMBIAN32__
-EXPORT_C
-#endif
-
-GstMessage *
-gst_message_new_structure_change (GstObject * src, GstStructureChangeType type,
-    GstElement * owner, gboolean busy)
-{
-  GstMessage *message;
-  GstStructure *structure;
-
-  g_return_val_if_fail (GST_IS_PAD (src), NULL);
-  g_return_val_if_fail (GST_PAD_DIRECTION (src) == GST_PAD_SRC, NULL);
-  g_return_val_if_fail (GST_IS_ELEMENT (owner), NULL);
-
-  structure = gst_structure_id_new (GST_QUARK (MESSAGE_STRUCTURE_CHANGE),
-      GST_QUARK (TYPE), GST_TYPE_STRUCTURE_CHANGE_TYPE, type,
-      GST_QUARK (OWNER), GST_TYPE_ELEMENT, owner,
-      GST_QUARK (BUSY), G_TYPE_BOOLEAN, busy, NULL);
-
-  message = gst_message_new_custom (GST_MESSAGE_STRUCTURE_CHANGE, src,
-      structure);
+  message = gst_message_new_custom (GST_MESSAGE_NEW_CLOCK, src,
+      gst_structure_new ("GstMessageNewClock",
+          "clock", GST_TYPE_CLOCK, clock, NULL));
 
   return message;
 }
@@ -828,12 +690,11 @@
     gint64 position)
 {
   GstMessage *message;
-  GstStructure *structure;
 
-  structure = gst_structure_id_new (GST_QUARK (MESSAGE_SEGMENT_START),
-      GST_QUARK (FORMAT), GST_TYPE_FORMAT, format,
-      GST_QUARK (POSITION), G_TYPE_INT64, position, NULL);
-  message = gst_message_new_custom (GST_MESSAGE_SEGMENT_START, src, structure);
+  message = gst_message_new_custom (GST_MESSAGE_SEGMENT_START, src,
+      gst_structure_new ("GstMessageSegmentStart",
+          "format", GST_TYPE_FORMAT, format,
+          "position", G_TYPE_INT64, position, NULL));
 
   return message;
 }
@@ -862,12 +723,11 @@
     gint64 position)
 {
   GstMessage *message;
-  GstStructure *structure;
 
-  structure = gst_structure_id_new (GST_QUARK (MESSAGE_SEGMENT_DONE),
-      GST_QUARK (FORMAT), GST_TYPE_FORMAT, format,
-      GST_QUARK (POSITION), G_TYPE_INT64, position, NULL);
-  message = gst_message_new_custom (GST_MESSAGE_SEGMENT_DONE, src, structure);
+  message = gst_message_new_custom (GST_MESSAGE_SEGMENT_DONE, src,
+      gst_structure_new ("GstMessageSegmentDone",
+          "format", GST_TYPE_FORMAT, format,
+          "position", G_TYPE_INT64, position, NULL));
 
   return message;
 }
@@ -946,12 +806,11 @@
 gst_message_new_duration (GstObject * src, GstFormat format, gint64 duration)
 {
   GstMessage *message;
-  GstStructure *structure;
 
-  structure = gst_structure_id_new (GST_QUARK (MESSAGE_DURATION),
-      GST_QUARK (FORMAT), GST_TYPE_FORMAT, format,
-      GST_QUARK (DURATION), G_TYPE_INT64, duration, NULL);
-  message = gst_message_new_custom (GST_MESSAGE_DURATION, src, structure);
+  message = gst_message_new_custom (GST_MESSAGE_DURATION, src,
+      gst_structure_new ("GstMessageDuration",
+          "format", GST_TYPE_FORMAT, format,
+          "duration", G_TYPE_INT64, duration, NULL));
 
   return message;
 }
@@ -979,11 +838,10 @@
 gst_message_new_async_start (GstObject * src, gboolean new_base_time)
 {
   GstMessage *message;
-  GstStructure *structure;
 
-  structure = gst_structure_id_new (GST_QUARK (MESSAGE_ASYNC_START),
-      GST_QUARK (NEW_BASE_TIME), G_TYPE_BOOLEAN, new_base_time, NULL);
-  message = gst_message_new_custom (GST_MESSAGE_ASYNC_START, src, structure);
+  message = gst_message_new_custom (GST_MESSAGE_ASYNC_START, src,
+      gst_structure_new ("GstMessageAsyncStart",
+          "new-base-time", G_TYPE_BOOLEAN, new_base_time, NULL));
 
   return message;
 }
@@ -1042,38 +900,6 @@
 }
 
 /**
- * gst_message_new_request_state:
- * @src: The object originating the message.
- * @state: The new requested state
- *
- * This message can be posted by elements when they want to have their state
- * changed. A typical use case would be an audio server that wants to pause the
- * pipeline because a higher priority stream is being played.
- *
- * Returns: The new requst state message. 
- *
- * MT safe.
- *
- * Since: 0.10.23
- */
-#ifdef __SYMBIAN32__
-EXPORT_C
-#endif
-
-GstMessage *
-gst_message_new_request_state (GstObject * src, GstState state)
-{
-  GstMessage *message;
-  GstStructure *structure;
-
-  structure = gst_structure_id_new (GST_QUARK (MESSAGE_REQUEST_STATE),
-      GST_QUARK (NEW_STATE), GST_TYPE_STATE, (gint) state, NULL);
-  message = gst_message_new_custom (GST_MESSAGE_REQUEST_STATE, src, structure);
-
-  return message;
-}
-
-/**
  * gst_message_get_structure:
  * @message: The #GstMessage.
  *
@@ -1114,61 +940,11 @@
 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 (message->structure);
-  gst_structure_remove_field (ret, "source-pad");
-
-  *tag_list = (GstTagList *) ret;
-}
-
-/**
- * gst_message_parse_tag_full:
- * @message: A valid #GstMessage of type GST_MESSAGE_TAG.
- * @pad: Location where the originating pad is stored, unref after usage
- * @tag_list: Return location for the tag-list.
- *
- * Extracts the tag list from the GstMessage. The tag list returned in the
- * output argument is a copy; the caller must free it when done.
- *
- * MT safe.
- *
- * Since: 0.10.24
- */
-#ifdef __SYMBIAN32__
-EXPORT_C
-#endif
-
-void
-gst_message_parse_tag_full (GstMessage * message, GstPad ** pad,
-    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 (message->structure);
-
-  if (gst_structure_has_field (ret, "source-pad") && pad) {
-    const GValue *v;
-
-    v = gst_structure_get_value (ret, "source-pad");
-    if (v && G_VALUE_HOLDS (v, GST_TYPE_PAD))
-      *pad = (GstPad*)g_value_dup_object (v);
-    else
-      *pad = NULL;
-  } else if (pad) {
-    *pad = NULL;
-  }
-  gst_structure_remove_field (ret, "source-pad");
-
-  *tag_list = (GstTagList *) ret;
+  *tag_list = (GstTagList *) gst_structure_copy (message->structure);
 }
 
 /**
@@ -1179,9 +955,9 @@
  * Extracts the buffering percent from the GstMessage. see also
  * gst_message_new_buffering().
  *
- * MT safe.
+ * Since: 0.10.11
  *
- * Since: 0.10.11
+ * MT safe.
  */
 #ifdef __SYMBIAN32__
 EXPORT_C
@@ -1194,75 +970,7 @@
   g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_BUFFERING);
 
   if (percent)
-    *percent = g_value_get_int (gst_structure_id_get_value (message->structure,
-            GST_QUARK (BUFFER_PERCENT)));
-}
-
-/**
- * gst_message_set_buffering_stats:
- * @message: A valid #GstMessage of type GST_MESSAGE_BUFFERING.
- * @mode: a buffering mode 
- * @avg_in: the average input rate
- * @avg_out: the average output rate
- * @buffering_left: amount of buffering time left in milliseconds
- *
- * Configures the buffering stats values in @message.
- *
- * Since: 0.10.20
- */
-#ifdef __SYMBIAN32__
-EXPORT_C
-#endif
-
-void
-gst_message_set_buffering_stats (GstMessage * message, GstBufferingMode mode,
-    gint avg_in, gint avg_out, gint64 buffering_left)
-{
-  g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_BUFFERING);
-
-  gst_structure_id_set (message->structure,
-      GST_QUARK (BUFFERING_MODE), GST_TYPE_BUFFERING_MODE, mode,
-      GST_QUARK (AVG_IN_RATE), G_TYPE_INT, avg_in,
-      GST_QUARK (AVG_OUT_RATE), G_TYPE_INT, avg_out,
-      GST_QUARK (BUFFERING_LEFT), G_TYPE_INT64, buffering_left, NULL);
-}
-
-/**
- * gst_message_parse_buffering_stats:
- * @message: A valid #GstMessage of type GST_MESSAGE_BUFFERING.
- * @mode: a buffering mode 
- * @avg_in: the average input rate
- * @avg_out: the average output rate
- * @buffering_left: amount of buffering time left in milliseconds.
- *
- * Extracts the buffering stats values from @message.
- *
- * Since: 0.10.20
- */
-#ifdef __SYMBIAN32__
-EXPORT_C
-#endif
-
-void
-gst_message_parse_buffering_stats (GstMessage * message,
-    GstBufferingMode * mode, gint * avg_in, gint * avg_out,
-    gint64 * buffering_left)
-{
-  g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_BUFFERING);
-
-  if (mode)
-    *mode = g_value_get_enum (gst_structure_id_get_value (message->structure,
-            GST_QUARK (BUFFERING_MODE)));
-  if (avg_in)
-    *avg_in = g_value_get_int (gst_structure_id_get_value (message->structure,
-            GST_QUARK (AVG_IN_RATE)));
-  if (avg_out)
-    *avg_out = g_value_get_int (gst_structure_id_get_value (message->structure,
-            GST_QUARK (AVG_OUT_RATE)));
-  if (buffering_left)
-    *buffering_left =
-        g_value_get_int64 (gst_structure_id_get_value (message->structure,
-            GST_QUARK (BUFFERING_LEFT)));
+    gst_structure_get_int (message->structure, "buffer-percent", percent);
 }
 
 /**
@@ -1288,16 +996,14 @@
   g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_STATE_CHANGED);
 
   if (oldstate)
-    *oldstate =
-        g_value_get_enum (gst_structure_id_get_value (message->structure,
-            GST_QUARK (OLD_STATE)));
+    gst_structure_get_enum (message->structure, "old-state",
+        GST_TYPE_STATE, (gint *) oldstate);
   if (newstate)
-    *newstate =
-        g_value_get_enum (gst_structure_id_get_value (message->structure,
-            GST_QUARK (NEW_STATE)));
+    gst_structure_get_enum (message->structure, "new-state",
+        GST_TYPE_STATE, (gint *) newstate);
   if (pending)
-    *pending = g_value_get_enum (gst_structure_id_get_value (message->structure,
-            GST_QUARK (PENDING_STATE)));
+    gst_structure_get_enum (message->structure, "pending-state",
+        GST_TYPE_STATE, (gint *) pending);
 }
 
 /**
@@ -1324,15 +1030,12 @@
   g_return_if_fail (GST_IS_MESSAGE (message));
   g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_CLOCK_PROVIDE);
 
-  clock_gvalue =
-      gst_structure_id_get_value (message->structure, GST_QUARK (CLOCK));
+  clock_gvalue = gst_structure_get_value (message->structure, "clock");
   g_return_if_fail (clock_gvalue != NULL);
   g_return_if_fail (G_VALUE_TYPE (clock_gvalue) == GST_TYPE_CLOCK);
 
   if (ready)
-    *ready =
-        g_value_get_boolean (gst_structure_id_get_value (message->structure,
-            GST_QUARK (READY)));
+    gst_structure_get_boolean (message->structure, "ready", ready);
   if (clock)
     *clock = (GstClock *) g_value_get_object (clock_gvalue);
 }
@@ -1359,8 +1062,7 @@
   g_return_if_fail (GST_IS_MESSAGE (message));
   g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_CLOCK_LOST);
 
-  clock_gvalue =
-      gst_structure_id_get_value (message->structure, GST_QUARK (CLOCK));
+  clock_gvalue = gst_structure_get_value (message->structure, "clock");
   g_return_if_fail (clock_gvalue != NULL);
   g_return_if_fail (G_VALUE_TYPE (clock_gvalue) == GST_TYPE_CLOCK);
 
@@ -1390,8 +1092,7 @@
   g_return_if_fail (GST_IS_MESSAGE (message));
   g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_NEW_CLOCK);
 
-  clock_gvalue =
-      gst_structure_id_get_value (message->structure, GST_QUARK (CLOCK));
+  clock_gvalue = gst_structure_get_value (message->structure, "clock");
   g_return_if_fail (clock_gvalue != NULL);
   g_return_if_fail (G_VALUE_TYPE (clock_gvalue) == GST_TYPE_CLOCK);
 
@@ -1400,49 +1101,6 @@
 }
 
 /**
- * gst_message_parse_structure_change:
- * @message: A valid #GstMessage of type GST_MESSAGE_STRUCTURE_CHANGE.
- * @type: A pointer to hold the change type
- * @owner: The owner element of the message source
- * @busy: A pointer to hold whether the change is in progress or has been
- * completed
- *
- * Extracts the change type and completion status from the GstMessage.
- *
- * MT safe.
- *
- * Since: 0.10.22
- */
-#ifdef __SYMBIAN32__
-EXPORT_C
-#endif
-
-void
-gst_message_parse_structure_change (GstMessage * message,
-    GstStructureChangeType * type, GstElement ** owner, gboolean * busy)
-{
-  const GValue *owner_gvalue;
-
-  g_return_if_fail (GST_IS_MESSAGE (message));
-  g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_STRUCTURE_CHANGE);
-
-  owner_gvalue =
-      gst_structure_id_get_value (message->structure, GST_QUARK (OWNER));
-  g_return_if_fail (owner_gvalue != NULL);
-  g_return_if_fail (G_VALUE_TYPE (owner_gvalue) == GST_TYPE_ELEMENT);
-
-  if (type)
-    *type = g_value_get_enum (gst_structure_id_get_value (message->structure,
-            GST_QUARK (TYPE)));
-  if (owner)
-    *owner = (GstElement *) g_value_get_object (owner_gvalue);
-  if (busy)
-    *busy =
-        g_value_get_boolean (gst_structure_id_get_value (message->structure,
-            GST_QUARK (BUSY)));
-}
-
-/**
  * gst_message_parse_error:
  * @message: A valid #GstMessage of type GST_MESSAGE_ERROR.
  * @gerror: Location for the GError
@@ -1466,8 +1124,7 @@
   g_return_if_fail (GST_IS_MESSAGE (message));
   g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_ERROR);
 
-  error_gvalue =
-      gst_structure_id_get_value (message->structure, GST_QUARK (GERROR));
+  error_gvalue = gst_structure_get_value (message->structure, "gerror");
   g_return_if_fail (error_gvalue != NULL);
   g_return_if_fail (G_VALUE_TYPE (error_gvalue) == GST_TYPE_G_ERROR);
 
@@ -1478,9 +1135,7 @@
     *gerror = NULL;
 
   if (debug)
-    *debug =
-        g_value_dup_string (gst_structure_id_get_value (message->structure,
-            GST_QUARK (DEBUG)));
+    *debug = g_strdup (gst_structure_get_string (message->structure, "debug"));
 }
 
 /**
@@ -1508,8 +1163,7 @@
   g_return_if_fail (GST_IS_MESSAGE (message));
   g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_WARNING);
 
-  error_gvalue =
-      gst_structure_id_get_value (message->structure, GST_QUARK (GERROR));
+  error_gvalue = gst_structure_get_value (message->structure, "gerror");
   g_return_if_fail (error_gvalue != NULL);
   g_return_if_fail (G_VALUE_TYPE (error_gvalue) == GST_TYPE_G_ERROR);
 
@@ -1520,9 +1174,7 @@
     *gerror = NULL;
 
   if (debug)
-    *debug =
-        g_value_dup_string (gst_structure_id_get_value (message->structure,
-            GST_QUARK (DEBUG)));
+    *debug = g_strdup (gst_structure_get_string (message->structure, "debug"));
 }
 
 /**
@@ -1551,8 +1203,7 @@
   g_return_if_fail (GST_IS_MESSAGE (message));
   g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_INFO);
 
-  error_gvalue =
-      gst_structure_id_get_value (message->structure, GST_QUARK (GERROR));
+  error_gvalue = gst_structure_get_value (message->structure, "gerror");
   g_return_if_fail (error_gvalue != NULL);
   g_return_if_fail (G_VALUE_TYPE (error_gvalue) == GST_TYPE_G_ERROR);
 
@@ -1563,9 +1214,7 @@
     *gerror = NULL;
 
   if (debug)
-    *debug =
-        g_value_dup_string (gst_structure_id_get_value (message->structure,
-            GST_QUARK (DEBUG)));
+    *debug = g_strdup (gst_structure_get_string (message->structure, "debug"));
 }
 
 /**
@@ -1586,17 +1235,17 @@
 gst_message_parse_segment_start (GstMessage * message, GstFormat * format,
     gint64 * position)
 {
+  const GstStructure *structure;
+
   g_return_if_fail (GST_IS_MESSAGE (message));
   g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_SEGMENT_START);
 
+  structure = gst_message_get_structure (message);
   if (format)
-    *format =
-        g_value_get_enum (gst_structure_id_get_value (message->structure,
-            GST_QUARK (FORMAT)));
+    *format = g_value_get_enum (gst_structure_get_value (structure, "format"));
   if (position)
     *position =
-        g_value_get_int64 (gst_structure_id_get_value (message->structure,
-            GST_QUARK (POSITION)));
+        g_value_get_int64 (gst_structure_get_value (structure, "position"));
 }
 
 /**
@@ -1617,17 +1266,17 @@
 gst_message_parse_segment_done (GstMessage * message, GstFormat * format,
     gint64 * position)
 {
+  const GstStructure *structure;
+
   g_return_if_fail (GST_IS_MESSAGE (message));
   g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_SEGMENT_DONE);
 
+  structure = gst_message_get_structure (message);
   if (format)
-    *format =
-        g_value_get_enum (gst_structure_id_get_value (message->structure,
-            GST_QUARK (FORMAT)));
+    *format = g_value_get_enum (gst_structure_get_value (structure, "format"));
   if (position)
     *position =
-        g_value_get_int64 (gst_structure_id_get_value (message->structure,
-            GST_QUARK (POSITION)));
+        g_value_get_int64 (gst_structure_get_value (structure, "position"));
 }
 
 /**
@@ -1651,17 +1300,17 @@
 gst_message_parse_duration (GstMessage * message, GstFormat * format,
     gint64 * duration)
 {
+  const GstStructure *structure;
+
   g_return_if_fail (GST_IS_MESSAGE (message));
   g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_DURATION);
 
+  structure = gst_message_get_structure (message);
   if (format)
-    *format =
-        g_value_get_enum (gst_structure_id_get_value (message->structure,
-            GST_QUARK (FORMAT)));
+    *format = g_value_get_enum (gst_structure_get_value (structure, "format"));
   if (duration)
     *duration =
-        g_value_get_int64 (gst_structure_id_get_value (message->structure,
-            GST_QUARK (DURATION)));
+        g_value_get_int64 (gst_structure_get_value (structure, "duration"));
 }
 
 /**
@@ -1682,337 +1331,14 @@
 void
 gst_message_parse_async_start (GstMessage * message, gboolean * new_base_time)
 {
+  const GstStructure *structure;
+
   g_return_if_fail (GST_IS_MESSAGE (message));
   g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_ASYNC_START);
 
+  structure = gst_message_get_structure (message);
   if (new_base_time)
     *new_base_time =
-        g_value_get_boolean (gst_structure_id_get_value (message->structure,
-            GST_QUARK (NEW_BASE_TIME)));
-}
-
-/**
- * gst_message_parse_request_state:
- * @message: A valid #GstMessage of type GST_MESSAGE_REQUEST_STATE.
- * @state: Result location for the requested state or NULL
- *
- * Extract the requested state from the request_state message.
- *
- * MT safe.
- *
- * Since: 0.10.23
- */
-#ifdef __SYMBIAN32__
-EXPORT_C
-#endif
-
-void
-gst_message_parse_request_state (GstMessage * message, GstState * state)
-{
-  g_return_if_fail (GST_IS_MESSAGE (message));
-  g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_REQUEST_STATE);
-
-  if (state)
-    *state = g_value_get_enum (gst_structure_id_get_value (message->structure,
-            GST_QUARK (NEW_STATE)));
-}
-
-/**
- * gst_message_new_stream_status:
- * @src: The object originating the message.
- * @type: The stream status type.
- * @owner: The owner element of @src.
- *
- * Create a new stream status message. This message is posted when a streaming
- * thread is created/destroyed or when the state changed.
- * 
- * Returns: The new stream status message.
- *
- * MT safe.
- *
- * Since: 0.10.24.
- */
-#ifdef __SYMBIAN32__
-EXPORT_C
-#endif
-
-GstMessage *
-gst_message_new_stream_status (GstObject * src, GstStreamStatusType type,
-    GstElement * owner)
-{
-  GstMessage *message;
-  GstStructure *structure;
-
-  structure = gst_structure_id_new (GST_QUARK (MESSAGE_STREAM_STATUS),
-      GST_QUARK (TYPE), GST_TYPE_STREAM_STATUS_TYPE, (gint) type,
-      GST_QUARK (OWNER), GST_TYPE_ELEMENT, owner, NULL);
-  message = gst_message_new_custom (GST_MESSAGE_STREAM_STATUS, src, structure);
-
-  return message;
-}
-
-/**
- * gst_message_parse_stream_status:
- * @message: A valid #GstMessage of type GST_MESSAGE_STREAM_STATUS.
- * @type: A pointer to hold the status type
- * @owner: The owner element of the message source
- *
- * Extracts the stream status type and owner the GstMessage. The returned
- * owner remains valid for as long as the reference to @message is valid and
- * should thus not be unreffed.
- *
- * MT safe.
- *
- * Since: 0.10.24.
- */
-#ifdef __SYMBIAN32__
-EXPORT_C
-#endif
-
-void
-gst_message_parse_stream_status (GstMessage * message,
-    GstStreamStatusType * type, GstElement ** owner)
-{
-  const GValue *owner_gvalue;
-
-  g_return_if_fail (GST_IS_MESSAGE (message));
-  g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_STREAM_STATUS);
-
-  owner_gvalue =
-      gst_structure_id_get_value (message->structure, GST_QUARK (OWNER));
-  g_return_if_fail (owner_gvalue != NULL);
-
-  if (type)
-    *type = g_value_get_enum (gst_structure_id_get_value (message->structure,
-            GST_QUARK (TYPE)));
-  if (owner)
-    *owner = (GstElement *) g_value_get_object (owner_gvalue);
-}
-
-/**
- * gst_message_set_stream_status_object:
- * @message: A valid #GstMessage of type GST_MESSAGE_STREAM_STATUS.
- * @object: the object controlling the streaming
- *
- * Configures the object handling the streaming thread. This is usually a
- * GstTask object but other objects might be added in the future.
- *
- * Since: 0.10.24
- */
-#ifdef __SYMBIAN32__
-EXPORT_C
-#endif
-
-void
-gst_message_set_stream_status_object (GstMessage * message,
-    const GValue * object)
-{
-  g_return_if_fail (GST_IS_MESSAGE (message));
-  g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_STREAM_STATUS);
-
-  gst_structure_id_set_value (message->structure, GST_QUARK (OBJECT), object);
-}
-
-/**
- * gst_message_get_stream_status_object:
- * @message: A valid #GstMessage of type GST_MESSAGE_STREAM_STATUS.
- *
- * Extracts the object managing the streaming thread from @message.
- *
- * Returns: a GValue containing the object that manages the streaming thread.
- * This object is usually of type GstTask but other types can be added in the
- * future. The object remains valid as long as @message is valid.
- *
- * Since: 0.10.24
- */
-#ifdef __SYMBIAN32__
-EXPORT_C
-#endif
-
-const GValue *
-gst_message_get_stream_status_object (GstMessage * message)
-{
-  const GValue *result;
-
-  g_return_val_if_fail (GST_IS_MESSAGE (message), NULL);
-  g_return_val_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_STREAM_STATUS,
-      NULL);
-
-  result = gst_structure_id_get_value (message->structure, GST_QUARK (OBJECT));
-
-  return result;
+        g_value_get_boolean (gst_structure_get_value (structure,
+            "new-base-time"));
 }
-
-/**
- * gst_message_new_step_done:
- * @src: The object originating the message.
- * @format: the format of @amount
- * @amount: the amount of stepped data
- * @rate: the rate of the stepped amount
- * @flush: is this an flushing step
- * @intermediate: is this an intermediate step
- * @duration: the duration of the data
- * @eos: the step caused EOS
- *
- * This message is posted by elements when they complete a part, when @intermediate set
- * to TRUE, or a complete step operation.
- *
- * @duration will contain the amount of time (in GST_FORMAT_TIME) of the stepped
- * @amount of media in format @format.
- *
- * Returns: The new step_done message. 
- *
- * MT safe.
- *
- * Since: 0.10.24
- */
-#ifdef __SYMBIAN32__
-EXPORT_C
-#endif
-
-GstMessage *
-gst_message_new_step_done (GstObject * src, GstFormat format, guint64 amount,
-    gdouble rate, gboolean flush, gboolean intermediate, guint64 duration,
-    gboolean eos)
-{
-  GstMessage *message;
-  GstStructure *structure;
-
-  structure = gst_structure_id_new (GST_QUARK (MESSAGE_STEP_DONE),
-      GST_QUARK (FORMAT), GST_TYPE_FORMAT, format,
-      GST_QUARK (AMOUNT), G_TYPE_UINT64, amount,
-      GST_QUARK (RATE), G_TYPE_DOUBLE, rate,
-      GST_QUARK (FLUSH), G_TYPE_BOOLEAN, flush,
-      GST_QUARK (INTERMEDIATE), G_TYPE_BOOLEAN, intermediate,
-      GST_QUARK (DURATION), G_TYPE_UINT64, duration,
-      GST_QUARK (EOS), G_TYPE_BOOLEAN, eos, NULL);
-  message = gst_message_new_custom (GST_MESSAGE_STEP_DONE, src, structure);
-
-  return message;
-}
-
-/**
- * gst_message_parse_step_done:
- * @message: A valid #GstMessage of type GST_MESSAGE_STEP_DONE.
- * @format: result location for the format
- * @amount: result location for the amount
- * @rate: result location for the rate
- * @flush: result location for the flush flag
- * @intermediate: result location for the intermediate flag
- * @duration: result location for the duration
- * @eos: result location for the EOS flag
- *
- * Extract the values the step_done message.
- *
- * MT safe.
- *
- * Since: 0.10.24
- */
-#ifdef __SYMBIAN32__
-EXPORT_C
-#endif
-
-void
-gst_message_parse_step_done (GstMessage * message, GstFormat * format,
-    guint64 * amount, gdouble * rate, gboolean * flush, gboolean * intermediate,
-    guint64 * duration, gboolean * eos)
-{
-  g_return_if_fail (GST_IS_MESSAGE (message));
-  g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_STEP_DONE);
-
-  gst_structure_id_get (message->structure,
-      GST_QUARK (FORMAT), GST_TYPE_FORMAT, format,
-      GST_QUARK (AMOUNT), G_TYPE_UINT64, amount,
-      GST_QUARK (RATE), G_TYPE_DOUBLE, rate,
-      GST_QUARK (FLUSH), G_TYPE_BOOLEAN, flush,
-      GST_QUARK (INTERMEDIATE), G_TYPE_BOOLEAN, intermediate,
-      GST_QUARK (DURATION), G_TYPE_UINT64, duration,
-      GST_QUARK (EOS), G_TYPE_BOOLEAN, eos, NULL);
-}
-
-/**
- * gst_message_new_step_start:
- * @src: The object originating the message.
- * @active: if the step is active or queued
- * @format: the format of @amount
- * @amount: the amount of stepped data
- * @rate: the rate of the stepped amount
- * @flush: is this an flushing step
- * @intermediate: is this an intermediate step
- *
- * This message is posted by elements when they accept or activate a new step
- * event for @amount in @format. 
- *
- * @active is set to FALSE when the element accepted the new step event and has
- * queued it for execution in the streaming threads.
- *
- * @active is set to TRUE when the element has activated the step operation and
- * is now ready to start executing the step in the streaming thread. After this
- * message is emited, the application can queue a new step operation in the
- * element.
- *
- * Returns: The new step_start message. 
- *
- * MT safe.
- *
- * Since: 0.10.24
- */
-#ifdef __SYMBIAN32__
-EXPORT_C
-#endif
-
-GstMessage *
-gst_message_new_step_start (GstObject * src, gboolean active, GstFormat format,
-    guint64 amount, gdouble rate, gboolean flush, gboolean intermediate)
-{
-  GstMessage *message;
-  GstStructure *structure;
-
-  structure = gst_structure_id_new (GST_QUARK (MESSAGE_STEP_START),
-      GST_QUARK (ACTIVE), G_TYPE_BOOLEAN, active,
-      GST_QUARK (FORMAT), GST_TYPE_FORMAT, format,
-      GST_QUARK (AMOUNT), G_TYPE_UINT64, amount,
-      GST_QUARK (RATE), G_TYPE_DOUBLE, rate,
-      GST_QUARK (FLUSH), G_TYPE_BOOLEAN, flush,
-      GST_QUARK (INTERMEDIATE), G_TYPE_BOOLEAN, intermediate, NULL);
-  message = gst_message_new_custom (GST_MESSAGE_STEP_START, src, structure);
-
-  return message;
-}
-
-/**
- * gst_message_parse_step_start:
- * @message: A valid #GstMessage of type GST_MESSAGE_STEP_DONE.
- * @active: result location for the active flag
- * @format: result location for the format
- * @amount: result location for the amount
- * @rate: result location for the rate
- * @flush: result location for the flush flag
- * @intermediate: result location for the intermediate flag
- *
- * Extract the values from step_start message.
- *
- * MT safe.
- *
- * Since: 0.10.24
- */
-#ifdef __SYMBIAN32__
-EXPORT_C
-#endif
-
-void
-gst_message_parse_step_start (GstMessage * message, gboolean * active,
-    GstFormat * format, guint64 * amount, gdouble * rate, gboolean * flush,
-    gboolean * intermediate)
-{
-  g_return_if_fail (GST_IS_MESSAGE (message));
-  g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_STEP_START);
-
-  gst_structure_id_get (message->structure,
-      GST_QUARK (ACTIVE), G_TYPE_BOOLEAN, active,
-      GST_QUARK (FORMAT), GST_TYPE_FORMAT, format,
-      GST_QUARK (AMOUNT), G_TYPE_UINT64, amount,
-      GST_QUARK (RATE), G_TYPE_DOUBLE, rate,
-      GST_QUARK (FLUSH), G_TYPE_BOOLEAN, flush,
-      GST_QUARK (INTERMEDIATE), G_TYPE_BOOLEAN, intermediate, NULL);
-}