+2005-11-21 Andy Wingo <wingo@pobox.com>
+
+ * gst/gstevent.h (GstEventTypeFlags): New data type, the flags of
+ the event type (upstream, downstream, serialized). Renamed
+ GST_EVDIR_* and GST_EVSER to GST_EVENT_TYPE_*.
+ (GstEventType): Use GstEventTypeFlags. Rename CUSTOM_UP to
+ CUSTOM_UPSTREAM, CUSTOM_DS to CUSTOM_DOWNSTREAM, etc.
+
+ * gst/gstevent.c: Update for new CUSTOM event names.
+
+ * check/gst/gstevent.c: Update check for new CUSTOM event names.
+
+ * gst/gstevent.h:
+ * gst/gstevent.c (gst_event_type_get_flags): New function. Fixes
+ bug #319392.
+
2005-11-21 Tim-Philipp Müller <tim at centricular dot net>
* docs/gst/gstreamer-sections.txt:
{
structure = gst_structure_empty_new ("application/x-custom");
fail_if (structure == NULL);
- event = gst_event_new_custom (GST_EVENT_CUSTOM_UP, structure);
+ event = gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, structure);
fail_if (event == NULL);
- fail_unless (GST_EVENT_TYPE (event) == GST_EVENT_CUSTOM_UP);
+ fail_unless (GST_EVENT_TYPE (event) == GST_EVENT_CUSTOM_UPSTREAM);
fail_unless (GST_EVENT_IS_UPSTREAM (event));
fail_if (GST_EVENT_IS_DOWNSTREAM (event));
fail_if (GST_EVENT_IS_SERIALIZED (event));
if (before_q) {
switch (GST_EVENT_TYPE (GST_EVENT (data))) {
- case GST_EVENT_CUSTOM_UP:
+ case GST_EVENT_CUSTOM_UPSTREAM:
case GST_EVENT_CUSTOM_BOTH:
case GST_EVENT_CUSTOM_BOTH_OOB:
if (got_event_before_q != NULL)
}
} else {
switch (GST_EVENT_TYPE (GST_EVENT (data))) {
- case GST_EVENT_CUSTOM_DS:
- case GST_EVENT_CUSTOM_DS_OOB:
+ case GST_EVENT_CUSTOM_DOWNSTREAM:
+ case GST_EVENT_CUSTOM_DOWNSTREAM_OOB:
case GST_EVENT_CUSTOM_BOTH:
case GST_EVENT_CUSTOM_BOTH_OOB:
if (got_event_after_q != NULL)
GINT_TO_POINTER (FALSE));
/* Upstream events */
- test_event (pipeline, GST_EVENT_CUSTOM_UP, sinkpad, TRUE);
+ test_event (pipeline, GST_EVENT_CUSTOM_UPSTREAM, sinkpad, TRUE);
fail_unless (timediff (&got_event_time,
&sent_event_time) < G_USEC_PER_SEC / 2,
"GST_EVENT_CUSTOM_UP took to long to reach source: %"
G_GINT64_FORMAT " us", timediff (&got_event_time, &sent_event_time));
/* Out of band downstream events */
- test_event (pipeline, GST_EVENT_CUSTOM_DS_OOB, srcpad, FALSE);
+ test_event (pipeline, GST_EVENT_CUSTOM_DOWNSTREAM_OOB, srcpad, FALSE);
fail_unless (timediff (&got_event_time,
&sent_event_time) < G_USEC_PER_SEC / 2,
"GST_EVENT_CUSTOM_DS_OOB took to long to reach source: %"
/* In-band downstream events are expected to take at least 1 second
* to traverse the the queue */
- test_event (pipeline, GST_EVENT_CUSTOM_DS, srcpad, FALSE);
+ test_event (pipeline, GST_EVENT_CUSTOM_DOWNSTREAM, srcpad, FALSE);
fail_unless (timediff (&got_event_time,
&sent_event_time) >= G_USEC_PER_SEC / 2,
"GST_EVENT_CUSTOM_DS arrived too quickly for an in-band event: %"
{GST_EVENT_QOS, "qos", 0},
{GST_EVENT_SEEK, "seek", 0},
{GST_EVENT_NAVIGATION, "navigation", 0},
- {GST_EVENT_CUSTOM_UP, "custom-up", 0},
- {GST_EVENT_CUSTOM_DS, "custom-ds", 0},
- {GST_EVENT_CUSTOM_DS_OOB, "custom-ds-oob", 0},
+ {GST_EVENT_CUSTOM_UPSTREAM, "custom-upstream", 0},
+ {GST_EVENT_CUSTOM_DOWNSTREAM, "custom-downstream", 0},
+ {GST_EVENT_CUSTOM_DOWNSTREAM_OOB, "custom-downstream-oob", 0},
{GST_EVENT_CUSTOM_BOTH, "custom-both", 0},
{GST_EVENT_CUSTOM_BOTH_OOB, "custom-both-oob", 0},
return 0;
}
+/**
+ * gst_event_type_get_flags:
+ * @type: a #GstEventType
+ *
+ * Gets the #GstEventTypeFlags associated with @type.
+ *
+ * Returns: a #GstEventTypeFlags.
+ */
+GstEventTypeFlags
+gst_event_type_get_flags (GstEventType type)
+{
+ GstEventTypeFlags ret;
+
+ ret = type & ((1 << GST_EVENT_TYPE_SHIFT) - 1);
+
+ return ret;
+}
+
GType
gst_event_get_type (void)
{
G_BEGIN_DECLS
/**
- * GST_EVDIR_US:
+ * GstEventTypeFlags:
+ * @GST_EVENT_TYPE_UPSTREAM: Set if the event can travel upstream.
+ * @GST_EVENT_TYPE_DOWNSTREAM: Set if the event can travel downstream.
+ * @GST_EVENT_TYPE_SERIALIZED: Set if the event should be serialized with data
+ * flow.
*
- * bitmask defining the event can travel upstream
+ * #GstEventTypeFlags indicate the aspects of the different #GstEventType
+ * values. You can get the type flags of a #GstEventType with the
+ * gst_event_type_get_flags() function.
*/
-#define GST_EVDIR_US (1 << 0)
-/**
- * GST_EVDIR_DS:
- *
- * bitmask defining the event can travel downstream
- */
-#define GST_EVDIR_DS (1 << 1)
-/**
- * GST_EVDIR_BOTH:
- *
- * bitmask defining the event can travel both up and downstream
- */
-#define GST_EVDIR_BOTH GST_EVDIR_US | GST_EVDIR_DS
-/**
- * GST_EVSER:
- *
- * mask defining if the event is serialized with the data stream
- */
-#define GST_EVSER (1 << 2)
+typedef enum {
+ GST_EVENT_TYPE_UPSTREAM = 1 << 0,
+ GST_EVENT_TYPE_DOWNSTREAM = 1 << 1,
+ GST_EVENT_TYPE_SERIALIZED = 1 << 2,
+} GstEventTypeFlags;
+
/**
- * GST_EVSHIFT:
+ * GST_EVENT_TYPE_BOTH:
*
- * shift for the bits in the serialize mask.
+ * The same thing as #GST_EVENT_TYPE_UPSTREAM | #GST_EVENT_TYPE_DOWNSTREAM.
*/
-#define GST_EVSHIFT 4
+#define GST_EVENT_TYPE_BOTH \
+ (GST_EVENT_TYPE_UPSTREAM | GST_EVENT_TYPE_DOWNSTREAM)
+
+#define GST_EVENT_TYPE_SHIFT 4
/**
* GST_EVENT_MAKE_TYPE:
* when making custom event types, use this macro with the num and
* the given flags
*/
-#define GST_EVENT_MAKE_TYPE(num,flags) (((num) << GST_EVSHIFT) | (flags))
+#define GST_EVENT_MAKE_TYPE(num,flags) \
+ (((num) << GST_EVENT_TYPE_SHIFT) | (flags))
+
+#define FLAG(name) GST_EVENT_TYPE_##name
/**
* GstEventType:
* @GST_EVENT_NAVIGATION: Navigation events are usually used for communicating
user requests, such as mouse or keyboard movements,
* to upstream elements.
- * @GST_EVENT_CUSTOM_UP: Upstream custom event
- * @GST_EVENT_CUSTOM_DS: Downstream custom event that travels in the data flow.
- * @GST_EVENT_CUSTOM_DS_OOB: Custom out-of-band downstream event.
+ * @GST_EVENT_CUSTOM_UPSTREAM: Upstream custom event
+ * @GST_EVENT_CUSTOM_DOWNSTREAM: Downstream custom event that travels in the
+ * data flow.
+ * @GST_EVENT_CUSTOM_DOWNSTREAM_OOB: Custom out-of-band downstream event.
* @GST_EVENT_CUSTOM_BOTH: Custom upstream or downstream event.
* In-band when travelling downstream.
* @GST_EVENT_CUSTOM_BOTH_OOB: Custom upstream or downstream out-of-band event.
typedef enum {
GST_EVENT_UNKNOWN = GST_EVENT_MAKE_TYPE (0, 0),
/* bidirectional events */
- GST_EVENT_FLUSH_START = GST_EVENT_MAKE_TYPE (1, GST_EVDIR_BOTH),
- GST_EVENT_FLUSH_STOP = GST_EVENT_MAKE_TYPE (2, GST_EVDIR_BOTH),
+ GST_EVENT_FLUSH_START = GST_EVENT_MAKE_TYPE (1, FLAG(BOTH)),
+ GST_EVENT_FLUSH_STOP = GST_EVENT_MAKE_TYPE (2, FLAG(BOTH)),
/* downstream serialized events */
- GST_EVENT_EOS = GST_EVENT_MAKE_TYPE (5, GST_EVDIR_DS | GST_EVSER),
- GST_EVENT_NEWSEGMENT = GST_EVENT_MAKE_TYPE (6, GST_EVDIR_DS | GST_EVSER),
- GST_EVENT_TAG = GST_EVENT_MAKE_TYPE (7, GST_EVDIR_DS | GST_EVSER),
- GST_EVENT_FILLER = GST_EVENT_MAKE_TYPE (8, GST_EVDIR_DS | GST_EVSER),
- GST_EVENT_BUFFERSIZE = GST_EVENT_MAKE_TYPE (9, GST_EVDIR_DS | GST_EVSER),
+ GST_EVENT_EOS = GST_EVENT_MAKE_TYPE (5, FLAG(DOWNSTREAM) | FLAG(SERIALIZED)),
+ GST_EVENT_NEWSEGMENT = GST_EVENT_MAKE_TYPE (6, FLAG(DOWNSTREAM) | FLAG(SERIALIZED)),
+ GST_EVENT_TAG = GST_EVENT_MAKE_TYPE (7, FLAG(DOWNSTREAM) | FLAG(SERIALIZED)),
+ GST_EVENT_FILLER = GST_EVENT_MAKE_TYPE (8, FLAG(DOWNSTREAM) | FLAG(SERIALIZED)),
+ GST_EVENT_BUFFERSIZE = GST_EVENT_MAKE_TYPE (9, FLAG(DOWNSTREAM) | FLAG(SERIALIZED)),
/* upstream events */
- GST_EVENT_QOS = GST_EVENT_MAKE_TYPE (15, GST_EVDIR_US),
- GST_EVENT_SEEK = GST_EVENT_MAKE_TYPE (16, GST_EVDIR_US),
- GST_EVENT_NAVIGATION = GST_EVENT_MAKE_TYPE (17, GST_EVDIR_US),
+ GST_EVENT_QOS = GST_EVENT_MAKE_TYPE (15, FLAG(UPSTREAM)),
+ GST_EVENT_SEEK = GST_EVENT_MAKE_TYPE (16, FLAG(UPSTREAM)),
+ GST_EVENT_NAVIGATION = GST_EVENT_MAKE_TYPE (17, FLAG(UPSTREAM)),
/* custom events start here */
- GST_EVENT_CUSTOM_UP = GST_EVENT_MAKE_TYPE (32, GST_EVDIR_US),
- GST_EVENT_CUSTOM_DS = GST_EVENT_MAKE_TYPE (32, GST_EVDIR_DS | GST_EVSER),
- GST_EVENT_CUSTOM_DS_OOB = GST_EVENT_MAKE_TYPE (32, GST_EVDIR_DS),
- GST_EVENT_CUSTOM_BOTH = GST_EVENT_MAKE_TYPE (32, GST_EVDIR_BOTH | GST_EVSER),
- GST_EVENT_CUSTOM_BOTH_OOB = GST_EVENT_MAKE_TYPE (32, GST_EVDIR_BOTH)
+ GST_EVENT_CUSTOM_UPSTREAM = GST_EVENT_MAKE_TYPE (32, FLAG(UPSTREAM)),
+ GST_EVENT_CUSTOM_DOWNSTREAM = GST_EVENT_MAKE_TYPE (32, FLAG(DOWNSTREAM) | FLAG(SERIALIZED)),
+ GST_EVENT_CUSTOM_DOWNSTREAM_OOB = GST_EVENT_MAKE_TYPE (32, FLAG(DOWNSTREAM)),
+ GST_EVENT_CUSTOM_BOTH = GST_EVENT_MAKE_TYPE (32, FLAG(BOTH) | FLAG(SERIALIZED)),
+ GST_EVENT_CUSTOM_BOTH_OOB = GST_EVENT_MAKE_TYPE (32, FLAG(BOTH))
} GstEventType;
+#undef FLAG
/**
* GST_EVENT_TRACE_NAME:
*
* Check if an event can travel upstream.
*/
-#define GST_EVENT_IS_UPSTREAM(ev) !!(GST_EVENT_TYPE (ev) & GST_EVDIR_US)
+#define GST_EVENT_IS_UPSTREAM(ev) !!(GST_EVENT_TYPE (ev) & GST_EVENT_TYPE_UPSTREAM)
/**
* GST_EVENT_IS_DOWNSTREAM:
* @ev: the event to query
*
* Check if an event can travel downstream.
*/
-#define GST_EVENT_IS_DOWNSTREAM(ev) !!(GST_EVENT_TYPE (ev) & GST_EVDIR_DS)
+#define GST_EVENT_IS_DOWNSTREAM(ev) !!(GST_EVENT_TYPE (ev) & GST_EVENT_TYPE_DOWNSTREAM)
/**
* GST_EVENT_IS_SERIALIZED:
* @ev: the event to query
*
* Check if an event is serialized with the data stream.
*/
-#define GST_EVENT_IS_SERIALIZED(ev) !!(GST_EVENT_TYPE (ev) & GST_EVSER)
+#define GST_EVENT_IS_SERIALIZED(ev) !!(GST_EVENT_TYPE (ev) & GST_EVENT_TYPE_SERIALIZED)
/**
* GstSeekType:
const gchar* gst_event_type_get_name (GstEventType type);
GQuark gst_event_type_to_quark (GstEventType type);
+GstEventTypeFlags
+ gst_event_type_get_flags (GstEventType type);
GType gst_event_get_type (void);
{
structure = gst_structure_empty_new ("application/x-custom");
fail_if (structure == NULL);
- event = gst_event_new_custom (GST_EVENT_CUSTOM_UP, structure);
+ event = gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, structure);
fail_if (event == NULL);
- fail_unless (GST_EVENT_TYPE (event) == GST_EVENT_CUSTOM_UP);
+ fail_unless (GST_EVENT_TYPE (event) == GST_EVENT_CUSTOM_UPSTREAM);
fail_unless (GST_EVENT_IS_UPSTREAM (event));
fail_if (GST_EVENT_IS_DOWNSTREAM (event));
fail_if (GST_EVENT_IS_SERIALIZED (event));
if (before_q) {
switch (GST_EVENT_TYPE (GST_EVENT (data))) {
- case GST_EVENT_CUSTOM_UP:
+ case GST_EVENT_CUSTOM_UPSTREAM:
case GST_EVENT_CUSTOM_BOTH:
case GST_EVENT_CUSTOM_BOTH_OOB:
if (got_event_before_q != NULL)
}
} else {
switch (GST_EVENT_TYPE (GST_EVENT (data))) {
- case GST_EVENT_CUSTOM_DS:
- case GST_EVENT_CUSTOM_DS_OOB:
+ case GST_EVENT_CUSTOM_DOWNSTREAM:
+ case GST_EVENT_CUSTOM_DOWNSTREAM_OOB:
case GST_EVENT_CUSTOM_BOTH:
case GST_EVENT_CUSTOM_BOTH_OOB:
if (got_event_after_q != NULL)
GINT_TO_POINTER (FALSE));
/* Upstream events */
- test_event (pipeline, GST_EVENT_CUSTOM_UP, sinkpad, TRUE);
+ test_event (pipeline, GST_EVENT_CUSTOM_UPSTREAM, sinkpad, TRUE);
fail_unless (timediff (&got_event_time,
&sent_event_time) < G_USEC_PER_SEC / 2,
"GST_EVENT_CUSTOM_UP took to long to reach source: %"
G_GINT64_FORMAT " us", timediff (&got_event_time, &sent_event_time));
/* Out of band downstream events */
- test_event (pipeline, GST_EVENT_CUSTOM_DS_OOB, srcpad, FALSE);
+ test_event (pipeline, GST_EVENT_CUSTOM_DOWNSTREAM_OOB, srcpad, FALSE);
fail_unless (timediff (&got_event_time,
&sent_event_time) < G_USEC_PER_SEC / 2,
"GST_EVENT_CUSTOM_DS_OOB took to long to reach source: %"
/* In-band downstream events are expected to take at least 1 second
* to traverse the the queue */
- test_event (pipeline, GST_EVENT_CUSTOM_DS, srcpad, FALSE);
+ test_event (pipeline, GST_EVENT_CUSTOM_DOWNSTREAM, srcpad, FALSE);
fail_unless (timediff (&got_event_time,
&sent_event_time) >= G_USEC_PER_SEC / 2,
"GST_EVENT_CUSTOM_DS arrived too quickly for an in-band event: %"