--- 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);
-}