summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: a1a3d34)
raw | patch | inline | side by side (parent: a1a3d34)
author | Wim Taymans <wim.taymans@gmail.com> | |
Wed, 24 Jul 2002 21:08:43 +0000 (21:08 +0000) | ||
committer | Wim Taymans <wim.taymans@gmail.com> | |
Wed, 24 Jul 2002 21:08:43 +0000 (21:08 +0000) |
Original commit message from CVS:
- Implemented seekmasks, query types and formats in various plugins
- use GST_PAD_IS_USABLE if possible
- Implemented seekmasks, query types and formats in various plugins
- use GST_PAD_IS_USABLE if possible
index 0e5bb7d1a0cf2c0e580e3c48c8c715df2941417e..27524330112023166e8dabd9ca22d5750d9ede1d 100644 (file)
return TRUE;
}
+static const GstEventMask*
+gst_fakesrc_get_event_mask (GstPad *pad)
+{
+ static const GstEventMask gst_fakesrc_event_mask[] = {
+ { GST_EVENT_SEEK, GST_SEEK_FLAG_FLUSH },
+ { GST_EVENT_FLUSH, 0 },
+ { 0, }
+ };
+
+ return gst_fakesrc_event_mask;
+}
+
static void
gst_fakesrc_update_functions (GstFakeSrc *src)
{
}
gst_pad_set_event_function (pad, gst_fakesrc_event_handler);
+ gst_pad_set_event_mask_function (pad, gst_fakesrc_get_event_mask);
pads = g_list_next (pads);
}
}
@@ -412,7 +425,7 @@ gst_fakesrc_set_property (GObject *object, guint prop_id, const GValue *value, G
if (src->sizetype != FAKESRC_SIZETYPE_FIXED)
g_object_set (src, "sizetype", FAKESRC_SIZETYPE_FIXED, NULL);
- if (!src->pool)
+ if (!src->pool)
src->pool = gst_buffer_pool_get_default (src->sizemax, 10);
} else {
if (src->pool) {
index d147f450010390c86ec05daeb2d13abfba43d1a4..3a08cd04cdf1ece2b9529add2d08e0f625b142ba 100644 (file)
gstelement_class->change_state = gst_filesink_change_state;
}
+static const GstEventMask*
+gst_filesink_get_event_mask (GstPad *pad)
+{
+ static GstEventMask gst_filesink_event_mask[] = {
+ { GST_EVENT_SEEK, GST_SEEK_METHOD_CUR |
+ GST_SEEK_METHOD_SET |
+ GST_SEEK_METHOD_END |
+ GST_SEEK_FLAG_FLUSH },
+ { GST_EVENT_FLUSH, 0 },
+ { GST_EVENT_DISCONTINUOUS, 0 },
+ { GST_EVENT_NEW_MEDIA, 0 },
+ { 0, }
+ };
+
+ return gst_filesink_event_mask;
+}
+
static void
gst_filesink_init (GstFileSink *filesink)
{
GST_FLAG_SET (GST_ELEMENT(filesink), GST_ELEMENT_EVENT_AWARE);
gst_pad_set_event_function(pad, gst_filesink_handle_event);
+ gst_pad_set_event_mask_function(pad, gst_filesink_get_event_mask);
filesink->filename = NULL;
filesink->file = NULL;
index f22741fa9da47aec33d29cdf7a394e0250ecc10b..da725b641b1a771ed2531344c5ee25610369e2a9 100644 (file)
ARG_TOUCH,
};
-
static void gst_filesrc_class_init (GstFileSrcClass *klass);
static void gst_filesrc_init (GstFileSrc *filesrc);
static void gst_filesrc_dispose (GObject *object);
GValue *value, GParamSpec *pspec);
static GstBuffer * gst_filesrc_get (GstPad *pad);
+static const GstFormat* gst_filesrc_get_formats (GstPad *pad);
static gboolean gst_filesrc_srcpad_event (GstPad *pad, GstEvent *event);
static gboolean gst_filesrc_srcpad_query (GstPad *pad, GstPadQueryType type,
GstSeekType *format, gint64 *value);
else return 0;
}
+static const GstEventMask*
+gst_filesrc_get_event_mask (GstPad *pad)
+{
+ static GstEventMask gst_filesrc_event_mask[] = {
+ { GST_EVENT_SEEK, GST_SEEK_METHOD_CUR |
+ GST_SEEK_METHOD_SET |
+ GST_SEEK_METHOD_END |
+ GST_SEEK_FLAG_FLUSH },
+ { GST_EVENT_FLUSH, 0 },
+ { GST_EVENT_SIZE, 0 },
+ { 0, }
+ };
+
+ return gst_filesrc_event_mask;
+}
+
+static const GstPadQueryType*
+gst_filesrc_get_query_types (GstPad *pad)
+{
+ static GstPadQueryType gst_filesrc_query_types[] = {
+ GST_PAD_QUERY_TOTAL,
+ GST_PAD_QUERY_POSITION,
+ 0
+ };
+
+ return gst_filesrc_query_types;
+}
+
static void
gst_filesrc_init (GstFileSrc *src)
{
src->srcpad = gst_pad_new ("src", GST_PAD_SRC);
gst_pad_set_get_function (src->srcpad, gst_filesrc_get);
gst_pad_set_event_function (src->srcpad, gst_filesrc_srcpad_event);
+ gst_pad_set_event_mask_function (src->srcpad, gst_filesrc_get_event_mask);
gst_pad_set_query_function (src->srcpad, gst_filesrc_srcpad_query);
+ gst_pad_set_query_type_function (src->srcpad, gst_filesrc_get_query_types);
+ gst_pad_set_formats_function (src->srcpad, gst_filesrc_get_formats);
gst_element_add_pad (GST_ELEMENT (src), src->srcpad);
src->pagesize = getpagesize();
return GST_STATE_SUCCESS;
}
+static const GstFormat*
+gst_filesrc_get_formats (GstPad *pad)
+{
+ static const GstFormat gst_filesrc_formats[] = {
+ GST_FORMAT_BYTES,
+ 0
+ };
+
+ return gst_filesrc_formats;
+}
+
static gboolean
gst_filesrc_srcpad_query (GstPad *pad, GstPadQueryType type,
GstFormat *format, gint64 *value)
diff --git a/gst/elements/gsttee.c b/gst/elements/gsttee.c
index e9c37dc401fa04feaab1a006bcc863b9e688e0a4..d886206fb15f13f22f3e97a47bde300196477b8b 100644 (file)
--- a/gst/elements/gsttee.c
+++ b/gst/elements/gsttee.c
GstPad *outpad = GST_PAD (pads->data);
pads = g_list_next (pads);
- if (GST_PAD_DIRECTION (outpad) != GST_PAD_SRC || !GST_PAD_IS_CONNECTED (outpad))
+ if (GST_PAD_DIRECTION (outpad) != GST_PAD_SRC || !GST_PAD_IS_USABLE (outpad))
continue;
if (!(gst_pad_try_set_caps (outpad, caps))) {
g_object_notify (G_OBJECT (tee), "last_message");
}
- if (GST_PAD_IS_CONNECTED (outpad))
+ if (GST_PAD_IS_USABLE (outpad))
gst_pad_push (outpad, buf);
else
gst_buffer_unref (buf);
index 0e5bb7d1a0cf2c0e580e3c48c8c715df2941417e..27524330112023166e8dabd9ca22d5750d9ede1d 100644 (file)
return TRUE;
}
+static const GstEventMask*
+gst_fakesrc_get_event_mask (GstPad *pad)
+{
+ static const GstEventMask gst_fakesrc_event_mask[] = {
+ { GST_EVENT_SEEK, GST_SEEK_FLAG_FLUSH },
+ { GST_EVENT_FLUSH, 0 },
+ { 0, }
+ };
+
+ return gst_fakesrc_event_mask;
+}
+
static void
gst_fakesrc_update_functions (GstFakeSrc *src)
{
}
gst_pad_set_event_function (pad, gst_fakesrc_event_handler);
+ gst_pad_set_event_mask_function (pad, gst_fakesrc_get_event_mask);
pads = g_list_next (pads);
}
}
@@ -412,7 +425,7 @@ gst_fakesrc_set_property (GObject *object, guint prop_id, const GValue *value, G
if (src->sizetype != FAKESRC_SIZETYPE_FIXED)
g_object_set (src, "sizetype", FAKESRC_SIZETYPE_FIXED, NULL);
- if (!src->pool)
+ if (!src->pool)
src->pool = gst_buffer_pool_get_default (src->sizemax, 10);
} else {
if (src->pool) {
index d147f450010390c86ec05daeb2d13abfba43d1a4..3a08cd04cdf1ece2b9529add2d08e0f625b142ba 100644 (file)
gstelement_class->change_state = gst_filesink_change_state;
}
+static const GstEventMask*
+gst_filesink_get_event_mask (GstPad *pad)
+{
+ static GstEventMask gst_filesink_event_mask[] = {
+ { GST_EVENT_SEEK, GST_SEEK_METHOD_CUR |
+ GST_SEEK_METHOD_SET |
+ GST_SEEK_METHOD_END |
+ GST_SEEK_FLAG_FLUSH },
+ { GST_EVENT_FLUSH, 0 },
+ { GST_EVENT_DISCONTINUOUS, 0 },
+ { GST_EVENT_NEW_MEDIA, 0 },
+ { 0, }
+ };
+
+ return gst_filesink_event_mask;
+}
+
static void
gst_filesink_init (GstFileSink *filesink)
{
GST_FLAG_SET (GST_ELEMENT(filesink), GST_ELEMENT_EVENT_AWARE);
gst_pad_set_event_function(pad, gst_filesink_handle_event);
+ gst_pad_set_event_mask_function(pad, gst_filesink_get_event_mask);
filesink->filename = NULL;
filesink->file = NULL;
index f22741fa9da47aec33d29cdf7a394e0250ecc10b..da725b641b1a771ed2531344c5ee25610369e2a9 100644 (file)
ARG_TOUCH,
};
-
static void gst_filesrc_class_init (GstFileSrcClass *klass);
static void gst_filesrc_init (GstFileSrc *filesrc);
static void gst_filesrc_dispose (GObject *object);
GValue *value, GParamSpec *pspec);
static GstBuffer * gst_filesrc_get (GstPad *pad);
+static const GstFormat* gst_filesrc_get_formats (GstPad *pad);
static gboolean gst_filesrc_srcpad_event (GstPad *pad, GstEvent *event);
static gboolean gst_filesrc_srcpad_query (GstPad *pad, GstPadQueryType type,
GstSeekType *format, gint64 *value);
else return 0;
}
+static const GstEventMask*
+gst_filesrc_get_event_mask (GstPad *pad)
+{
+ static GstEventMask gst_filesrc_event_mask[] = {
+ { GST_EVENT_SEEK, GST_SEEK_METHOD_CUR |
+ GST_SEEK_METHOD_SET |
+ GST_SEEK_METHOD_END |
+ GST_SEEK_FLAG_FLUSH },
+ { GST_EVENT_FLUSH, 0 },
+ { GST_EVENT_SIZE, 0 },
+ { 0, }
+ };
+
+ return gst_filesrc_event_mask;
+}
+
+static const GstPadQueryType*
+gst_filesrc_get_query_types (GstPad *pad)
+{
+ static GstPadQueryType gst_filesrc_query_types[] = {
+ GST_PAD_QUERY_TOTAL,
+ GST_PAD_QUERY_POSITION,
+ 0
+ };
+
+ return gst_filesrc_query_types;
+}
+
static void
gst_filesrc_init (GstFileSrc *src)
{
src->srcpad = gst_pad_new ("src", GST_PAD_SRC);
gst_pad_set_get_function (src->srcpad, gst_filesrc_get);
gst_pad_set_event_function (src->srcpad, gst_filesrc_srcpad_event);
+ gst_pad_set_event_mask_function (src->srcpad, gst_filesrc_get_event_mask);
gst_pad_set_query_function (src->srcpad, gst_filesrc_srcpad_query);
+ gst_pad_set_query_type_function (src->srcpad, gst_filesrc_get_query_types);
+ gst_pad_set_formats_function (src->srcpad, gst_filesrc_get_formats);
gst_element_add_pad (GST_ELEMENT (src), src->srcpad);
src->pagesize = getpagesize();
return GST_STATE_SUCCESS;
}
+static const GstFormat*
+gst_filesrc_get_formats (GstPad *pad)
+{
+ static const GstFormat gst_filesrc_formats[] = {
+ GST_FORMAT_BYTES,
+ 0
+ };
+
+ return gst_filesrc_formats;
+}
+
static gboolean
gst_filesrc_srcpad_query (GstPad *pad, GstPadQueryType type,
GstFormat *format, gint64 *value)
index e9c37dc401fa04feaab1a006bcc863b9e688e0a4..d886206fb15f13f22f3e97a47bde300196477b8b 100644 (file)
GstPad *outpad = GST_PAD (pads->data);
pads = g_list_next (pads);
- if (GST_PAD_DIRECTION (outpad) != GST_PAD_SRC || !GST_PAD_IS_CONNECTED (outpad))
+ if (GST_PAD_DIRECTION (outpad) != GST_PAD_SRC || !GST_PAD_IS_USABLE (outpad))
continue;
if (!(gst_pad_try_set_caps (outpad, caps))) {
g_object_notify (G_OBJECT (tee), "last_message");
}
- if (GST_PAD_IS_CONNECTED (outpad))
+ if (GST_PAD_IS_USABLE (outpad))
gst_pad_push (outpad, buf);
else
gst_buffer_unref (buf);