gst/gstevent.h (GstEventTypeFlags): New data type, the flags of the event type (upstream, downstream, serialized). Re...

Original commit message from CVS:
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.
This commit is contained in:
Andy Wingo 2005-11-21 11:06:42 +00:00
parent 60c50e8f11
commit 33d5749b88
5 changed files with 102 additions and 65 deletions

View file

@ -1,3 +1,19 @@
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:

View file

@ -155,9 +155,9 @@ GST_START_TEST (create_custom_events)
{
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));
@ -203,7 +203,7 @@ event_probe (GstPad * pad, GstMiniObject ** data, gpointer user_data)
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)
@ -217,8 +217,8 @@ event_probe (GstPad * pad, GstMiniObject ** data, gpointer user_data)
}
} 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)
@ -328,7 +328,7 @@ GST_START_TEST (send_custom_events)
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: %"
@ -347,7 +347,7 @@ GST_START_TEST (send_custom_events)
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: %"
@ -361,7 +361,7 @@ GST_START_TEST (send_custom_events)
/* 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: %"

View file

@ -107,9 +107,9 @@ static GstEventQuarks event_quarks[] = {
{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},
@ -156,6 +156,24 @@ gst_event_type_to_quark (GstEventType type)
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)
{

View file

@ -35,35 +35,31 @@
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)
typedef enum {
GST_EVENT_TYPE_UPSTREAM = 1 << 0,
GST_EVENT_TYPE_DOWNSTREAM = 1 << 1,
GST_EVENT_TYPE_SERIALIZED = 1 << 2,
} GstEventTypeFlags;
/**
* GST_EVDIR_DS:
* GST_EVENT_TYPE_BOTH:
*
* bitmask defining the event can travel downstream
* The same thing as #GST_EVENT_TYPE_UPSTREAM | #GST_EVENT_TYPE_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)
/**
* GST_EVSHIFT:
*
* shift for the bits in the serialize mask.
*/
#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:
@ -73,7 +69,10 @@ G_BEGIN_DECLS
* 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:
@ -93,9 +92,10 @@ G_BEGIN_DECLS
* @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.
@ -112,26 +112,27 @@ G_BEGIN_DECLS
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:
@ -190,21 +191,21 @@ typedef struct _GstEventClass GstEventClass;
*
* 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:
@ -295,6 +296,8 @@ void _gst_event_initialize (void);
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);

View file

@ -155,9 +155,9 @@ GST_START_TEST (create_custom_events)
{
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));
@ -203,7 +203,7 @@ event_probe (GstPad * pad, GstMiniObject ** data, gpointer user_data)
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)
@ -217,8 +217,8 @@ event_probe (GstPad * pad, GstMiniObject ** data, gpointer user_data)
}
} 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)
@ -328,7 +328,7 @@ GST_START_TEST (send_custom_events)
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: %"
@ -347,7 +347,7 @@ GST_START_TEST (send_custom_events)
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: %"
@ -361,7 +361,7 @@ GST_START_TEST (send_custom_events)
/* 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: %"