* from the pipeline and unblock all streaming threads.
* @GST_EVENT_FLUSH_STOP: Stop a flush operation. This event resets the
* running-time of the pipeline.
- * @GST_EVENT_EOS: End-Of-Stream. No more data is to be expected to follow
- * without a SEGMENT event.
+ * @GST_EVENT_CAPS: #GstCaps event. Notify the pad of a new media type.
* @GST_EVENT_SEGMENT: A new media segment follows in the dataflow. The
* segment events contains information for clipping buffers and
* converting buffer timestamps to running-time and
* send messages that should be emitted in sync with
* rendering.
* Since: 0.10.26
+ * @GST_EVENT_EOS: End-Of-Stream. No more data is to be expected to follow
+ * without a SEGMENT event.
* @GST_EVENT_QOS: A quality message. Used to indicate to upstream elements
* that the downstream elements should adjust their processing
* rate.
*
* Either @new_event or the #GstEvent pointed to by @old_event may be NULL.
*
- * Since: 0.10.3
+ * Returns: TRUE if @new_event was different from @old_event
*/
-#define gst_event_replace(old_event,new_event) \
- gst_mini_object_replace ((GstMiniObject **)(old_event), GST_MINI_OBJECT_CAST (new_event))
+#ifdef _FOOL_GTK_DOC_
+G_INLINE_FUNC void gst_event_replace (GstEvent **old_event, GstEvent *new_event);
+#endif
+
+static inline void
+gst_event_replace (GstEvent **old_event, GstEvent *new_event)
+{
+ gst_mini_object_replace ((GstMiniObject **) old_event, (GstMiniObject *) new_event);
+}
+
+/**
+ * gst_event_steal:
+ * @old_event: (inout) (transfer full): pointer to a pointer to a #GstEvent
+ * to be stolen.
+ *
+ * Atomically replace the #GstEvent pointed to by @old_event with NULL and
+ * return the original event.
+ *
+ * Returns: the #GstEvent that was in @old_event
+ */
+#define gst_event_steal(old_event) \
+ GST_EVENT_CAST (gst_mini_object_steal ((GstMiniObject **)(old_event)))
+/**
+ * gst_event_take:
+ * @old_event: (inout) (transfer full): pointer to a pointer to a #GstEvent
+ * to be stolen.
+ * @new_event: (allow-none) (transfer full): pointer to a #GstEvent that will
+ * replace the event pointed to by @old_event.
+ *
+ * Modifies a pointer to a #GstEvent to point to a different #GstEvent. This
+ * function is similar to gst_event_replace() except that it takes ownership of
+ * @new_event.
+ *
+ * Either @new_event or the #GstEvent pointed to by @old_event may be NULL.
+ *
+ * Returns: TRUE if @new_event was different from @old_event
+ */
+#define gst_event_take(old_event,new_event) \
+ gst_mini_object_take ((GstMiniObject **)(old_event), GST_MINI_OBJECT_CAST (new_event))
/**
* GstQOSType:
* @mini_object: the parent structure
* @type: the #GstEventType of the event
* @timestamp: the timestamp of the event
+ * @seqnum: the sequence number of the event
*
* A #GstEvent.
*/
return GST_EVENT_CAST (gst_mini_object_copy (GST_MINI_OBJECT_CONST_CAST (event)));
}
+GType gst_event_get_type (void);
/* custom event */
GstEvent* gst_event_new_custom (GstEventType type, GstStructure *structure);
/* flush events */
GstEvent * gst_event_new_flush_start (void);
-GstEvent * gst_event_new_flush_stop (void);
+
+GstEvent * gst_event_new_flush_stop (gboolean reset_time);
+void gst_event_parse_flush_stop (GstEvent *event, gboolean *reset_time);
/* EOS event */
GstEvent * gst_event_new_eos (void);
void gst_event_parse_caps (GstEvent *event, GstCaps **caps);
/* segment event */
-GstEvent* gst_event_new_segment (GstSegment *segment);
+GstEvent* gst_event_new_segment (const GstSegment *segment);
void gst_event_parse_segment (GstEvent *event, const GstSegment **segment);
void gst_event_copy_segment (GstEvent *event, GstSegment *segment);