Top |
struct | GstMessage |
enum | GstMessageType |
enum | GstStructureChangeType |
enum | GstStreamStatusType |
enum | GstProgressType |
Messages are implemented as a subclass of GstMiniObject with a generic GstStructure as the content. This allows for writing custom messages without requiring an API change while allowing a wide range of different types of messages.
Messages are posted by objects in the pipeline and are passed to the application using the GstBus.
The basic use pattern of posting a message on a GstBus is as follows:
1 |
gst_bus_post (bus, gst_message_new_eos()); |
A GstElement usually posts messages on the bus provided by the parent
container using gst_element_post_message()
.
#define GST_MESSAGE_SRC(message) (GST_MESSAGE_CAST(message)->src)
Get the object that posted message
.
#define GST_MESSAGE_SRC_NAME(message)
Get the name of the object that posted message
. Returns "(NULL)" if
the message has no source object set.
#define GST_MESSAGE_TIMESTAMP(message) (GST_MESSAGE_CAST(message)->timestamp)
Get the timestamp of message
. This is the timestamp when the message
was created.
#define GST_MESSAGE_SEQNUM(message) (GST_MESSAGE_CAST(message)->seqnum)
Get the sequence number of message
.
#define GST_MESSAGE_TYPE(message) (GST_MESSAGE_CAST(message)->type)
Get the GstMessageType of message
.
#define GST_MESSAGE_TYPE_IS_EXTENDED(message) (!!(GST_MESSAGE_CAST(message)->type & GST_MESSAGE_EXTENDED))
Check if the message is in the extended message group (Since 1.4)
#define GST_MESSAGE_TYPE_NAME(message) gst_message_type_get_name(GST_MESSAGE_TYPE(message))
Get a constant string representation of the GstMessageType of message
.
GQuark
gst_message_type_to_quark (GstMessageType type
);
Get the unique quark for the given message type.
const gchar *
gst_message_type_get_name (GstMessageType type
);
Get a printable name for the given message type. Do not modify or free.
GstMessage *
gst_message_ref (GstMessage *msg
);
Convenience macro to increase the reference count of the message.
void
gst_message_unref (GstMessage *msg
);
Convenience macro to decrease the reference count of the message, possibly freeing it.
GstMessage *
gst_message_copy (const GstMessage *msg
);
Creates a copy of the message. Returns a copy of the message.
const GstStructure *
gst_message_get_structure (GstMessage *message
);
Access the structure of the message.
#define gst_message_make_writable(msg) GST_MESSAGE_CAST (gst_mini_object_make_writable (GST_MINI_OBJECT_CAST (msg)))
Checks if a message is writable. If not, a writable copy is made and returned.
guint32
gst_message_get_seqnum (GstMessage *message
);
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 have the same sequence number unless that correspondence was made explicitly.
void gst_message_set_seqnum (GstMessage *message
,guint32 seqnum
);
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.
gboolean gst_message_has_name (GstMessage *message
,const gchar *name
);
Checks if message
has the given name
. This function is usually used to
check the name of a custom message.
#define gst_message_is_writable(msg) gst_mini_object_is_writable (GST_MINI_OBJECT_CAST (msg))
Tests if you can safely write into a message's structure or validly modify the seqnum and timestamp fields.
gboolean gst_message_replace (GstMessage **old_message
,GstMessage *new_message
);
Modifies a pointer to a GstMessage to point to a different GstMessage. The modification is done atomically (so this is useful for ensuring thread safety in some cases), and the reference counts are updated appropriately (the old message is unreffed, the new one is reffed).
Either new_message
or the GstMessage pointed to by old_message
may be NULL
.
old_message |
pointer to a pointer to a GstMessage to be replaced. |
[inout][transfer full][nullable] |
new_message |
pointer to a GstMessage that will
replace the message pointed to by |
[allow-none][transfer none] |
GstMessage *
gst_message_new_eos (GstObject *src
);
Create a new eos message. This message is generated and posted in the sink elements of a GstBin. The bin will only forward the EOS message to the application if all sinks have posted an EOS message.
GstMessage * gst_message_new_error (GstObject *src
,GError *error
,const gchar *debug
);
Create a new error message. The message will copy error
and
debug
. This message is posted by element when a fatal event
occurred. The pipeline will probably (partially) stop. The application
receiving this message should stop the pipeline.
void gst_message_parse_error (GstMessage *message
,GError **gerror
,gchar **debug
);
Extracts the GError and debug string from the GstMessage. The values returned in the output arguments are copies; the caller must free them when done.
Typical usage of this function might be:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
... switch (GST_MESSAGE_TYPE (msg)) { case GST_MESSAGE_ERROR: { GError *err = NULL; gchar *dbg_info = NULL; gst_message_parse_error (msg, &err, &dbg_info); g_printerr ("ERROR from element %s: %s\n", GST_OBJECT_NAME (msg->src), err->message); g_printerr ("Debugging info: %s\n", (dbg_info) ? dbg_info : "none"); g_error_free (err); g_free (dbg_info); break; } ... } ... |
MT safe.
message |
A valid GstMessage of type GST_MESSAGE_ERROR. |
|
gerror |
location for the GError. |
[out][allow-none][transfer full] |
debug |
location for the debug message,
or |
[out][allow-none][transfer full] |
GstMessage * gst_message_new_warning (GstObject *src
,GError *error
,const gchar *debug
);
Create a new warning message. The message will make copies of error
and
debug
.
void gst_message_parse_warning (GstMessage *message
,GError **gerror
,gchar **debug
);
Extracts the GError and debug string from the GstMessage. The values returned in the output arguments are copies; the caller must free them when done.
MT safe.
message |
A valid GstMessage of type GST_MESSAGE_WARNING. |
|
gerror |
location for the GError. |
[out][allow-none][transfer full] |
debug |
location for the debug message,
or |
[out][allow-none][transfer full] |
GstMessage * gst_message_new_info (GstObject *src
,GError *error
,const gchar *debug
);
Create a new info message. The message will make copies of error
and
debug
.
MT safe.
void gst_message_parse_info (GstMessage *message
,GError **gerror
,gchar **debug
);
Extracts the GError and debug string from the GstMessage. The values returned in the output arguments are copies; the caller must free them when done.
MT safe.
message |
A valid GstMessage of type GST_MESSAGE_INFO. |
|
gerror |
location for the GError. |
[out][allow-none][transfer full] |
debug |
location for the debug message,
or |
[out][allow-none][transfer full] |
GstMessage * gst_message_new_tag (GstObject *src
,GstTagList *tag_list
);
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.
void gst_message_parse_tag (GstMessage *message
,GstTagList **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.
Typical usage of this function might be:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
... switch (GST_MESSAGE_TYPE (msg)) { case GST_MESSAGE_TAG: { GstTagList *tags = NULL; gst_message_parse_tag (msg, &tags); g_print ("Got tags from element %s\n", GST_OBJECT_NAME (msg->src)); handle_tags (tags); gst_tag_list_unref (tags); break; } ... } ... |
MT safe.
message |
A valid GstMessage of type GST_MESSAGE_TAG. |
|
tag_list |
return location for the tag-list. |
[out callee-allocates] |
GstMessage * gst_message_new_buffering (GstObject *src
,gint percent
);
Create a new buffering message. This message can be posted by an element that
needs to buffer data before it can continue processing. percent
should be a
value between 0 and 100. A value of 100 means that the buffering completed.
When percent
is < 100 the application should PAUSE a PLAYING pipeline. When
percent
is 100, the application can set the pipeline (back) to PLAYING.
The application must be prepared to receive BUFFERING messages in the
PREROLLING state and may only set the pipeline to PLAYING after receiving a
message with percent
set to 100, which can happen after the pipeline
completed prerolling.
MT safe.
void gst_message_parse_buffering (GstMessage *message
,gint *percent
);
Extracts the buffering percent from the GstMessage. see also
gst_message_new_buffering()
.
MT safe.
message |
A valid GstMessage of type GST_MESSAGE_BUFFERING. |
|
percent |
Return location for the percent. |
[out][allow-none] |
void gst_message_set_buffering_stats (GstMessage *message
,GstBufferingMode mode
,gint avg_in
,gint avg_out
,gint64 buffering_left
);
Configures the buffering stats values in message
.
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 |
void gst_message_parse_buffering_stats (GstMessage *message
,GstBufferingMode *mode
,gint *avg_in
,gint *avg_out
,gint64 *buffering_left
);
Extracts the buffering stats values from message
.
message |
A valid GstMessage of type GST_MESSAGE_BUFFERING. |
|
mode |
a buffering mode, or |
[out][allow-none] |
avg_in |
the average input rate, or |
[out][allow-none] |
avg_out |
the average output rate, or |
[out][allow-none] |
buffering_left |
amount of buffering time left in
milliseconds, or |
[out][allow-none] |
GstMessage * gst_message_new_state_changed (GstObject *src
,GstState oldstate
,GstState newstate
,GstState pending
);
Create a state change message. This message is posted whenever an element changed its state.
void gst_message_parse_state_changed (GstMessage *message
,GstState *oldstate
,GstState *newstate
,GstState *pending
);
Extracts the old and new states from the GstMessage.
Typical usage of this function might be:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
... switch (GST_MESSAGE_TYPE (msg)) { case GST_MESSAGE_STATE_CHANGED: { GstState old_state, new_state; gst_message_parse_state_changed (msg, &old_state, &new_state, NULL); g_print ("Element %s changed state from %s to %s.\n", GST_OBJECT_NAME (msg->src), gst_element_state_get_name (old_state), gst_element_state_get_name (new_state)); break; } ... } ... |
MT safe.
message |
a valid GstMessage of type GST_MESSAGE_STATE_CHANGED |
|
oldstate |
the previous state, or |
[out][allow-none] |
newstate |
the new (current) state, or |
[out][allow-none] |
pending |
the pending (target) state, or |
[out][allow-none] |
GstMessage *
gst_message_new_state_dirty (GstObject *src
);
Create a state dirty message. This message is posted whenever an element changed its state asynchronously and is used internally to update the states of container objects.
GstMessage * gst_message_new_step_done (GstObject *src
,GstFormat format
,guint64 amount
,gdouble rate
,gboolean flush
,gboolean intermediate
,guint64 duration
,gboolean 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
.
void gst_message_parse_step_done (GstMessage *message
,GstFormat *format
,guint64 *amount
,gdouble *rate
,gboolean *flush
,gboolean *intermediate
,guint64 *duration
,gboolean *eos
);
Extract the values the step_done message.
MT safe.
message |
A valid GstMessage of type GST_MESSAGE_STEP_DONE. |
|
format |
result location for the format. |
[out][allow-none] |
amount |
result location for the amount. |
[out][allow-none] |
rate |
result location for the rate. |
[out][allow-none] |
flush |
result location for the flush flag. |
[out][allow-none] |
intermediate |
result location for the intermediate flag. |
[out][allow-none] |
duration |
result location for the duration. |
[out][allow-none] |
eos |
result location for the EOS flag. |
[out][allow-none] |
GstMessage * gst_message_new_clock_provide (GstObject *src
,GstClock *clock
,gboolean ready
);
Create a clock provide message. This message is posted whenever an element is ready to provide a clock or lost its ability to provide a clock (maybe because it paused or became EOS).
This message is mainly used internally to manage the clock selection.
src |
the object originating the message. |
[transfer none] |
clock |
the clock it provides. |
[transfer none] |
ready |
|
void gst_message_parse_clock_provide (GstMessage *message
,GstClock **clock
,gboolean *ready
);
Extracts the clock and ready flag from the GstMessage. The clock object returned remains valid until the message is freed.
MT safe.
message |
A valid GstMessage of type GST_MESSAGE_CLOCK_PROVIDE. |
|
clock |
a pointer to hold a clock
object, or |
[out][allow-none][transfer none] |
ready |
a pointer to hold the ready flag, or |
[out][allow-none] |
GstMessage * gst_message_new_clock_lost (GstObject *src
,GstClock *clock
);
Create a clock lost message. This message is posted whenever the clock is not valid anymore.
If this message is posted by the pipeline, the pipeline will select a new clock again when it goes to PLAYING. It might therefore be needed to set the pipeline to PAUSED and PLAYING again.
void gst_message_parse_clock_lost (GstMessage *message
,GstClock **clock
);
Extracts the lost clock from the GstMessage. The clock object returned remains valid until the message is freed.
MT safe.
message |
A valid GstMessage of type GST_MESSAGE_CLOCK_LOST. |
|
clock |
a pointer to hold the lost clock. |
[out][allow-none][transfer none] |
GstMessage * gst_message_new_new_clock (GstObject *src
,GstClock *clock
);
Create a new clock message. This message is posted whenever the pipeline selects a new clock for the pipeline.
void gst_message_parse_new_clock (GstMessage *message
,GstClock **clock
);
Extracts the new clock from the GstMessage. The clock object returned remains valid until the message is freed.
MT safe.
message |
A valid GstMessage of type GST_MESSAGE_NEW_CLOCK. |
|
clock |
a pointer to hold the selected new clock. |
[out][allow-none][transfer none] |
GstMessage * gst_message_new_application (GstObject *src
,GstStructure *structure
);
Create a new application-typed message. GStreamer will never create these messages; they are a gift from us to you. Enjoy.
GstMessage * gst_message_new_element (GstObject *src
,GstStructure *structure
);
Create a new element-specific message. This is meant as a generic way of
allowing one-way communication from an element to an application, for example
"the firewire cable was unplugged". The format of the message should be
documented in the element's documentation. The structure field can be NULL
.
GstMessage * gst_message_new_custom (GstMessageType type
,GstObject *src
,GstStructure *structure
);
Create a new custom-typed message. This can be used for anything not
handled by other message-specific functions to pass a message to the
app. The structure field can be NULL
.
type |
The GstMessageType to distinguish messages |
|
src |
The object originating the message. |
|
structure |
the structure for the message. The message will take ownership of the structure. |
[transfer full][allow-none] |
GstMessage * gst_message_new_segment_start (GstObject *src
,GstFormat format
,gint64 position
);
Create a new segment message. This message is posted by elements that start playback of a segment as a result of a segment seek. This message is not received by the application but is used for maintenance reasons in container elements.
void gst_message_parse_segment_start (GstMessage *message
,GstFormat *format
,gint64 *position
);
Extracts the position and format from the segment start message.
MT safe.
message |
A valid GstMessage of type GST_MESSAGE_SEGMENT_START. |
|
format |
Result location for the format, or |
[out][allow-none] |
position |
Result location for the position, or |
[out][allow-none] |
GstMessage * gst_message_new_segment_done (GstObject *src
,GstFormat format
,gint64 position
);
Create a new segment done message. This message is posted by elements that finish playback of a segment as a result of a segment seek. This message is received by the application after all elements that posted a segment_start have posted the segment_done.
void gst_message_parse_segment_done (GstMessage *message
,GstFormat *format
,gint64 *position
);
Extracts the position and format from the segment done message.
MT safe.
message |
A valid GstMessage of type GST_MESSAGE_SEGMENT_DONE. |
|
format |
Result location for the format, or |
[out][allow-none] |
position |
Result location for the position, or |
[out][allow-none] |
GstMessage *
gst_message_new_duration_changed (GstObject *src
);
Create a new duration changed message. This message is posted by elements that know the duration of a stream when the duration changes. This message is received by bins and is used to calculate the total duration of a pipeline. Elements may post a duration message with a duration of GST_CLOCK_TIME_NONE to indicate that the duration has changed and the cached duration should be discarded. The new duration can then be retrieved via a query.
GstMessage *
gst_message_new_latency (GstObject *src
);
This message can be posted by elements when their latency requirements have changed.
GstMessage *
gst_message_new_async_start (GstObject *src
);
This message is posted by elements when they start an ASYNC state change.
GstMessage * gst_message_new_async_done (GstObject *src
,GstClockTime running_time
);
The message is posted when elements completed an ASYNC state change.
running_time
contains the time of the desired running_time when this
elements goes to PLAYING. A value of GST_CLOCK_TIME_NONE for running_time
means that the element has no clock interaction and thus doesn't care about
the running_time of the pipeline.
void gst_message_parse_async_done (GstMessage *message
,GstClockTime *running_time
);
Extract the running_time from the async_done message.
MT safe.
message |
A valid GstMessage of type GST_MESSAGE_ASYNC_DONE. |
|
running_time |
Result location for the running_time or |
[out][allow-none] |
GstMessage * gst_message_new_step_start (GstObject *src
,gboolean active
,GstFormat format
,guint64 amount
,gdouble rate
,gboolean flush
,gboolean intermediate
);
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 emitted, the application can queue a new step operation in the
element.
void gst_message_parse_step_start (GstMessage *message
,gboolean *active
,GstFormat *format
,guint64 *amount
,gdouble *rate
,gboolean *flush
,gboolean *intermediate
);
Extract the values from step_start message.
MT safe.
message |
A valid GstMessage of type GST_MESSAGE_STEP_DONE. |
|
active |
result location for the active flag. |
[out][allow-none] |
format |
result location for the format. |
[out][allow-none] |
amount |
result location for the amount. |
[out][allow-none] |
rate |
result location for the rate. |
[out][allow-none] |
flush |
result location for the flush flag. |
[out][allow-none] |
intermediate |
result location for the intermediate flag. |
[out][allow-none] |
GstMessage * gst_message_new_qos (GstObject *src
,gboolean live
,guint64 running_time
,guint64 stream_time
,guint64 timestamp
,guint64 duration
);
A QOS message is posted on the bus whenever an element decides to drop a buffer because of QoS reasons or whenever it changes its processing strategy because of QoS reasons (quality adjustments such as processing at lower accuracy).
This message can be posted by an element that performs synchronisation against the clock (live) or it could be dropped by an element that performs QoS because of QOS events received from a downstream element (!live).
running_time
, stream_time
, timestamp
, duration
should be set to the
respective running-time, stream-time, timestamp and duration of the (dropped)
buffer that generated the QoS event. Values can be left to
GST_CLOCK_TIME_NONE when unknown.
src |
The object originating the message. |
|
live |
if the message was generated by a live element |
|
running_time |
the running time of the buffer that generated the message |
|
stream_time |
the stream time of the buffer that generated the message |
|
timestamp |
the timestamps of the buffer that generated the message |
|
duration |
the duration of the buffer that generated the message |
void gst_message_set_qos_values (GstMessage *message
,gint64 jitter
,gdouble proportion
,gint quality
);
Set the QoS values that have been calculated/analysed from the QoS data
MT safe.
message |
A valid GstMessage of type GST_MESSAGE_QOS. |
|
jitter |
The difference of the running-time against the deadline. |
|
proportion |
Long term prediction of the ideal rate relative to normal rate to get optimal quality. |
|
quality |
An element dependent integer value that specifies the current quality level of the element. The default maximum quality is 1000000. |
void gst_message_set_qos_stats (GstMessage *message
,GstFormat format
,guint64 processed
,guint64 dropped
);
Set the QoS stats representing the history of the current continuous pipeline playback period.
When format
is GST_FORMAT_UNDEFINED
both dropped
and processed
are
invalid. Values of -1 for either processed
or dropped
mean unknown values.
MT safe.
message |
A valid GstMessage of type GST_MESSAGE_QOS. |
|
format |
Units of the 'processed' and 'dropped' fields. Video sinks and video filters will use GST_FORMAT_BUFFERS (frames). Audio sinks and audio filters will likely use GST_FORMAT_DEFAULT (samples). |
|
processed |
Total number of units correctly processed since the last state change to READY or a flushing operation. |
|
dropped |
Total number of units dropped since the last state change to READY or a flushing operation. |
void gst_message_parse_qos (GstMessage *message
,gboolean *live
,guint64 *running_time
,guint64 *stream_time
,guint64 *timestamp
,guint64 *duration
);
Extract the timestamps and live status from the QoS message.
The returned values give the running_time, stream_time, timestamp and duration of the dropped buffer. Values of GST_CLOCK_TIME_NONE mean unknown values.
MT safe.
message |
A valid GstMessage of type GST_MESSAGE_QOS. |
|
live |
if the message was generated by a live element. |
[out][allow-none] |
running_time |
the running time of the buffer that generated the message. |
[out][allow-none] |
stream_time |
the stream time of the buffer that generated the message. |
[out][allow-none] |
timestamp |
the timestamps of the buffer that generated the message. |
[out][allow-none] |
duration |
the duration of the buffer that generated the message. |
[out][allow-none] |
void gst_message_parse_qos_values (GstMessage *message
,gint64 *jitter
,gdouble *proportion
,gint *quality
);
Extract the QoS values that have been calculated/analysed from the QoS data
MT safe.
message |
A valid GstMessage of type GST_MESSAGE_QOS. |
|
jitter |
The difference of the running-time against the deadline. |
[out][allow-none] |
proportion |
Long term prediction of the ideal rate relative to normal rate to get optimal quality. |
[out][allow-none] |
quality |
An element dependent integer value that specifies the current quality level of the element. The default maximum quality is 1000000. |
[out][allow-none] |
void gst_message_parse_qos_stats (GstMessage *message
,GstFormat *format
,guint64 *processed
,guint64 *dropped
);
Extract the QoS stats representing the history of the current continuous pipeline playback period.
When format
is GST_FORMAT_UNDEFINED
both dropped
and processed
are
invalid. Values of -1 for either processed
or dropped
mean unknown values.
MT safe.
message |
A valid GstMessage of type GST_MESSAGE_QOS. |
|
format |
Units of the 'processed' and 'dropped' fields. Video sinks and video filters will use GST_FORMAT_BUFFERS (frames). Audio sinks and audio filters will likely use GST_FORMAT_DEFAULT (samples). |
[out][allow-none] |
processed |
Total number of units correctly processed since the last state change to READY or a flushing operation. |
[out][allow-none] |
dropped |
Total number of units dropped since the last state change to READY or a flushing operation. |
[out][allow-none] |
GstMessage * gst_message_new_toc (GstObject *src
,GstToc *toc
,gboolean updated
);
Create a new TOC message. The message is posted by elements that discovered or updated a TOC.
src |
the object originating the message. |
|
toc |
GstToc structure for the message. |
[transfer none] |
updated |
whether TOC was updated or not. |
void gst_message_parse_toc (GstMessage *message
,GstToc **toc
,gboolean *updated
);
Extract the TOC from the GstMessage. The TOC returned in the
output argument is a copy; the caller must free it with
gst_toc_unref()
when done.
MT safe.
message |
a valid GstMessage of type GST_MESSAGE_TOC. |
|
toc |
return location for the TOC. |
[out][transfer full] |
updated |
return location for the updated flag. |
[out] |
GstMessage * gst_message_new_reset_time (GstObject *src
,GstClockTime running_time
);
This message is posted when the pipeline running-time should be reset to
running_time
, like after a flushing seek.
void gst_message_parse_reset_time (GstMessage *message
,GstClockTime *running_time
);
Extract the running-time from the RESET_TIME message.
MT safe.
message |
A valid GstMessage of type GST_MESSAGE_RESET_TIME. |
|
running_time |
Result location for the running_time or
|
[out][allow-none] |
GstMessage *
gst_message_new_stream_start (GstObject *src
);
Create a new stream_start message. This message is generated and posted in the sink elements of a GstBin. The bin will only forward the STREAM_START message to the application if all sinks have posted an STREAM_START message.
void gst_message_set_group_id (GstMessage *message
,guint group_id
);
Sets the group id on the stream-start message.
All streams that have the same group id are supposed to be played together, i.e. all streams inside a container file should have the same group id but different stream ids. The group id should change each time the stream is started, resulting in different group ids each time a file is played for example.
MT safe.
Since 1.2
gboolean gst_message_parse_group_id (GstMessage *message
,guint *group_id
);
Extract the group from the STREAM_START message.
message |
A valid GstMessage of type GST_MESSAGE_STREAM_START. |
|
group_id |
Result location for the group id or
|
[out][allow-none] |
Since 1.2
GstMessage * gst_message_new_structure_change (GstObject *src
,GstStructureChangeType type
,GstElement *owner
,gboolean 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 sinkpad that unlinked or linked.
void gst_message_parse_structure_change (GstMessage *message
,GstStructureChangeType *type
,GstElement **owner
,gboolean *busy
);
Extracts the change type and completion status from the GstMessage.
MT safe.
message |
A valid GstMessage of type GST_MESSAGE_STRUCTURE_CHANGE. |
|
type |
A pointer to hold the change type. |
[out] |
owner |
The owner element of the message source. |
[out][allow-none][transfer none] |
busy |
a pointer to hold whether the change is in progress or has been completed. |
[out][allow-none] |
GstMessage * gst_message_new_request_state (GstObject *src
,GstState 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.
void gst_message_parse_request_state (GstMessage *message
,GstState *state
);
Extract the requested state from the request_state message.
MT safe.
message |
A valid GstMessage of type GST_MESSAGE_REQUEST_STATE. |
|
state |
Result location for the requested state or |
[out][allow-none] |
GstMessage * gst_message_new_stream_status (GstObject *src
,GstStreamStatusType type
,GstElement *owner
);
Create a new stream status message. This message is posted when a streaming thread is created/destroyed or when the state changed.
void gst_message_parse_stream_status (GstMessage *message
,GstStreamStatusType *type
,GstElement **owner
);
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.
message |
A valid GstMessage of type GST_MESSAGE_STREAM_STATUS. |
|
type |
A pointer to hold the status type. |
[out] |
owner |
The owner element of the message source. |
[out][transfer none] |
void gst_message_set_stream_status_object (GstMessage *message
,const GValue *object
);
Configures the object handling the streaming thread. This is usually a GstTask object but other objects might be added in the future.
message |
A valid GstMessage of type GST_MESSAGE_STREAM_STATUS. |
|
object |
the object controlling the streaming |
const GValue *
gst_message_get_stream_status_object (GstMessage *message
);
Extracts the object managing the streaming thread from message
.
GstMessage * gst_message_new_progress (GstObject *src
,GstProgressType type
,const gchar *code
,const gchar *text
);
Progress messages are posted by elements when they use an asynchronous task to perform actions triggered by a state change.
code
contains a well defined string describing the action.
test
should contain a user visible string detailing the current action.
void gst_message_parse_progress (GstMessage *message
,GstProgressType *type
,gchar **code
,gchar **text
);
Parses the progress type
, code
and text
.
message |
A valid GstMessage of type GST_MESSAGE_PROGRESS. |
|
type |
location for the type. |
[out][allow-none] |
code |
location for the code. |
[out][allow-none][transfer full] |
text |
location for the text. |
[out][allow-none][transfer full] |
GstMessage * gst_message_new_need_context (GstObject *src
,const gchar *context_type
);
This message is posted when an element needs a specific GstContext.
src |
The object originating the message. |
[transfer none] |
context_type |
The context type that is needed |
Since 1.2
gboolean gst_message_parse_context_type (GstMessage *message
,const gchar **context_type
);
Parse a context type from an existing GST_MESSAGE_NEED_CONTEXT message.
message |
a GST_MESSAGE_NEED_CONTEXT type message |
|
context_type |
the context type, or |
[out][allow-none] |
Since 1.2
GstMessage * gst_message_new_have_context (GstObject *src
,GstContext *context
);
This message is posted when an element has a new local GstContext.
src |
The object originating the message. |
[transfer none] |
context |
the context. |
[transfer full] |
Since 1.2
void gst_message_parse_have_context (GstMessage *message
,GstContext **context
);
Extract the context from the HAVE_CONTEXT message.
MT safe.
message |
A valid GstMessage of type GST_MESSAGE_HAVE_CONTEXT. |
|
context |
Result location for the
context or |
[out][transfer full][allow-none] |
Since 1.2
GstMessage * gst_message_new_device_added (GstObject *src
,GstDevice *device
);
Creates a new device-added message. The device-added message is produced by GstDeviceProvider or a GstDeviceMonitor. They announce the appearance of monitored devices.
Since 1.4
GstMessage * gst_message_new_device_removed (GstObject *src
,GstDevice *device
);
Creates a new device-removed message. The device-removed message is produced by GstDeviceProvider or a GstDeviceMonitor. They announce the disappearance of monitored devices.
Since 1.4
void gst_message_parse_device_added (GstMessage *message
,GstDevice **device
);
Parses a device-added message. The device-added message is produced by GstDeviceProvider or a GstDeviceMonitor. It announces the appearance of monitored devices.
message |
a GstMessage of type |
|
device |
A location where to store a
pointer to the new GstDevice, or |
[out][allow-none][transfer none] |
Since 1.4
void gst_message_parse_device_removed (GstMessage *message
,GstDevice **device
);
Parses a device-removed message. The device-removed message is produced by GstDeviceProvider or a GstDeviceMonitor. It announces the disappearance of monitored devices.
message |
a GstMessage of type |
|
device |
A location where to store a
pointer to the removed GstDevice, or |
[out][allow-none][transfer none] |
Since 1.4
struct GstMessage { GstMiniObject mini_object; GstMessageType type; guint64 timestamp; GstObject *src; guint32 seqnum; };
A GstMessage.
GstMiniObject |
the parent structure |
|
GstMessageType |
the GstMessageType of the message |
|
the timestamp of the message |
||
GstObject * |
the src of the message |
|
the sequence number of the message |
The different message types that are available.
an undefined message |
||
end-of-stream reached in a pipeline. The application will only receive this message in the PLAYING state and every time it sets a pipeline to PLAYING that is in the EOS state. The application can perform a flushing seek in the pipeline, which will undo the EOS state again. |
||
an error occurred. When the application receives an error message it should stop playback of the pipeline and not assume that more data will be played. |
||
a warning occurred. |
||
an info message occurred |
||
a tag was found. |
||
the pipeline is buffering. When the application receives a buffering message in the PLAYING state for a non-live pipeline it must PAUSE the pipeline until the buffering completes, when the percentage field in the message is 100%. For live pipelines, no action must be performed and the buffering percentage can be used to inform the user about the progress. |
||
a state change happened |
||
an element changed state in a streaming thread. This message is deprecated. |
||
a stepping operation finished. |
||
an element notifies its capability of providing a clock. This message is used internally and never forwarded to the application. |
||
The current clock as selected by the pipeline became unusable. The pipeline will select a new clock on the next PLAYING state change. The application should set the pipeline to PAUSED and back to PLAYING when this message is received. |
||
a new clock was selected in the pipeline. |
||
the structure of the pipeline changed. This message is used internally and never forwarded to the application. |
||
status about a stream, emitted when it starts, stops, errors, etc.. |
||
message posted by the application, possibly via an application-specific element. |
||
element-specific message, see the specific element's documentation |
||
pipeline started playback of a segment. This message is used internally and never forwarded to the application. |
||
pipeline completed playback of a segment. This
message is forwarded to the application after all elements that posted
|
||
The duration of a pipeline changed. The application can get the new duration with a duration query. |
||
Posted by elements when their latency changes. The application should recalculate and distribute a new latency. |
||
Posted by elements when they start an ASYNC GstStateChange. This message is not forwarded to the application but is used internally. |
||
Posted by elements when they complete an ASYNC GstStateChange. The application will only receive this message from the toplevel pipeline. |
||
Posted by elements when they want the pipeline to change state. This message is a suggestion to the application which can decide to perform the state change on (part of) the pipeline. |
||
A stepping operation was started. |
||
A buffer was dropped or an element changed its processing strategy for Quality of Service reasons. |
||
A progress message. |
||
A new table of contents (TOC) was found or previously found TOC was updated. |
||
Message to request resetting the pipeline's running time from the pipeline. This is an internal message which applications will likely never receive. |
||
Message indicating start of a new stream. Useful e.g. when using playbin in gapless playback mode, to get notified when the next title actually starts playing (which will be some time after the URI for the next title has been set). |
||
Message indicating that an element wants a specific context (Since 1.2) |
||
Message indicating that an element created a context (Since 1.2) |
||
Message is an extended message type (see below).
These extended message IDs can't be used directly with mask-based API
like |
||
Message indicating a GstDevice was added to a GstDeviceProvider (Since 1.4) |
||
Message indicating a GstDevice was removed from a GstDeviceProvider (Since 1.4) |
||
mask for all of the above messages. |
The type of a GST_MESSAGE_STREAM_STATUS
. The stream status messages inform the
application of new streaming threads and their status.
The type of a GST_MESSAGE_PROGRESS
. The progress messages inform the
application of the status of asynchronous tasks.