[gst-cvs] CVS: gstreamer/gst gstevent.c,1.1.2.3,1.1.2.4 gstevent.h,1.2.4.5,1.2.4.6 gstpad.c,1.104.2.2,1.104.2.3 gstpad.h,1.62.4.2,1.62.4.3
Wim Taymans
wtay at users.sourceforge.net
Sat Oct 6 07:42:05 PDT 2001
- Previous message: [gst-cvs] CVS: gstreamer/gst/elements gstfakesink.c,1.23.4.4,1.23.4.5 gstfakesrc.c,1.31.4.2,1.31.4.3 gstfakesrc.h,1.17,1.17.4.1
- Next message: [gst-cvs] CVS: gstreamer/test/events Makefile.am,NONE,1.1.2.1 seek.c,NONE,1.1.2.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/gstreamer/gstreamer/gst
In directory usw-pr-cvs1:/tmp/cvs-serv12031
Modified Files:
Tag: BRANCH-EVENTS1
gstevent.c gstevent.h gstpad.c gstpad.h
Log Message:
Added code for sending an event to a pad.
Added code to handle the event in fakesrc and fakesink.
Index: gstevent.c
===================================================================
RCS file: /cvsroot/gstreamer/gstreamer/gst/Attic/gstevent.c,v
retrieving revision 1.1.2.3
retrieving revision 1.1.2.4
diff -u -d -r1.1.2.3 -r1.1.2.4
--- gstevent.c 2001/09/28 23:00:12 1.1.2.3
+++ gstevent.c 2001/10/06 14:41:20 1.1.2.4
@@ -80,3 +80,17 @@
g_mem_chunk_free (_gst_event_chunk, event);
g_mutex_unlock (_gst_event_chunk_lock);
}
+
+/* seek stuff */
+GstEvent*
+gst_event_new_seek (GstSeekType type, guint64 offset, gboolean flush)
+{
+ GstEvent *event;
+
+ event = gst_event_new (GST_EVENT_SEEK);
+ GST_EVENT_SEEK_TYPE (event) = type;
+ GST_EVENT_SEEK_OFFSET (event) = offset;
+ GST_EVENT_SEEK_FLUSH (event) = flush;
+
+ return event;
+}
Index: gstevent.h
===================================================================
RCS file: /cvsroot/gstreamer/gstreamer/gst/gstevent.h,v
retrieving revision 1.2.4.5
retrieving revision 1.2.4.6
diff -u -d -r1.2.4.5 -r1.2.4.6
--- gstevent.h 2001/09/28 23:00:12 1.2.4.5
+++ gstevent.h 2001/10/06 14:41:20 1.2.4.6
@@ -46,20 +46,47 @@
#define GST_EVENT(event) ((GstEvent*)(event))
#define GST_IS_EVENT(event) (GST_DATA_TYPE(event) == GST_TYPE_EVENT)
-#define GST_EVENT_TYPE(event) (GST_EVENT(event)->type)
+#define GST_EVENT_TYPE(event) (GST_EVENT(event)->type)
+#define GST_EVENT_TIMESTAMP(event) (GST_EVENT(event)->timstamp)
+
+/* seek events */
+typedef enum {
+ GST_SEEK_ANY,
+ GST_SEEK_TIMEOFFSET,
+ GST_SEEK_BYTEOFFSET
+} GstSeekType;
+
+#define GST_EVENT_SEEK_TYPE(event) (GST_EVENT(event)->event_data.seek.type)
+#define GST_EVENT_SEEK_OFFSET(event) (GST_EVENT(event)->event_data.seek.offset)
+#define GST_EVENT_SEEK_FLUSH(event) (GST_EVENT(event)->event_data.seek.flush)
typedef struct _GstEvent GstEvent;
struct _GstEvent {
GstData data;
- GstEventType type;
+ GstEventType type;
+ guint64 timestamp;
+
+ union {
+ struct {
+ GstSeekType type;
+ guint64 offset;
+ gboolean flush;
+ } seek;
+ } event_data;
};
void _gst_event_initialize (void);
GstEvent* gst_event_new (GstEventType type);
void gst_event_free (GstEvent* event);
+
+/* seek events */
+GstEvent* gst_event_new_seek (GstSeekType type, guint64 offset, gboolean flush);
+
+/* flush events */
+#define gst_event_new_flush() gst_event_new(GST_EVENT_FLUSH)
#ifdef __cplusplus
}
Index: gstpad.c
===================================================================
RCS file: /cvsroot/gstreamer/gstreamer/gst/gstpad.c,v
retrieving revision 1.104.2.2
retrieving revision 1.104.2.3
diff -u -d -r1.104.2.2 -r1.104.2.3
--- gstpad.c 2001/09/30 22:01:14 1.104.2.2
+++ gstpad.c 2001/10/06 14:41:20 1.104.2.3
@@ -1939,14 +1939,36 @@
GST_DEBUG(GST_CAT_EVENT, "have event %d on pad %s:%s\n",(gint)event,GST_DEBUG_PAD_NAME(pad));
peer = GST_RPAD_PEER(pad);
- if (GST_RPAD_EVENTFUNC(peer))
- handled = GST_RPAD_EVENTFUNC(peer) (peer, event, timestamp, data);
+ if (GST_RPAD_EVENTFUNC(peer)) {
+ //handled = GST_RPAD_EVENTFUNC(peer) (peer, event, timestamp, data);
+ }
else {
GST_DEBUG(GST_CAT_EVENT, "there's no event function for peer %s:%s\n",GST_DEBUG_PAD_NAME(peer));
}
if (!handled) {
GST_DEBUG(GST_CAT_EVENT, "would proceed with default behavior here\n");
- gst_pad_event_default(peer,event, timestamp, data);
+ //gst_pad_event_default(peer,event, timestamp, data);
+ }
+}
+
+gboolean
+gst_pad_send_event (GstPad *pad, GstEvent *event)
+{
+ gboolean handled = FALSE;
+
+ GST_DEBUG (GST_CAT_EVENT, "have event %d on pad %s:%s\n",
+ GST_EVENT_TYPE (event), GST_DEBUG_PAD_NAME (pad));
+
+ if (GST_RPAD_EVENTFUNC (pad))
+ handled = GST_RPAD_EVENTFUNC (pad) (pad, event);
+ else {
+ GST_DEBUG(GST_CAT_EVENT, "there's no event function for pad %s:%s\n", GST_DEBUG_PAD_NAME (pad));
}
+
+ if (!handled) {
+ GST_DEBUG(GST_CAT_EVENT, "would proceed with default behavior here\n");
+ //gst_pad_event_default (pad, event);
+ }
}
+
Index: gstpad.h
===================================================================
RCS file: /cvsroot/gstreamer/gstreamer/gst/gstpad.h,v
retrieving revision 1.62.4.2
retrieving revision 1.62.4.3
diff -u -d -r1.62.4.2 -r1.62.4.3
--- gstpad.h 2001/10/01 19:41:03 1.62.4.2
+++ gstpad.h 2001/10/06 14:41:20 1.62.4.3
@@ -130,7 +130,7 @@
* buf is the buffer being passed */
typedef void (*GstPadChainFunction) (GstPad *pad,GstBuffer *buf);
typedef GstBuffer* (*GstPadGetFunction) (GstPad *pad);
-typedef gboolean (*GstPadEventFunction) (GstPad *pad, GstEventType event, gint64 timestamp, guint32 data);
+typedef gboolean (*GstPadEventFunction) (GstPad *pad, GstEvent *event);
typedef GstBuffer* (*GstPadGetRegionFunction) (GstPad *pad, GstRegionType type, guint64 offset, guint64 len);
typedef GstBuffer* (*GstPadPullRegionFunction) (GstPad *pad, GstRegionType type, guint64 offset, guint64 len);
@@ -412,6 +412,7 @@
}G_STMT_END
#endif
+gboolean gst_pad_send_event (GstPad *pad, GstEvent *event);
GstBuffer* gst_pad_peek (GstPad *pad);
GstPad* gst_pad_select (GList *padlist);
- Previous message: [gst-cvs] CVS: gstreamer/gst/elements gstfakesink.c,1.23.4.4,1.23.4.5 gstfakesrc.c,1.31.4.2,1.31.4.3 gstfakesrc.h,1.17,1.17.4.1
- Next message: [gst-cvs] CVS: gstreamer/test/events Makefile.am,NONE,1.1.2.1 seek.c,NONE,1.1.2.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Gstreamer-commits
mailing list