| 1 | /* GStreamer | 
|---|
| 2 | * Copyright (C) 2004 Wim Taymans <[email protected]> | 
|---|
| 3 | * | 
|---|
| 4 | * gstmessage.h: Header for GstMessage subsystem | 
|---|
| 5 | * | 
|---|
| 6 | * This library is free software; you can redistribute it and/or | 
|---|
| 7 | * modify it under the terms of the GNU Library General Public | 
|---|
| 8 | * License as published by the Free Software Foundation; either | 
|---|
| 9 | * version 2 of the License, or (at your option) any later version. | 
|---|
| 10 | * | 
|---|
| 11 | * This library is distributed in the hope that it will be useful, | 
|---|
| 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|---|
| 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|---|
| 14 | * Library General Public License for more details. | 
|---|
| 15 | * | 
|---|
| 16 | * You should have received a copy of the GNU Library General Public | 
|---|
| 17 | * License along with this library; if not, write to the | 
|---|
| 18 | * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, | 
|---|
| 19 | * Boston, MA 02110-1301, USA. | 
|---|
| 20 | */ | 
|---|
| 21 |  | 
|---|
| 22 | #ifndef __GST_MESSAGE_H__ | 
|---|
| 23 | #define __GST_MESSAGE_H__ | 
|---|
| 24 |  | 
|---|
| 25 | #include <glib.h> | 
|---|
| 26 |  | 
|---|
| 27 | G_BEGIN_DECLS | 
|---|
| 28 |  | 
|---|
| 29 | typedef struct _GstMessage GstMessage; | 
|---|
| 30 |  | 
|---|
| 31 | /** | 
|---|
| 32 | * GstMessageType: | 
|---|
| 33 | * @GST_MESSAGE_UNKNOWN: an undefined message | 
|---|
| 34 | * @GST_MESSAGE_EOS: end-of-stream reached in a pipeline. The application will | 
|---|
| 35 | * only receive this message in the PLAYING state and every time it sets a | 
|---|
| 36 | * pipeline to PLAYING that is in the EOS state. The application can perform a | 
|---|
| 37 | * flushing seek in the pipeline, which will undo the EOS state again. | 
|---|
| 38 | * @GST_MESSAGE_ERROR: an error occurred. When the application receives an error | 
|---|
| 39 | * message it should stop playback of the pipeline and not assume that more | 
|---|
| 40 | * data will be played. It is possible to specify a redirection url to the error | 
|---|
| 41 | * messages by setting a `redirect-location` field into the error message, application | 
|---|
| 42 | * or high level bins might use the information as required. | 
|---|
| 43 | * @GST_MESSAGE_WARNING: a warning occurred. | 
|---|
| 44 | * @GST_MESSAGE_INFO: an info message occurred | 
|---|
| 45 | * @GST_MESSAGE_TAG: a tag was found. | 
|---|
| 46 | * @GST_MESSAGE_BUFFERING: the pipeline is buffering. When the application | 
|---|
| 47 | * receives a buffering message in the PLAYING state for a non-live pipeline it | 
|---|
| 48 | * must PAUSE the pipeline until the buffering completes, when the percentage | 
|---|
| 49 | * field in the message is 100%. For live pipelines, no action must be | 
|---|
| 50 | * performed and the buffering percentage can be used to inform the user about | 
|---|
| 51 | * the progress. | 
|---|
| 52 | * @GST_MESSAGE_STATE_CHANGED: a state change happened | 
|---|
| 53 | * @GST_MESSAGE_STATE_DIRTY: an element changed state in a streaming thread. | 
|---|
| 54 | * This message is deprecated. | 
|---|
| 55 | * @GST_MESSAGE_STEP_DONE: a stepping operation finished. | 
|---|
| 56 | * @GST_MESSAGE_CLOCK_PROVIDE: an element notifies its capability of providing | 
|---|
| 57 | *                             a clock. This message is used internally and | 
|---|
| 58 | *                             never forwarded to the application. | 
|---|
| 59 | * @GST_MESSAGE_CLOCK_LOST: The current clock as selected by the pipeline became | 
|---|
| 60 | *                          unusable. The pipeline will select a new clock on | 
|---|
| 61 | *                          the next PLAYING state change. The application | 
|---|
| 62 | *                          should set the pipeline to PAUSED and back to | 
|---|
| 63 | *                          PLAYING when this message is received. | 
|---|
| 64 | * @GST_MESSAGE_NEW_CLOCK: a new clock was selected in the pipeline. | 
|---|
| 65 | * @GST_MESSAGE_STRUCTURE_CHANGE: the structure of the pipeline changed. This | 
|---|
| 66 | * message is used internally and never forwarded to the application. | 
|---|
| 67 | * @GST_MESSAGE_STREAM_STATUS: status about a stream, emitted when it starts, | 
|---|
| 68 | *                             stops, errors, etc.. | 
|---|
| 69 | * @GST_MESSAGE_APPLICATION: message posted by the application, possibly | 
|---|
| 70 | *                           via an application-specific element. | 
|---|
| 71 | * @GST_MESSAGE_ELEMENT: element-specific message, see the specific element's | 
|---|
| 72 | *                       documentation | 
|---|
| 73 | * @GST_MESSAGE_SEGMENT_START: pipeline started playback of a segment. This | 
|---|
| 74 | * message is used internally and never forwarded to the application. | 
|---|
| 75 | * @GST_MESSAGE_SEGMENT_DONE: pipeline completed playback of a segment. This | 
|---|
| 76 | * message is forwarded to the application after all elements that posted | 
|---|
| 77 | * @GST_MESSAGE_SEGMENT_START posted a GST_MESSAGE_SEGMENT_DONE message. | 
|---|
| 78 | * @GST_MESSAGE_DURATION_CHANGED: The duration of a pipeline changed. The | 
|---|
| 79 | * application can get the new duration with a duration query. | 
|---|
| 80 | * @GST_MESSAGE_ASYNC_START: Posted by elements when they start an ASYNC | 
|---|
| 81 | * #GstStateChange. This message is not forwarded to the application but is used | 
|---|
| 82 | * internally. | 
|---|
| 83 | * @GST_MESSAGE_ASYNC_DONE: Posted by elements when they complete an ASYNC | 
|---|
| 84 | * #GstStateChange. The application will only receive this message from the toplevel | 
|---|
| 85 | * pipeline. | 
|---|
| 86 | * @GST_MESSAGE_LATENCY: Posted by elements when their latency changes. The | 
|---|
| 87 | * application should recalculate and distribute a new latency. | 
|---|
| 88 | * @GST_MESSAGE_REQUEST_STATE: Posted by elements when they want the pipeline to | 
|---|
| 89 | * change state. This message is a suggestion to the application which can | 
|---|
| 90 | * decide to perform the state change on (part of) the pipeline. | 
|---|
| 91 | * @GST_MESSAGE_STEP_START: A stepping operation was started. | 
|---|
| 92 | * @GST_MESSAGE_QOS: A buffer was dropped or an element changed its processing | 
|---|
| 93 | * strategy for Quality of Service reasons. | 
|---|
| 94 | * @GST_MESSAGE_PROGRESS: A progress message. | 
|---|
| 95 | * @GST_MESSAGE_TOC: A new table of contents (TOC) was found or previously found TOC | 
|---|
| 96 | * was updated. | 
|---|
| 97 | * @GST_MESSAGE_RESET_TIME: Message to request resetting the pipeline's | 
|---|
| 98 | *     running time from the pipeline. This is an internal message which | 
|---|
| 99 | *     applications will likely never receive. | 
|---|
| 100 | * @GST_MESSAGE_STREAM_START: Message indicating start of a new stream. Useful | 
|---|
| 101 | *     e.g. when using playbin in gapless playback mode, to get notified when | 
|---|
| 102 | *     the next title actually starts playing (which will be some time after | 
|---|
| 103 | *     the URI for the next title has been set). | 
|---|
| 104 | * @GST_MESSAGE_NEED_CONTEXT: Message indicating that an element wants a specific context (Since: 1.2) | 
|---|
| 105 | * @GST_MESSAGE_HAVE_CONTEXT: Message indicating that an element created a context (Since: 1.2) | 
|---|
| 106 | * @GST_MESSAGE_EXTENDED: Message is an extended message type (see below). | 
|---|
| 107 | *     These extended message IDs can't be used directly with mask-based API | 
|---|
| 108 | *     like gst_bus_poll() or gst_bus_timed_pop_filtered(), but you can still | 
|---|
| 109 | *     filter for GST_MESSAGE_EXTENDED and then check the result for the | 
|---|
| 110 | *     specific type. (Since: 1.4) | 
|---|
| 111 | * @GST_MESSAGE_DEVICE_ADDED: Message indicating a #GstDevice was added to | 
|---|
| 112 | *     a #GstDeviceProvider (Since: 1.4) | 
|---|
| 113 | * @GST_MESSAGE_DEVICE_REMOVED: Message indicating a #GstDevice was removed | 
|---|
| 114 | *     from a #GstDeviceProvider (Since: 1.4) | 
|---|
| 115 | * @GST_MESSAGE_PROPERTY_NOTIFY: Message indicating a #GObject property has | 
|---|
| 116 | *     changed (Since: 1.10) | 
|---|
| 117 | * @GST_MESSAGE_STREAM_COLLECTION: Message indicating a new #GstStreamCollection | 
|---|
| 118 | *     is available (Since: 1.10) | 
|---|
| 119 | * @GST_MESSAGE_STREAMS_SELECTED: Message indicating the active selection of | 
|---|
| 120 | *     #GstStreams has changed (Since: 1.10) | 
|---|
| 121 | * @GST_MESSAGE_REDIRECT: Message indicating to request the application to | 
|---|
| 122 | *     try to play the given URL(s). Useful if for example a HTTP 302/303 | 
|---|
| 123 | *     response is received with a non-HTTP URL inside. (Since: 1.10) | 
|---|
| 124 | * @GST_MESSAGE_DEVICE_CHANGED: Message indicating a #GstDevice was changed | 
|---|
| 125 | *     a #GstDeviceProvider (Since: 1.16) | 
|---|
| 126 | * @GST_MESSAGE_INSTANT_RATE_REQUEST: Message sent by elements to request the | 
|---|
| 127 | *     running time from the pipeline when an instant rate change should | 
|---|
| 128 | *     be applied (which may be in the past when the answer arrives). (Since: 1.18) | 
|---|
| 129 | * @GST_MESSAGE_ANY: mask for all of the above messages. | 
|---|
| 130 | * | 
|---|
| 131 | * The different message types that are available. | 
|---|
| 132 | */ | 
|---|
| 133 | /* NOTE: keep in sync with quark registration in gstmessage.c | 
|---|
| 134 | * NOTE: keep GST_MESSAGE_ANY a valid gint to avoid compiler warnings. | 
|---|
| 135 | */ | 
|---|
| 136 | /* FIXME: 2.0: Make it NOT flags, just a regular 1,2,3,4.. enumeration */ | 
|---|
| 137 | /* FIXME: For GST_MESSAGE_ANY ~0 -> 0xffffffff see | 
|---|
| 138 | *        https://bugzilla.gnome.org/show_bug.cgi?id=732633 | 
|---|
| 139 | */ | 
|---|
| 140 | typedef enum | 
|---|
| 141 | { | 
|---|
| 142 | GST_MESSAGE_UNKNOWN           = 0, | 
|---|
| 143 | GST_MESSAGE_EOS               = (1 << 0), | 
|---|
| 144 | GST_MESSAGE_ERROR             = (1 << 1), | 
|---|
| 145 | GST_MESSAGE_WARNING           = (1 << 2), | 
|---|
| 146 | GST_MESSAGE_INFO              = (1 << 3), | 
|---|
| 147 | GST_MESSAGE_TAG               = (1 << 4), | 
|---|
| 148 | GST_MESSAGE_BUFFERING         = (1 << 5), | 
|---|
| 149 | GST_MESSAGE_STATE_CHANGED     = (1 << 6), | 
|---|
| 150 | GST_MESSAGE_STATE_DIRTY       = (1 << 7), | 
|---|
| 151 | GST_MESSAGE_STEP_DONE         = (1 << 8), | 
|---|
| 152 | GST_MESSAGE_CLOCK_PROVIDE     = (1 << 9), | 
|---|
| 153 | GST_MESSAGE_CLOCK_LOST        = (1 << 10), | 
|---|
| 154 | GST_MESSAGE_NEW_CLOCK         = (1 << 11), | 
|---|
| 155 | GST_MESSAGE_STRUCTURE_CHANGE  = (1 << 12), | 
|---|
| 156 | GST_MESSAGE_STREAM_STATUS     = (1 << 13), | 
|---|
| 157 | GST_MESSAGE_APPLICATION       = (1 << 14), | 
|---|
| 158 | GST_MESSAGE_ELEMENT           = (1 << 15), | 
|---|
| 159 | GST_MESSAGE_SEGMENT_START     = (1 << 16), | 
|---|
| 160 | GST_MESSAGE_SEGMENT_DONE      = (1 << 17), | 
|---|
| 161 | GST_MESSAGE_DURATION_CHANGED  = (1 << 18), | 
|---|
| 162 | GST_MESSAGE_LATENCY           = (1 << 19), | 
|---|
| 163 | GST_MESSAGE_ASYNC_START       = (1 << 20), | 
|---|
| 164 | GST_MESSAGE_ASYNC_DONE        = (1 << 21), | 
|---|
| 165 | GST_MESSAGE_REQUEST_STATE     = (1 << 22), | 
|---|
| 166 | GST_MESSAGE_STEP_START        = (1 << 23), | 
|---|
| 167 | GST_MESSAGE_QOS               = (1 << 24), | 
|---|
| 168 | GST_MESSAGE_PROGRESS          = (1 << 25), | 
|---|
| 169 | GST_MESSAGE_TOC               = (1 << 26), | 
|---|
| 170 | GST_MESSAGE_RESET_TIME        = (1 << 27), | 
|---|
| 171 | GST_MESSAGE_STREAM_START      = (1 << 28), | 
|---|
| 172 | GST_MESSAGE_NEED_CONTEXT      = (1 << 29), | 
|---|
| 173 | GST_MESSAGE_HAVE_CONTEXT      = (1 << 30), | 
|---|
| 174 | GST_MESSAGE_EXTENDED          = (gint) (1u << 31), | 
|---|
| 175 | GST_MESSAGE_DEVICE_ADDED      = GST_MESSAGE_EXTENDED + 1, | 
|---|
| 176 | GST_MESSAGE_DEVICE_REMOVED    = GST_MESSAGE_EXTENDED + 2, | 
|---|
| 177 | GST_MESSAGE_PROPERTY_NOTIFY   = GST_MESSAGE_EXTENDED + 3, | 
|---|
| 178 | GST_MESSAGE_STREAM_COLLECTION = GST_MESSAGE_EXTENDED + 4, | 
|---|
| 179 | GST_MESSAGE_STREAMS_SELECTED  = GST_MESSAGE_EXTENDED + 5, | 
|---|
| 180 | GST_MESSAGE_REDIRECT          = GST_MESSAGE_EXTENDED + 6, | 
|---|
| 181 | GST_MESSAGE_DEVICE_CHANGED    = GST_MESSAGE_EXTENDED + 7, | 
|---|
| 182 | GST_MESSAGE_INSTANT_RATE_REQUEST = GST_MESSAGE_EXTENDED + 8, | 
|---|
| 183 | GST_MESSAGE_ANY               = (gint) (0xffffffff) | 
|---|
| 184 | } GstMessageType; | 
|---|
| 185 |  | 
|---|
| 186 | #include <gst/gstminiobject.h> | 
|---|
| 187 | #include <gst/gstobject.h> | 
|---|
| 188 | #include <gst/gstelement.h> | 
|---|
| 189 | #include <gst/gsttaglist.h> | 
|---|
| 190 | #include <gst/gststructure.h> | 
|---|
| 191 | #include <gst/gstquery.h> | 
|---|
| 192 | #include <gst/gsttoc.h> | 
|---|
| 193 | #include <gst/gstdevice.h> | 
|---|
| 194 | #include <gst/gststreams.h> | 
|---|
| 195 | #include <gst/gststreamcollection.h> | 
|---|
| 196 |  | 
|---|
| 197 | GST_API GType _gst_message_type; | 
|---|
| 198 |  | 
|---|
| 199 | #define GST_TYPE_MESSAGE                         (_gst_message_type) | 
|---|
| 200 | #define GST_IS_MESSAGE(obj)                      (GST_IS_MINI_OBJECT_TYPE (obj, GST_TYPE_MESSAGE)) | 
|---|
| 201 | #define GST_MESSAGE_CAST(obj)                    ((GstMessage*)(obj)) | 
|---|
| 202 | #define GST_MESSAGE(obj)                         (GST_MESSAGE_CAST(obj)) | 
|---|
| 203 |  | 
|---|
| 204 | /* the lock is used to handle the synchronous handling of messages, | 
|---|
| 205 | * the emitting thread is blocked until the handling thread processed | 
|---|
| 206 | * the message using this mutex/cond pair */ | 
|---|
| 207 | #define GST_MESSAGE_GET_LOCK(message)   (&GST_MESSAGE_CAST(message)->lock) | 
|---|
| 208 | #define GST_MESSAGE_LOCK(message)       g_mutex_lock(GST_MESSAGE_GET_LOCK(message)) | 
|---|
| 209 | #define GST_MESSAGE_UNLOCK(message)     g_mutex_unlock(GST_MESSAGE_GET_LOCK(message)) | 
|---|
| 210 | #define GST_MESSAGE_GET_COND(message)   (&GST_MESSAGE_CAST(message)->cond) | 
|---|
| 211 | #define GST_MESSAGE_WAIT(message)       g_cond_wait(GST_MESSAGE_GET_COND(message),GST_MESSAGE_GET_LOCK(message)) | 
|---|
| 212 | #define GST_MESSAGE_SIGNAL(message)     g_cond_signal(GST_MESSAGE_GET_COND(message)) | 
|---|
| 213 |  | 
|---|
| 214 | /** | 
|---|
| 215 | * GST_MESSAGE_TYPE: | 
|---|
| 216 | * @message: a #GstMessage | 
|---|
| 217 | * | 
|---|
| 218 | * Get the #GstMessageType of @message. | 
|---|
| 219 | */ | 
|---|
| 220 | #define GST_MESSAGE_TYPE(message)       (GST_MESSAGE_CAST(message)->type) | 
|---|
| 221 | /** | 
|---|
| 222 | * GST_MESSAGE_TYPE_IS_EXTENDED: | 
|---|
| 223 | * @message: a #GstMessage | 
|---|
| 224 | * | 
|---|
| 225 | * Check if the message is in the extended message group | 
|---|
| 226 | * Since: 1.4 | 
|---|
| 227 | */ | 
|---|
| 228 | #define GST_MESSAGE_TYPE_IS_EXTENDED(message)       (!!(GST_MESSAGE_CAST(message)->type & GST_MESSAGE_EXTENDED)) | 
|---|
| 229 |  | 
|---|
| 230 | /** | 
|---|
| 231 | * GST_MESSAGE_TYPE_NAME: | 
|---|
| 232 | * @message: a #GstMessage | 
|---|
| 233 | * | 
|---|
| 234 | * Get a constant string representation of the #GstMessageType of @message. | 
|---|
| 235 | */ | 
|---|
| 236 | #define GST_MESSAGE_TYPE_NAME(message)  gst_message_type_get_name(GST_MESSAGE_TYPE(message)) | 
|---|
| 237 | /** | 
|---|
| 238 | * GST_MESSAGE_TIMESTAMP: | 
|---|
| 239 | * @message: a #GstMessage | 
|---|
| 240 | * | 
|---|
| 241 | * Get the timestamp of @message. This is the timestamp when the message | 
|---|
| 242 | * was created. | 
|---|
| 243 | */ | 
|---|
| 244 | #define GST_MESSAGE_TIMESTAMP(message)  (GST_MESSAGE_CAST(message)->timestamp) | 
|---|
| 245 | /** | 
|---|
| 246 | * GST_MESSAGE_SRC: | 
|---|
| 247 | * @message: a #GstMessage | 
|---|
| 248 | * | 
|---|
| 249 | * Get the object that posted @message. | 
|---|
| 250 | */ | 
|---|
| 251 | #define GST_MESSAGE_SRC(message)        (GST_MESSAGE_CAST(message)->src) | 
|---|
| 252 |  | 
|---|
| 253 | /** | 
|---|
| 254 | * GST_MESSAGE_SEQNUM: | 
|---|
| 255 | * @message: a #GstMessage | 
|---|
| 256 | * | 
|---|
| 257 | * Get the sequence number of @message. | 
|---|
| 258 | */ | 
|---|
| 259 | #define GST_MESSAGE_SEQNUM(message)     (GST_MESSAGE_CAST(message)->seqnum) | 
|---|
| 260 |  | 
|---|
| 261 | /** | 
|---|
| 262 | * GST_MESSAGE_SRC_NAME: | 
|---|
| 263 | * @message: a #GstMessage | 
|---|
| 264 | * | 
|---|
| 265 | * Get the name of the object that posted @message. Returns "(NULL)" if | 
|---|
| 266 | * the message has no source object set. | 
|---|
| 267 | */ | 
|---|
| 268 | #define GST_MESSAGE_SRC_NAME(message)   (GST_MESSAGE_SRC(message) ? \ | 
|---|
| 269 | GST_OBJECT_NAME (GST_MESSAGE_SRC(message)) : "(NULL)") | 
|---|
| 270 |  | 
|---|
| 271 | /** | 
|---|
| 272 | * GstStructureChangeType: | 
|---|
| 273 | * @GST_STRUCTURE_CHANGE_TYPE_PAD_LINK: Pad linking is starting or done. | 
|---|
| 274 | * @GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK: Pad unlinking is starting or done. | 
|---|
| 275 | * | 
|---|
| 276 | * The type of a %GST_MESSAGE_STRUCTURE_CHANGE. | 
|---|
| 277 | */ | 
|---|
| 278 | typedef enum { | 
|---|
| 279 | GST_STRUCTURE_CHANGE_TYPE_PAD_LINK   = 0, | 
|---|
| 280 | GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK = 1 | 
|---|
| 281 | } GstStructureChangeType; | 
|---|
| 282 |  | 
|---|
| 283 | /** | 
|---|
| 284 | * GstStreamStatusType: | 
|---|
| 285 | * @GST_STREAM_STATUS_TYPE_CREATE: A new thread need to be created. | 
|---|
| 286 | * @GST_STREAM_STATUS_TYPE_ENTER: a thread entered its loop function | 
|---|
| 287 | * @GST_STREAM_STATUS_TYPE_LEAVE: a thread left its loop function | 
|---|
| 288 | * @GST_STREAM_STATUS_TYPE_DESTROY: a thread is destroyed | 
|---|
| 289 | * @GST_STREAM_STATUS_TYPE_START: a thread is started | 
|---|
| 290 | * @GST_STREAM_STATUS_TYPE_PAUSE: a thread is paused | 
|---|
| 291 | * @GST_STREAM_STATUS_TYPE_STOP: a thread is stopped | 
|---|
| 292 | * | 
|---|
| 293 | * The type of a %GST_MESSAGE_STREAM_STATUS. The stream status messages inform the | 
|---|
| 294 | * application of new streaming threads and their status. | 
|---|
| 295 | */ | 
|---|
| 296 | typedef enum { | 
|---|
| 297 | GST_STREAM_STATUS_TYPE_CREATE   = 0, | 
|---|
| 298 | GST_STREAM_STATUS_TYPE_ENTER    = 1, | 
|---|
| 299 | GST_STREAM_STATUS_TYPE_LEAVE    = 2, | 
|---|
| 300 | GST_STREAM_STATUS_TYPE_DESTROY  = 3, | 
|---|
| 301 |  | 
|---|
| 302 | GST_STREAM_STATUS_TYPE_START    = 8, | 
|---|
| 303 | GST_STREAM_STATUS_TYPE_PAUSE    = 9, | 
|---|
| 304 | GST_STREAM_STATUS_TYPE_STOP     = 10 | 
|---|
| 305 | } GstStreamStatusType; | 
|---|
| 306 |  | 
|---|
| 307 | /** | 
|---|
| 308 | * GstProgressType: | 
|---|
| 309 | * @GST_PROGRESS_TYPE_START: A new task started. | 
|---|
| 310 | * @GST_PROGRESS_TYPE_CONTINUE: A task completed and a new one continues. | 
|---|
| 311 | * @GST_PROGRESS_TYPE_COMPLETE: A task completed. | 
|---|
| 312 | * @GST_PROGRESS_TYPE_CANCELED: A task was canceled. | 
|---|
| 313 | * @GST_PROGRESS_TYPE_ERROR: A task caused an error. An error message is also | 
|---|
| 314 | *          posted on the bus. | 
|---|
| 315 | * | 
|---|
| 316 | * The type of a %GST_MESSAGE_PROGRESS. The progress messages inform the | 
|---|
| 317 | * application of the status of asynchronous tasks. | 
|---|
| 318 | */ | 
|---|
| 319 | typedef enum { | 
|---|
| 320 | GST_PROGRESS_TYPE_START    = 0, | 
|---|
| 321 | GST_PROGRESS_TYPE_CONTINUE = 1, | 
|---|
| 322 | GST_PROGRESS_TYPE_COMPLETE = 2, | 
|---|
| 323 | GST_PROGRESS_TYPE_CANCELED = 3, | 
|---|
| 324 | GST_PROGRESS_TYPE_ERROR    = 4 | 
|---|
| 325 | } GstProgressType; | 
|---|
| 326 |  | 
|---|
| 327 | /** | 
|---|
| 328 | * GstMessage: | 
|---|
| 329 | * @mini_object: the parent structure | 
|---|
| 330 | * @type: the #GstMessageType of the message | 
|---|
| 331 | * @timestamp: the timestamp of the message | 
|---|
| 332 | * @src: the src of the message | 
|---|
| 333 | * @seqnum: the sequence number of the message | 
|---|
| 334 | * | 
|---|
| 335 | * A #GstMessage. | 
|---|
| 336 | */ | 
|---|
| 337 | struct _GstMessage | 
|---|
| 338 | { | 
|---|
| 339 | GstMiniObject   mini_object; | 
|---|
| 340 |  | 
|---|
| 341 | /*< public > *//* with COW */ | 
|---|
| 342 | GstMessageType  type; | 
|---|
| 343 | guint64         timestamp; | 
|---|
| 344 | GstObject      *src; | 
|---|
| 345 | guint32         seqnum; | 
|---|
| 346 |  | 
|---|
| 347 | /*< private >*//* with MESSAGE_LOCK */ | 
|---|
| 348 | GMutex          lock;                 /* lock and cond for async delivery */ | 
|---|
| 349 | GCond           cond; | 
|---|
| 350 | }; | 
|---|
| 351 |  | 
|---|
| 352 | #include <gst/gstquery.h> | 
|---|
| 353 |  | 
|---|
| 354 | GST_API | 
|---|
| 355 | GType           gst_message_get_type            (void); | 
|---|
| 356 |  | 
|---|
| 357 | GST_API | 
|---|
| 358 | const gchar*    gst_message_type_get_name       (GstMessageType type); | 
|---|
| 359 |  | 
|---|
| 360 | GST_API | 
|---|
| 361 | GQuark          gst_message_type_to_quark       (GstMessageType type); | 
|---|
| 362 |  | 
|---|
| 363 | #ifndef GST_DISABLE_MINIOBJECT_INLINE_FUNCTIONS | 
|---|
| 364 | /* refcounting */ | 
|---|
| 365 | static inline GstMessage * | 
|---|
| 366 | gst_message_ref (GstMessage * msg) | 
|---|
| 367 | { | 
|---|
| 368 | return (GstMessage *) gst_mini_object_ref (GST_MINI_OBJECT_CAST (msg)); | 
|---|
| 369 | } | 
|---|
| 370 |  | 
|---|
| 371 | static inline void | 
|---|
| 372 | gst_message_unref (GstMessage * msg) | 
|---|
| 373 | { | 
|---|
| 374 | gst_mini_object_unref (GST_MINI_OBJECT_CAST (msg)); | 
|---|
| 375 | } | 
|---|
| 376 |  | 
|---|
| 377 | static inline void | 
|---|
| 378 | gst_clear_message (GstMessage ** msg_ptr) | 
|---|
| 379 | { | 
|---|
| 380 | gst_clear_mini_object ((GstMiniObject **) msg_ptr); | 
|---|
| 381 | } | 
|---|
| 382 |  | 
|---|
| 383 | /* copy message */ | 
|---|
| 384 | static inline GstMessage * gst_message_copy (const GstMessage * msg); | 
|---|
| 385 | static inline GstMessage * | 
|---|
| 386 | gst_message_copy (const GstMessage * msg) | 
|---|
| 387 | { | 
|---|
| 388 | return GST_MESSAGE_CAST (gst_mini_object_copy (GST_MINI_OBJECT_CONST_CAST (msg))); | 
|---|
| 389 | } | 
|---|
| 390 | #else /* GST_DISABLE_MINIOBJECT_INLINE_FUNCTIONS */ | 
|---|
| 391 | GST_API | 
|---|
| 392 | GstMessage *  gst_message_ref   (GstMessage * msg); | 
|---|
| 393 |  | 
|---|
| 394 | GST_API | 
|---|
| 395 | void          gst_message_unref (GstMessage * msg); | 
|---|
| 396 |  | 
|---|
| 397 | GST_API | 
|---|
| 398 | void          gst_clear_message (GstMessage ** msg_ptr); | 
|---|
| 399 |  | 
|---|
| 400 | GST_API | 
|---|
| 401 | GstMessage *  gst_message_copy  (const GstMessage * msg); | 
|---|
| 402 | #endif /* GST_DISABLE_MINIOBJECT_INLINE_FUNCTIONS */ | 
|---|
| 403 |  | 
|---|
| 404 | /** | 
|---|
| 405 | * gst_message_is_writable: | 
|---|
| 406 | * @msg: a #GstMessage | 
|---|
| 407 | * | 
|---|
| 408 | * Tests if you can safely write into a message's structure or validly | 
|---|
| 409 | * modify the seqnum and timestamp fields. | 
|---|
| 410 | */ | 
|---|
| 411 | #define         gst_message_is_writable(msg)     gst_mini_object_is_writable (GST_MINI_OBJECT_CAST (msg)) | 
|---|
| 412 | /** | 
|---|
| 413 | * gst_message_make_writable: | 
|---|
| 414 | * @msg: (transfer full): the message to make writable | 
|---|
| 415 | * | 
|---|
| 416 | * Checks if a message is writable. If not, a writable copy is made and | 
|---|
| 417 | * returned. | 
|---|
| 418 | * | 
|---|
| 419 | * Returns: (transfer full): a message (possibly a duplicate) that is writable. | 
|---|
| 420 | * | 
|---|
| 421 | * MT safe | 
|---|
| 422 | */ | 
|---|
| 423 | #define         gst_message_make_writable(msg)  GST_MESSAGE_CAST (gst_mini_object_make_writable (GST_MINI_OBJECT_CAST (msg))) | 
|---|
| 424 |  | 
|---|
| 425 | #ifndef GST_DISABLE_MINIOBJECT_INLINE_FUNCTIONS | 
|---|
| 426 | static inline gboolean gst_message_replace (GstMessage **old_message, GstMessage *new_message); | 
|---|
| 427 | static inline gboolean | 
|---|
| 428 | gst_message_replace (GstMessage **old_message, GstMessage *new_message) | 
|---|
| 429 | { | 
|---|
| 430 | return gst_mini_object_replace (olddata: (GstMiniObject **) old_message, newdata: (GstMiniObject *) new_message); | 
|---|
| 431 | } | 
|---|
| 432 |  | 
|---|
| 433 | static inline gboolean | 
|---|
| 434 | gst_message_take (GstMessage **old_message, GstMessage *new_message) | 
|---|
| 435 | { | 
|---|
| 436 | return gst_mini_object_take (olddata: (GstMiniObject **) old_message, | 
|---|
| 437 | newdata: (GstMiniObject *) new_message); | 
|---|
| 438 | } | 
|---|
| 439 | #else /* GST_DISABLE_MINIOBJECT_INLINE_FUNCTIONS */ | 
|---|
| 440 | GST_API | 
|---|
| 441 | gboolean  gst_message_replace                   (GstMessage ** old_message, | 
|---|
| 442 | GstMessage * new_message); | 
|---|
| 443 |  | 
|---|
| 444 | GST_API | 
|---|
| 445 | gboolean  gst_message_take                      (GstMessage ** old_message, | 
|---|
| 446 | GstMessage * new_message); | 
|---|
| 447 | #endif /* GST_DISABLE_MINIOBJECT_INLINE_FUNCTIONS */ | 
|---|
| 448 |  | 
|---|
| 449 | /* custom messages */ | 
|---|
| 450 |  | 
|---|
| 451 | GST_API | 
|---|
| 452 | GstMessage *    gst_message_new_custom          (GstMessageType type, | 
|---|
| 453 | GstObject    * src, | 
|---|
| 454 | GstStructure * structure) G_GNUC_MALLOC; | 
|---|
| 455 | GST_API | 
|---|
| 456 | const GstStructure * | 
|---|
| 457 | gst_message_get_structure       (GstMessage *message); | 
|---|
| 458 |  | 
|---|
| 459 | GST_API | 
|---|
| 460 | GstStructure *  gst_message_writable_structure  (GstMessage *message); | 
|---|
| 461 |  | 
|---|
| 462 | GST_API | 
|---|
| 463 | gboolean        gst_message_has_name            (GstMessage *message, const gchar *name); | 
|---|
| 464 |  | 
|---|
| 465 | /* identifiers for events and messages */ | 
|---|
| 466 |  | 
|---|
| 467 | GST_API | 
|---|
| 468 | guint32         gst_message_get_seqnum          (GstMessage *message); | 
|---|
| 469 |  | 
|---|
| 470 | GST_API | 
|---|
| 471 | void            gst_message_set_seqnum          (GstMessage *message, guint32 seqnum); | 
|---|
| 472 |  | 
|---|
| 473 | /* EOS */ | 
|---|
| 474 |  | 
|---|
| 475 | GST_API | 
|---|
| 476 | GstMessage *    gst_message_new_eos             (GstObject * src) G_GNUC_MALLOC; | 
|---|
| 477 |  | 
|---|
| 478 | /* ERROR */ | 
|---|
| 479 |  | 
|---|
| 480 | GST_API | 
|---|
| 481 | GstMessage *    gst_message_new_error           (GstObject * src, GError * error, const gchar * debug) G_GNUC_MALLOC; | 
|---|
| 482 |  | 
|---|
| 483 | GST_API | 
|---|
| 484 | GstMessage *    gst_message_new_error_with_details (GstObject * src, GError * error, const gchar * debug, GstStructure * details) G_GNUC_MALLOC; | 
|---|
| 485 |  | 
|---|
| 486 | GST_API | 
|---|
| 487 | void            gst_message_parse_error         (GstMessage *message, GError **gerror, gchar **debug); | 
|---|
| 488 |  | 
|---|
| 489 | GST_API | 
|---|
| 490 | void            gst_message_parse_error_details (GstMessage *message, const GstStructure **structure); | 
|---|
| 491 |  | 
|---|
| 492 | /* WARNING */ | 
|---|
| 493 |  | 
|---|
| 494 | GST_API | 
|---|
| 495 | GstMessage *    gst_message_new_warning         (GstObject * src, GError * error, const gchar * debug) G_GNUC_MALLOC; | 
|---|
| 496 |  | 
|---|
| 497 | GST_API | 
|---|
| 498 | GstMessage *    gst_message_new_warning_with_details (GstObject * src, GError * error, const gchar * debug, GstStructure * details) G_GNUC_MALLOC; | 
|---|
| 499 |  | 
|---|
| 500 | GST_API | 
|---|
| 501 | void            gst_message_parse_warning       (GstMessage *message, GError **gerror, gchar **debug); | 
|---|
| 502 |  | 
|---|
| 503 | GST_API | 
|---|
| 504 | void            gst_message_parse_warning_details (GstMessage *message, const GstStructure **structure); | 
|---|
| 505 |  | 
|---|
| 506 | /* INFO */ | 
|---|
| 507 |  | 
|---|
| 508 | GST_API | 
|---|
| 509 | GstMessage *    gst_message_new_info            (GstObject * src, GError * error, const gchar * debug) G_GNUC_MALLOC; | 
|---|
| 510 |  | 
|---|
| 511 | GST_API | 
|---|
| 512 | GstMessage *    gst_message_new_info_with_details (GstObject * src, GError * error, const gchar * debug, GstStructure * details) G_GNUC_MALLOC; | 
|---|
| 513 |  | 
|---|
| 514 | GST_API | 
|---|
| 515 | void            gst_message_parse_info          (GstMessage *message, GError **gerror, gchar **debug); | 
|---|
| 516 |  | 
|---|
| 517 | GST_API | 
|---|
| 518 | void            gst_message_parse_info_details  (GstMessage *message, const GstStructure **structure); | 
|---|
| 519 |  | 
|---|
| 520 | /* TAG */ | 
|---|
| 521 |  | 
|---|
| 522 | GST_API | 
|---|
| 523 | GstMessage *    gst_message_new_tag             (GstObject * src, GstTagList * tag_list) G_GNUC_MALLOC; | 
|---|
| 524 |  | 
|---|
| 525 | GST_API | 
|---|
| 526 | void            gst_message_parse_tag           (GstMessage *message, GstTagList **tag_list); | 
|---|
| 527 |  | 
|---|
| 528 | /* BUFFERING */ | 
|---|
| 529 |  | 
|---|
| 530 | GST_API | 
|---|
| 531 | GstMessage *    gst_message_new_buffering         (GstObject * src, gint percent) G_GNUC_MALLOC; | 
|---|
| 532 |  | 
|---|
| 533 | GST_API | 
|---|
| 534 | void            gst_message_parse_buffering       (GstMessage *message, gint *percent); | 
|---|
| 535 |  | 
|---|
| 536 | GST_API | 
|---|
| 537 | void            gst_message_set_buffering_stats   (GstMessage *message, GstBufferingMode mode, | 
|---|
| 538 | gint avg_in, gint avg_out, | 
|---|
| 539 | gint64 buffering_left); | 
|---|
| 540 | GST_API | 
|---|
| 541 | void            gst_message_parse_buffering_stats (GstMessage *message, GstBufferingMode *mode, | 
|---|
| 542 | gint *avg_in, gint *avg_out, | 
|---|
| 543 | gint64 *buffering_left); | 
|---|
| 544 |  | 
|---|
| 545 | /* STATE_CHANGED */ | 
|---|
| 546 |  | 
|---|
| 547 | GST_API | 
|---|
| 548 | GstMessage *    gst_message_new_state_changed   (GstObject * src, GstState oldstate, | 
|---|
| 549 | GstState newstate, GstState pending) G_GNUC_MALLOC; | 
|---|
| 550 | GST_API | 
|---|
| 551 | void            gst_message_parse_state_changed (GstMessage *message, GstState *oldstate, | 
|---|
| 552 | GstState *newstate, GstState *pending); | 
|---|
| 553 |  | 
|---|
| 554 | /* STATE_DIRTY */ | 
|---|
| 555 |  | 
|---|
| 556 | GST_API | 
|---|
| 557 | GstMessage *    gst_message_new_state_dirty     (GstObject * src) G_GNUC_MALLOC; | 
|---|
| 558 |  | 
|---|
| 559 | /* STEP_DONE */ | 
|---|
| 560 |  | 
|---|
| 561 | GST_API | 
|---|
| 562 | GstMessage *    gst_message_new_step_done       (GstObject * src, GstFormat format, guint64 amount, | 
|---|
| 563 | gdouble rate, gboolean flush, gboolean intermediate, | 
|---|
| 564 | guint64 duration, gboolean eos) G_GNUC_MALLOC; | 
|---|
| 565 | GST_API | 
|---|
| 566 | void            gst_message_parse_step_done     (GstMessage * message, GstFormat *format, guint64 *amount, | 
|---|
| 567 | gdouble *rate, gboolean *flush, gboolean *intermediate, | 
|---|
| 568 | guint64 *duration, gboolean *eos); | 
|---|
| 569 | /* CLOCK_PROVIDE */ | 
|---|
| 570 |  | 
|---|
| 571 | GST_API | 
|---|
| 572 | GstMessage *    gst_message_new_clock_provide   (GstObject * src, GstClock *clock, gboolean ready) G_GNUC_MALLOC; | 
|---|
| 573 |  | 
|---|
| 574 | GST_API | 
|---|
| 575 | void            gst_message_parse_clock_provide (GstMessage *message, GstClock **clock, | 
|---|
| 576 | gboolean *ready); | 
|---|
| 577 |  | 
|---|
| 578 | /* CLOCK_LOST */ | 
|---|
| 579 |  | 
|---|
| 580 | GST_API | 
|---|
| 581 | GstMessage *    gst_message_new_clock_lost      (GstObject * src, GstClock *clock) G_GNUC_MALLOC; | 
|---|
| 582 |  | 
|---|
| 583 | GST_API | 
|---|
| 584 | void            gst_message_parse_clock_lost    (GstMessage *message, GstClock **clock); | 
|---|
| 585 |  | 
|---|
| 586 | /* NEW_CLOCK */ | 
|---|
| 587 |  | 
|---|
| 588 | GST_API | 
|---|
| 589 | GstMessage *    gst_message_new_new_clock       (GstObject * src, GstClock *clock) G_GNUC_MALLOC; | 
|---|
| 590 |  | 
|---|
| 591 | GST_API | 
|---|
| 592 | void            gst_message_parse_new_clock     (GstMessage *message, GstClock **clock); | 
|---|
| 593 |  | 
|---|
| 594 | /* APPLICATION */ | 
|---|
| 595 |  | 
|---|
| 596 | GST_API | 
|---|
| 597 | GstMessage *    gst_message_new_application     (GstObject * src, GstStructure * structure) G_GNUC_MALLOC; | 
|---|
| 598 |  | 
|---|
| 599 | /* ELEMENT */ | 
|---|
| 600 |  | 
|---|
| 601 | GST_API | 
|---|
| 602 | GstMessage *    gst_message_new_element         (GstObject * src, GstStructure * structure) G_GNUC_MALLOC; | 
|---|
| 603 |  | 
|---|
| 604 | /* SEGMENT_START */ | 
|---|
| 605 |  | 
|---|
| 606 | GST_API | 
|---|
| 607 | GstMessage *    gst_message_new_segment_start   (GstObject * src, GstFormat format, gint64 position) G_GNUC_MALLOC; | 
|---|
| 608 |  | 
|---|
| 609 | GST_API | 
|---|
| 610 | void            gst_message_parse_segment_start (GstMessage *message, GstFormat *format, | 
|---|
| 611 | gint64 *position); | 
|---|
| 612 |  | 
|---|
| 613 | /* SEGMENT_DONE */ | 
|---|
| 614 |  | 
|---|
| 615 | GST_API | 
|---|
| 616 | GstMessage *    gst_message_new_segment_done    (GstObject * src, GstFormat format, gint64 position) G_GNUC_MALLOC; | 
|---|
| 617 |  | 
|---|
| 618 | GST_API | 
|---|
| 619 | void            gst_message_parse_segment_done  (GstMessage *message, GstFormat *format, | 
|---|
| 620 | gint64 *position); | 
|---|
| 621 |  | 
|---|
| 622 | /* DURATION_CHANGED */ | 
|---|
| 623 |  | 
|---|
| 624 | GST_API | 
|---|
| 625 | GstMessage *    gst_message_new_duration_changed (GstObject * src) G_GNUC_MALLOC; | 
|---|
| 626 |  | 
|---|
| 627 | /* LATENCY */ | 
|---|
| 628 |  | 
|---|
| 629 | GST_API | 
|---|
| 630 | GstMessage *    gst_message_new_latency         (GstObject * src) G_GNUC_MALLOC; | 
|---|
| 631 |  | 
|---|
| 632 | /* ASYNC_START */ | 
|---|
| 633 |  | 
|---|
| 634 | GST_API | 
|---|
| 635 | GstMessage *    gst_message_new_async_start     (GstObject * src) G_GNUC_MALLOC; | 
|---|
| 636 |  | 
|---|
| 637 | /* ASYNC_DONE */ | 
|---|
| 638 |  | 
|---|
| 639 | GST_API | 
|---|
| 640 | GstMessage *    gst_message_new_async_done      (GstObject * src, GstClockTime running_time) G_GNUC_MALLOC; | 
|---|
| 641 |  | 
|---|
| 642 | GST_API | 
|---|
| 643 | void            gst_message_parse_async_done    (GstMessage *message, GstClockTime *running_time); | 
|---|
| 644 |  | 
|---|
| 645 | /* STRUCTURE CHANGE */ | 
|---|
| 646 |  | 
|---|
| 647 | GST_API | 
|---|
| 648 | GstMessage *    gst_message_new_structure_change   (GstObject * src, GstStructureChangeType type, | 
|---|
| 649 | GstElement *owner, gboolean busy) G_GNUC_MALLOC; | 
|---|
| 650 | GST_API | 
|---|
| 651 | void            gst_message_parse_structure_change (GstMessage *message, GstStructureChangeType *type, | 
|---|
| 652 | GstElement **owner, gboolean *busy); | 
|---|
| 653 |  | 
|---|
| 654 | /* STREAM STATUS */ | 
|---|
| 655 |  | 
|---|
| 656 | GST_API | 
|---|
| 657 | GstMessage *    gst_message_new_stream_status        (GstObject * src, GstStreamStatusType type, | 
|---|
| 658 | GstElement *owner) G_GNUC_MALLOC; | 
|---|
| 659 | GST_API | 
|---|
| 660 | void            gst_message_parse_stream_status      (GstMessage *message, GstStreamStatusType *type, | 
|---|
| 661 | GstElement **owner); | 
|---|
| 662 | GST_API | 
|---|
| 663 | void            gst_message_set_stream_status_object (GstMessage *message, const GValue *object); | 
|---|
| 664 |  | 
|---|
| 665 | GST_API | 
|---|
| 666 | const GValue *  gst_message_get_stream_status_object (GstMessage *message); | 
|---|
| 667 |  | 
|---|
| 668 | /* REQUEST_STATE */ | 
|---|
| 669 |  | 
|---|
| 670 | GST_API | 
|---|
| 671 | GstMessage *    gst_message_new_request_state   (GstObject * src, GstState state) G_GNUC_MALLOC; | 
|---|
| 672 |  | 
|---|
| 673 | GST_API | 
|---|
| 674 | void            gst_message_parse_request_state (GstMessage * message, GstState *state); | 
|---|
| 675 |  | 
|---|
| 676 | /* STEP_START */ | 
|---|
| 677 |  | 
|---|
| 678 | GST_API | 
|---|
| 679 | GstMessage *    gst_message_new_step_start      (GstObject * src, gboolean active, GstFormat format, | 
|---|
| 680 | guint64 amount, gdouble rate, gboolean flush, | 
|---|
| 681 | gboolean intermediate) G_GNUC_MALLOC; | 
|---|
| 682 | GST_API | 
|---|
| 683 | void            gst_message_parse_step_start    (GstMessage * message, gboolean *active, GstFormat *format, | 
|---|
| 684 | guint64 *amount, gdouble *rate, gboolean *flush, | 
|---|
| 685 | gboolean *intermediate); | 
|---|
| 686 |  | 
|---|
| 687 | /* QOS */ | 
|---|
| 688 |  | 
|---|
| 689 | GST_API | 
|---|
| 690 | GstMessage *    gst_message_new_qos             (GstObject * src, gboolean live, guint64 running_time, | 
|---|
| 691 | guint64 stream_time, guint64 timestamp, guint64 duration) G_GNUC_MALLOC; | 
|---|
| 692 | GST_API | 
|---|
| 693 | void            gst_message_set_qos_values      (GstMessage * message, gint64 jitter, gdouble proportion, | 
|---|
| 694 | gint quality); | 
|---|
| 695 | GST_API | 
|---|
| 696 | void            gst_message_set_qos_stats       (GstMessage * message, GstFormat format, guint64 processed, | 
|---|
| 697 | guint64 dropped); | 
|---|
| 698 | GST_API | 
|---|
| 699 | void            gst_message_parse_qos           (GstMessage * message, gboolean * live, guint64 * running_time, | 
|---|
| 700 | guint64 * stream_time, guint64 * timestamp, guint64 * duration); | 
|---|
| 701 | GST_API | 
|---|
| 702 | void            gst_message_parse_qos_values    (GstMessage * message, gint64 * jitter, gdouble * proportion, | 
|---|
| 703 | gint * quality); | 
|---|
| 704 | GST_API | 
|---|
| 705 | void            gst_message_parse_qos_stats     (GstMessage * message, GstFormat * format, guint64 * processed, | 
|---|
| 706 | guint64 * dropped); | 
|---|
| 707 | /* PROGRESS */ | 
|---|
| 708 |  | 
|---|
| 709 | GST_API | 
|---|
| 710 | GstMessage *    gst_message_new_progress           (GstObject * src, GstProgressType type, const gchar *code, | 
|---|
| 711 | const gchar *text) G_GNUC_MALLOC; | 
|---|
| 712 | GST_API | 
|---|
| 713 | void            gst_message_parse_progress         (GstMessage * message, GstProgressType * type, gchar ** code, | 
|---|
| 714 | gchar ** text); | 
|---|
| 715 |  | 
|---|
| 716 | /* TOC */ | 
|---|
| 717 |  | 
|---|
| 718 | GST_API | 
|---|
| 719 | GstMessage *    gst_message_new_toc             (GstObject *src, GstToc *toc, gboolean updated); | 
|---|
| 720 |  | 
|---|
| 721 | GST_API | 
|---|
| 722 | void            gst_message_parse_toc           (GstMessage *message, GstToc **toc, gboolean *updated); | 
|---|
| 723 |  | 
|---|
| 724 | /* RESET_TIME */ | 
|---|
| 725 |  | 
|---|
| 726 | GST_API | 
|---|
| 727 | GstMessage *    gst_message_new_reset_time      (GstObject * src, GstClockTime running_time) G_GNUC_MALLOC; | 
|---|
| 728 |  | 
|---|
| 729 | GST_API | 
|---|
| 730 | void            gst_message_parse_reset_time    (GstMessage *message, GstClockTime *running_time); | 
|---|
| 731 |  | 
|---|
| 732 | /* STREAM_START */ | 
|---|
| 733 |  | 
|---|
| 734 | GST_API | 
|---|
| 735 | GstMessage *    gst_message_new_stream_start    (GstObject * src) G_GNUC_MALLOC; | 
|---|
| 736 |  | 
|---|
| 737 | GST_API | 
|---|
| 738 | void            gst_message_set_group_id        (GstMessage *message, guint group_id); | 
|---|
| 739 |  | 
|---|
| 740 | GST_API | 
|---|
| 741 | gboolean        gst_message_parse_group_id      (GstMessage *message, guint *group_id); | 
|---|
| 742 |  | 
|---|
| 743 | /* NEED_CONTEXT */ | 
|---|
| 744 |  | 
|---|
| 745 | GST_API | 
|---|
| 746 | GstMessage *    gst_message_new_need_context    (GstObject * src, const gchar * context_type) G_GNUC_MALLOC; | 
|---|
| 747 |  | 
|---|
| 748 | GST_API | 
|---|
| 749 | gboolean        gst_message_parse_context_type  (GstMessage * message, const gchar ** context_type); | 
|---|
| 750 |  | 
|---|
| 751 | /* HAVE_CONTEXT */ | 
|---|
| 752 |  | 
|---|
| 753 | GST_API | 
|---|
| 754 | GstMessage *    gst_message_new_have_context    (GstObject * src, GstContext *context) G_GNUC_MALLOC; | 
|---|
| 755 |  | 
|---|
| 756 | GST_API | 
|---|
| 757 | void            gst_message_parse_have_context  (GstMessage *message, GstContext **context); | 
|---|
| 758 |  | 
|---|
| 759 | /* DEVICE_ADDED */ | 
|---|
| 760 |  | 
|---|
| 761 | GST_API | 
|---|
| 762 | GstMessage *    gst_message_new_device_added    (GstObject * src, GstDevice * device) G_GNUC_MALLOC; | 
|---|
| 763 |  | 
|---|
| 764 | GST_API | 
|---|
| 765 | void            gst_message_parse_device_added  (GstMessage * message, GstDevice ** device); | 
|---|
| 766 |  | 
|---|
| 767 | /* DEVICE_REMOVED */ | 
|---|
| 768 |  | 
|---|
| 769 | GST_API | 
|---|
| 770 | GstMessage *    gst_message_new_device_removed    (GstObject * src, GstDevice * device) G_GNUC_MALLOC; | 
|---|
| 771 |  | 
|---|
| 772 | GST_API | 
|---|
| 773 | void            gst_message_parse_device_removed  (GstMessage * message, GstDevice ** device); | 
|---|
| 774 |  | 
|---|
| 775 | /* DEVICE_CHANGED */ | 
|---|
| 776 |  | 
|---|
| 777 | GST_API | 
|---|
| 778 | GstMessage *    gst_message_new_device_changed    (GstObject * src, GstDevice * device, GstDevice *changed_device); | 
|---|
| 779 |  | 
|---|
| 780 | GST_API | 
|---|
| 781 | void            gst_message_parse_device_changed  (GstMessage * message, GstDevice ** device, GstDevice ** changed_device); | 
|---|
| 782 |  | 
|---|
| 783 |  | 
|---|
| 784 | /* PROPERTY_NOTIFY */ | 
|---|
| 785 |  | 
|---|
| 786 | GST_API | 
|---|
| 787 | GstMessage *    gst_message_new_property_notify   (GstObject * src, const gchar * property_name, GValue * val) G_GNUC_MALLOC; | 
|---|
| 788 |  | 
|---|
| 789 | GST_API | 
|---|
| 790 | void            gst_message_parse_property_notify (GstMessage * message, GstObject ** object, const gchar ** property_name, const GValue ** property_value); | 
|---|
| 791 |  | 
|---|
| 792 | /* STREAM_COLLECTION */ | 
|---|
| 793 |  | 
|---|
| 794 | GST_API | 
|---|
| 795 | GstMessage *    gst_message_new_stream_collection   (GstObject * src, GstStreamCollection * collection) G_GNUC_MALLOC; | 
|---|
| 796 |  | 
|---|
| 797 | GST_API | 
|---|
| 798 | void            gst_message_parse_stream_collection (GstMessage *message, GstStreamCollection **collection); | 
|---|
| 799 |  | 
|---|
| 800 | /* STREAMS_SELECTED */ | 
|---|
| 801 |  | 
|---|
| 802 | GST_API | 
|---|
| 803 | GstMessage *    gst_message_new_streams_selected (GstObject *src, GstStreamCollection *collection); | 
|---|
| 804 |  | 
|---|
| 805 | GST_API | 
|---|
| 806 | void            gst_message_streams_selected_add (GstMessage *message, GstStream *stream); | 
|---|
| 807 |  | 
|---|
| 808 | GST_API | 
|---|
| 809 | void            gst_message_parse_streams_selected (GstMessage * message, GstStreamCollection **collection); | 
|---|
| 810 |  | 
|---|
| 811 | GST_API | 
|---|
| 812 | guint           gst_message_streams_selected_get_size (GstMessage * message); | 
|---|
| 813 |  | 
|---|
| 814 | GST_API | 
|---|
| 815 | GstStream      *gst_message_streams_selected_get_stream (GstMessage *message, guint idx); | 
|---|
| 816 |  | 
|---|
| 817 | /* REDIRECT */ | 
|---|
| 818 |  | 
|---|
| 819 | GST_API | 
|---|
| 820 | GstMessage *    gst_message_new_redirect             (GstObject * src, const gchar * location, GstTagList * tag_list, const GstStructure * entry_struct) G_GNUC_MALLOC; | 
|---|
| 821 |  | 
|---|
| 822 | GST_API | 
|---|
| 823 | void            gst_message_add_redirect_entry       (GstMessage * message, const gchar * location, GstTagList * tag_list, const GstStructure * entry_struct); | 
|---|
| 824 |  | 
|---|
| 825 | GST_API | 
|---|
| 826 | void            gst_message_parse_redirect_entry     (GstMessage * message, gsize entry_index, const gchar ** location, GstTagList ** tag_list, const GstStructure ** entry_struct); | 
|---|
| 827 |  | 
|---|
| 828 | GST_API | 
|---|
| 829 | gsize           gst_message_get_num_redirect_entries (GstMessage * message); | 
|---|
| 830 |  | 
|---|
| 831 | /* INSTANT_RATE_REQUEST */ | 
|---|
| 832 |  | 
|---|
| 833 | GST_API | 
|---|
| 834 | GstMessage *    gst_message_new_instant_rate_request   (GstObject * src, gdouble rate_multiplier) G_GNUC_MALLOC; | 
|---|
| 835 | GST_API | 
|---|
| 836 | void            gst_message_parse_instant_rate_request (GstMessage * message, gdouble * rate_multiplier); | 
|---|
| 837 |  | 
|---|
| 838 | G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstMessage, gst_message_unref) | 
|---|
| 839 |  | 
|---|
| 840 | G_END_DECLS | 
|---|
| 841 |  | 
|---|
| 842 | #endif /* __GST_MESSAGE_H__ */ | 
|---|
| 843 |  | 
|---|