summaryrefslogtreecommitdiffstats
path: root/gst
diff options
context:
space:
mode:
authorThomas Vander Stichele <thomas@apestaart.org>2002-08-27 17:45:07 +0000
committerThomas Vander Stichele <thomas@apestaart.org>2002-08-27 17:45:07 +0000
commit509a2d42b1e6c178148566049eba753fe079876d (patch)
tree88811ce30df9d1d619d70c38237871992a7eb8c2 /gst
parentc4ba06ace64e0607595ba4c81fd60021ea8a97f5 (diff)
sf's back
Original commit message from CVS: sf's back
Diffstat (limited to 'gst')
-rw-r--r--gst/avi/gstavidemux.c2
-rw-r--r--gst/level/gstlevel.c124
2 files changed, 75 insertions, 51 deletions
diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c
index d9ec2059..e0cf5824 100644
--- a/gst/avi/gstavidemux.c
+++ b/gst/avi/gstavidemux.c
@@ -647,7 +647,7 @@ gst_avi_demux_parse_index (GstAviDemux *avi_demux,
GstEvent *event;
gst_bytestream_get_status (avi_demux->bs, &remaining, &event);
- gst_event_unref (event);
+ gst_data_unref (GST_DATA (event));
got_bytes = gst_bytestream_read (avi_demux->bs, &buf, 8);
}
diff --git a/gst/level/gstlevel.c b/gst/level/gstlevel.c
index d24aa052..a49657c7 100644
--- a/gst/level/gstlevel.c
+++ b/gst/level/gstlevel.c
@@ -100,54 +100,49 @@ static GstElementClass *parent_class = NULL;
/*static guint gst_filter_signals[LAST_SIGNAL] = { 0 }; */
GType
-gst_level_get_type(void) {
+gst_level_get_type (void)
+{
static GType level_type = 0;
- if (!level_type) {
- static const GTypeInfo level_info = {
- sizeof(GstLevelClass), NULL,
- NULL,
- (GClassInitFunc)gst_level_class_init,
- NULL,
- NULL,
- sizeof(GstLevel),
- 0,
- (GInstanceInitFunc)gst_level_init,
+ if (!level_type)
+ {
+ static const GTypeInfo level_info =
+ {
+ sizeof (GstLevelClass), NULL, NULL,
+ (GClassInitFunc) gst_level_class_init, NULL, NULL,
+ sizeof (GstLevel), 0,
+ (GInstanceInitFunc) gst_level_init
};
- level_type = g_type_register_static(GST_TYPE_ELEMENT, "GstLevel", &level_info, 0);
+ level_type = g_type_register_static (GST_TYPE_ELEMENT, "GstLevel",
+ &level_info, 0);
}
return level_type;
}
-static void
-gst_level_class_init (GstLevelClass *klass)
+static GstPadConnectReturn
+gst_level_connect (GstPad *pad, GstCaps *caps)
{
- GObjectClass *gobject_class;
- GstElementClass *gstelement_class;
-
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
-
- parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
-
- gobject_class->set_property = gst_level_set_property;
- gobject_class->get_property = gst_level_get_property;
-}
-
-static void
-gst_level_init (GstLevel *filter)
-{
- filter->sinkpad = gst_pad_new_from_template(level_sink_factory (),"sink");
- filter->srcpad = gst_pad_new_from_template(level_src_factory (),"src");
-
- gst_element_add_pad(GST_ELEMENT(filter),filter->sinkpad);
- gst_pad_set_chain_function(filter->sinkpad,gst_level_chain);
- filter->srcpad = gst_pad_new("src",GST_PAD_SRC);
- gst_element_add_pad(GST_ELEMENT(filter),filter->srcpad);
+ GstLevel *filter;
+ GstPad *otherpad;
+
+ filter = GST_LEVEL (gst_pad_get_parent (pad));
+ g_return_val_if_fail (filter != NULL, GST_PAD_CONNECT_REFUSED);
+ g_return_val_if_fail (GST_IS_LEVEL (filter), GST_PAD_CONNECT_REFUSED);
+ otherpad = (pad == filter->srcpad ? filter->sinkpad : filter->srcpad);
+
+ if (GST_CAPS_IS_FIXED (caps))
+ {
+ if (/* !volume_parse_caps (filter, caps) || */
+ !gst_pad_try_set_caps (otherpad, caps))
+ return GST_PAD_CONNECT_REFUSED;
+
+ return GST_PAD_CONNECT_OK;
+ }
+ return GST_PAD_CONNECT_DELAYED;
}
static void
-gst_level_chain (GstPad *pad,GstBuffer *buf)
+gst_level_chain (GstPad *pad, GstBuffer *buf)
{
GstLevel *filter;
gint16 *in_data;
@@ -157,28 +152,28 @@ gst_level_chain (GstPad *pad,GstBuffer *buf)
GstCaps *caps;
- g_return_if_fail(pad != NULL);
- g_return_if_fail(GST_IS_PAD(pad));
- g_return_if_fail(buf != NULL);
+ g_return_if_fail (pad != NULL);
+ g_return_if_fail (GST_IS_PAD (pad));
+ g_return_if_fail (buf != NULL);
- filter = GST_LEVEL(GST_OBJECT_PARENT (pad));
- g_return_if_fail(filter != NULL);
- g_return_if_fail(GST_IS_LEVEL(filter));
+ filter = GST_LEVEL (GST_OBJECT_PARENT (pad));
+ g_return_if_fail (filter != NULL);
+ g_return_if_fail (GST_IS_LEVEL (filter));
caps = NULL;
- caps = GST_PAD_CAPS(pad);
+ caps = GST_PAD_CAPS (pad);
if (caps == NULL)
{
/* FIXME : Please change this to a better warning method ! */
- printf ("WARNING : chain : Could not get caps of pad !\n");
+ g_error ("WARNING: level: Could not get pad caps - caps nego failed !\n");
}
- gst_caps_get_int(caps, "width", &width);
+ gst_caps_get_int (caps, "width", &width);
- in_data = (gint16 *)GST_BUFFER_DATA(buf);
- outbuf=gst_buffer_new();
- GST_BUFFER_DATA(outbuf) = (gchar*)g_new(gint16,GST_BUFFER_SIZE(buf)/2);
- GST_BUFFER_SIZE(outbuf) = GST_BUFFER_SIZE(buf);
+ in_data = (gint16 *) GST_BUFFER_DATA(buf);
+ outbuf = gst_buffer_new();
+ GST_BUFFER_DATA (outbuf) = (gchar*) g_new (gint16, GST_BUFFER_SIZE(buf)/2);
+ GST_BUFFER_SIZE (outbuf) = GST_BUFFER_SIZE(buf);
out_data = (gint16*)GST_BUFFER_DATA(outbuf);
@@ -235,6 +230,35 @@ gst_level_get_property (GObject *object, guint prop_id, GValue *value, GParamSpe
}
}
+static void
+gst_level_class_init (GstLevelClass *klass)
+{
+ GObjectClass *gobject_class;
+ GstElementClass *gstelement_class;
+
+ gobject_class = (GObjectClass*) klass;
+ gstelement_class = (GstElementClass*) klass;
+
+ parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
+
+ gobject_class->set_property = gst_level_set_property;
+ gobject_class->get_property = gst_level_get_property;
+}
+
+static void
+gst_level_init (GstLevel *filter)
+{
+ filter->sinkpad = gst_pad_new_from_template (level_sink_factory (), "sink");
+ gst_pad_set_connect_function (filter->sinkpad, gst_level_connect);
+ filter->srcpad = gst_pad_new_from_template (level_src_factory (), "src");
+ gst_pad_set_connect_function (filter->srcpad, gst_level_connect);
+
+ gst_element_add_pad (GST_ELEMENT (filter), filter->sinkpad);
+ gst_pad_set_chain_function (filter->sinkpad, gst_level_chain);
+ filter->srcpad = gst_pad_new ("src", GST_PAD_SRC);
+ gst_element_add_pad (GST_ELEMENT (filter), filter->srcpad);
+}
+
static gboolean
plugin_init (GModule *module, GstPlugin *plugin)
{