Add methods to handle the stream_status message types.
<TITLE>GstMessage</TITLE>
GstMessage
GstMessageType
-GstStructureChangeType
GST_MESSAGE_SRC
GST_MESSAGE_TIMESTAMP
GST_MESSAGE_TYPE
gst_message_new_async_start
gst_message_parse_async_start
gst_message_new_async_done
+
+GstStructureChangeType
gst_message_new_structure_change
gst_message_parse_structure_change
gst_message_new_request_state
gst_message_parse_request_state
+
+GstStreamStatusType
+gst_message_new_stream_status
+gst_message_parse_stream_status
+gst_message_set_stream_status_object
+gst_message_get_stream_status_object
+
<SUBSECTION Standard>
GstMessageClass
GST_MESSAGE
GST_MESSAGE_GET_CLASS
GST_TYPE_MESSAGE_TYPE
GST_TYPE_STRUCTURE_CHANGE_TYPE
+GST_TYPE_STREAM_STATUS_TYPE
<SUBSECTION Private>
gst_message_get_type
gst_message_type_get_type
gst_structure_change_type_get_type
+gst_stream_status_type_get_type
GST_MESSAGE_COND
GST_MESSAGE_GET_LOCK
GST_MESSAGE_LOCK
*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.
+ */
+GstMessage *
+gst_message_new_stream_status (GstObject * src, GstStreamStatusType type,
+ GstElement * owner)
+{
+ GstMessage *message;
+ GstStructure *structure;
+
+ structure = gst_structure_empty_new ("GstMessageStreamStatus");
+ gst_structure_id_set (structure,
+ 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.
+ *
+ * Since: 0.10.24.
+ *
+ * MT safe.
+ */
+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
+ */
+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
+ */
+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;
+}
} GstStructureChangeType;
/**
+ * GstStreamStatusType:
+ * @GST_STREAM_STATUS_TYPE_CREATE: A new thread need to be created.
+ * @GST_STREAM_STATUS_TYPE_ENTER: a thread entered its loop function
+ * @GST_STREAM_STATUS_TYPE_LEAVE: a thread left its loop function
+ * @GST_STREAM_STATUS_TYPE_DESTROY: a thread is destroyed
+ * @GST_STREAM_STATUS_TYPE_START: a thread is started
+ * @GST_STREAM_STATUS_TYPE_PAUSE: a thread is paused
+ * @GST_STREAM_STATUS_TYPE_STOP: a thread is stopped
+ *
+ * The type of a #GstMessageStreamStatus. The stream status messages inform the
+ * application of new streaming threads and their status.
+ *
+ * Since: 0.10.24
+ */
+typedef enum {
+ GST_STREAM_STATUS_TYPE_CREATE = 0,
+ GST_STREAM_STATUS_TYPE_ENTER = 1,
+ GST_STREAM_STATUS_TYPE_LEAVE = 2,
+ GST_STREAM_STATUS_TYPE_DESTROY = 3,
+
+ GST_STREAM_STATUS_TYPE_START = 8,
+ GST_STREAM_STATUS_TYPE_PAUSE = 9,
+ GST_STREAM_STATUS_TYPE_STOP = 10
+} GstStreamStatusType;
+
+/**
* GstMessage:
* @mini_object: the parent structure
* @type: the #GstMessageType of the message
void gst_message_parse_structure_change (GstMessage *message, GstStructureChangeType *type,
GstElement **owner, gboolean *busy);
+/* STREAM STATUS */
+GstMessage * gst_message_new_stream_status (GstObject * src, GstStreamStatusType type,
+ GstElement *owner);
+void gst_message_parse_stream_status (GstMessage *message, GstStreamStatusType *type,
+ GstElement **owner);
+void gst_message_set_stream_status_object (GstMessage *message, const GValue *object);
+const GValue * gst_message_get_stream_status_object (GstMessage *message);
+
/* REQUEST_STATE */
GstMessage * gst_message_new_request_state (GstObject * src, GstState state);
void gst_message_parse_request_state (GstMessage * message, GstState *state);
gst_marshal_VOID__POINTER_OBJECT
gst_marshal_VOID__UINT_BOXED
gst_message_get_seqnum
+ gst_message_get_stream_status_object
gst_message_get_structure
gst_message_get_type
gst_message_new_application
gst_message_new_segment_start
gst_message_new_state_changed
gst_message_new_state_dirty
+ gst_message_new_stream_status
gst_message_new_structure_change
gst_message_new_tag
gst_message_new_warning
gst_message_parse_segment_done
gst_message_parse_segment_start
gst_message_parse_state_changed
+ gst_message_parse_stream_status
gst_message_parse_structure_change
gst_message_parse_tag
gst_message_parse_warning
gst_message_set_buffering_stats
gst_message_set_seqnum
+ gst_message_set_stream_status_object
gst_message_type_get_name
gst_message_type_get_type
gst_message_type_to_quark
gst_static_pad_template_get_type
gst_stream_error_get_type
gst_stream_error_quark
+ gst_stream_status_type_get_type
gst_structure_change_type_get_type
gst_structure_copy
gst_structure_empty_new