summaryrefslogtreecommitdiffstats
path: root/ext/esd/esdmon.c
diff options
context:
space:
mode:
authorDavid Schleef <ds@schleef.org>2003-12-22 01:47:09 +0000
committerDavid Schleef <ds@schleef.org>2003-12-22 01:47:09 +0000
commitce51f6173ca1c37d90f8e2e316d90316583d7755 (patch)
tree270b121765a11455f5bf8166b526d7ac336dc56c /ext/esd/esdmon.c
parentf43f0a9fd781bafab689e46bd936af9cb5ed2690 (diff)
Merge CAPS branch
Original commit message from CVS: Merge CAPS branch
Diffstat (limited to 'ext/esd/esdmon.c')
-rw-r--r--ext/esd/esdmon.c105
1 files changed, 49 insertions, 56 deletions
diff --git a/ext/esd/esdmon.c b/ext/esd/esdmon.c
index 2ddb1770..e2a91ed4 100644
--- a/ext/esd/esdmon.c
+++ b/ext/esd/esdmon.c
@@ -52,38 +52,31 @@ enum {
ARG_HOST,
};
-GST_PAD_TEMPLATE_FACTORY (src_factory,
- "src", /* the name of the pads */
- GST_PAD_SRC, /* type of the pad */
- GST_PAD_ALWAYS, /* ALWAYS/SOMETIMES */
- GST_CAPS_NEW (
- "esdmon_src", /* the name of the caps */
- "audio/x-raw-int", /* the mime type of the caps */
- /* Properties follow: */
- "endianness", GST_PROPS_INT (G_BYTE_ORDER),
- "signed", GST_PROPS_LIST (
- GST_PROPS_BOOLEAN (TRUE),
- GST_PROPS_BOOLEAN (FALSE)
- ),
- "width", GST_PROPS_LIST (
- GST_PROPS_INT (8),
- GST_PROPS_INT (16)
- ),
- "depth", GST_PROPS_LIST (
- GST_PROPS_INT (8),
- GST_PROPS_INT (16)
- ),
- "rate", GST_PROPS_INT_RANGE (8000, 96000),
- "channels", GST_PROPS_LIST (
- GST_PROPS_INT (1),
- GST_PROPS_INT (2)
- )
+static GstStaticPadTemplate src_factory =
+GST_STATIC_PAD_TEMPLATE (
+ "src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (
+ "audio/x-raw-int, "
+ "endianness = (int) " G_STRINGIFY (G_BYTE_ORDER) ", "
+ "signed = (boolean) TRUE, "
+ "width = (int) 16, "
+ "depth = (int) 16, "
+ "rate = [ 8000, 96000 ], "
+ "channels = [ 1, 2 ]; "
+ "audio/x-raw-int, "
+ "signed = (boolean) FALSE, "
+ "width = (int) 8, "
+ "depth = (int) 8, "
+ "rate = [ 8000, 96000 ], "
+ "channels = [ 1, 2 ]"
)
);
static void gst_esdmon_base_init (gpointer g_class);
-static void gst_esdmon_class_init (GstEsdmonClass *klass);
-static void gst_esdmon_init (GstEsdmon *esdmon);
+static void gst_esdmon_class_init (gpointer g_class, gpointer class_data);
+static void gst_esdmon_init (GTypeInstance *instance, gpointer g_class);
static gboolean gst_esdmon_open_audio (GstEsdmon *src);
static void gst_esdmon_close_audio (GstEsdmon *src);
@@ -143,12 +136,12 @@ gst_esdmon_get_type (void)
sizeof(GstEsdmonClass),
gst_esdmon_base_init,
NULL,
- (GClassInitFunc)gst_esdmon_class_init,
+ gst_esdmon_class_init,
NULL,
NULL,
sizeof(GstEsdmon),
0,
- (GInstanceInitFunc)gst_esdmon_init,
+ gst_esdmon_init,
};
esdmon_type = g_type_register_static(GST_TYPE_ELEMENT, "GstEsdmon", &esdmon_info, 0);
}
@@ -160,37 +153,35 @@ gst_esdmon_base_init (gpointer g_class)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
- gst_element_class_add_pad_template (element_class, GST_PAD_TEMPLATE_GET (src_factory));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&src_factory));
gst_element_class_set_details (element_class, &esdmon_details);
}
static void
-gst_esdmon_class_init (GstEsdmonClass *klass)
+gst_esdmon_class_init (gpointer g_class, gpointer class_data)
{
- GObjectClass *gobject_class;
- GstElementClass *gstelement_class;
+ GObjectClass *gobject_class = G_OBJECT_CLASS (g_class);
+ GstElementClass *gstelement_class = GST_ELEMENT_CLASS (g_class);
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
+ parent_class = g_type_class_peek_parent (g_class);
- parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
-
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_BYTESPERREAD,
+ g_object_class_install_property(gobject_class, ARG_BYTESPERREAD,
g_param_spec_ulong("bytes_per_read","bytes_per_read","bytes_per_read",
0,G_MAXULONG,0,G_PARAM_READWRITE)); /* CHECKME */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_CUROFFSET,
+ g_object_class_install_property(gobject_class, ARG_CUROFFSET,
g_param_spec_ulong("curoffset","curoffset","curoffset",
0,G_MAXULONG,0,G_PARAM_READABLE)); /* CHECKME */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_DEPTH,
+ g_object_class_install_property(gobject_class, ARG_DEPTH,
g_param_spec_enum("depth","depth","depth",
GST_TYPE_ESDMON_DEPTHS,16,G_PARAM_READWRITE)); /* CHECKME! */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_CHANNELS,
+ g_object_class_install_property(gobject_class, ARG_CHANNELS,
g_param_spec_enum("channels","channels","channels",
GST_TYPE_ESDMON_CHANNELS,2,G_PARAM_READWRITE)); /* CHECKME! */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_RATE,
+ g_object_class_install_property(gobject_class, ARG_RATE,
g_param_spec_int("frequency","frequency","frequency",
G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); /* CHECKME */
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_HOST,
+ g_object_class_install_property(gobject_class, ARG_HOST,
g_param_spec_string("host","host","host",
NULL, G_PARAM_READWRITE)); /* CHECKME */
@@ -201,10 +192,13 @@ gst_esdmon_class_init (GstEsdmonClass *klass)
}
static void
-gst_esdmon_init(GstEsdmon *esdmon)
+gst_esdmon_init(GTypeInstance *instance, gpointer g_class)
{
+ GstEsdmon *esdmon = GST_ESDMON (instance);
+
esdmon->srcpad = gst_pad_new_from_template (
- GST_PAD_TEMPLATE_GET (src_factory), "src");
+ gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS (esdmon), "src"),
+ "src");
gst_pad_set_get_function(esdmon->srcpad, gst_esdmon_get);
gst_element_add_pad(GST_ELEMENT(esdmon), esdmon->srcpad);
@@ -262,17 +256,16 @@ gst_esdmon_get (GstPad *pad)
if (!GST_PAD_CAPS (pad)) {
gint sign = (esdmon->depth == 8 ? FALSE : TRUE);
/* set caps on src pad */
+ /* FIXME: do this dynamically */
if (gst_pad_try_set_caps (esdmon->srcpad,
- GST_CAPS_NEW (
- "oss_src",
- "audio/x-raw-int",
- "endianness", GST_PROPS_INT (G_BYTE_ORDER), /*FIXME */
- "signed", GST_PROPS_BOOLEAN (sign), /*FIXME */
- "width", GST_PROPS_INT (esdmon->depth),
- "depth", GST_PROPS_INT (esdmon->depth),
- "rate", GST_PROPS_INT (esdmon->frequency),
- "channels", GST_PROPS_INT (esdmon->channels)
- )) <= 0)
+ gst_caps_new_simple ("audio/x-raw-int",
+ "endianness", G_TYPE_INT, G_BYTE_ORDER,
+ "signed", G_TYPE_BOOLEAN, sign,
+ "width", G_TYPE_INT, esdmon->depth,
+ "depth", G_TYPE_INT, esdmon->depth,
+ "rate", G_TYPE_INT, esdmon->frequency,
+ "channels", G_TYPE_INT, esdmon->channels
+ )) <= 0)
{
gst_element_error (GST_ELEMENT (esdmon), "could not set caps");
return NULL;