diff options
Diffstat (limited to 'gst/elements/gstsinesrc.c')
-rw-r--r-- | gst/elements/gstsinesrc.c | 110 |
1 files changed, 57 insertions, 53 deletions
diff --git a/gst/elements/gstsinesrc.c b/gst/elements/gstsinesrc.c index 6a00e1eef0..ea66bd27fa 100644 --- a/gst/elements/gstsinesrc.c +++ b/gst/elements/gstsinesrc.c @@ -83,8 +83,8 @@ static GstPadTemplate *src_temp; static void gst_sinesrc_class_init(GstSineSrcClass *klass); static void gst_sinesrc_init(GstSineSrc *src); static GstPadNegotiateReturn gst_sinesrc_negotiate (GstPad *pad, GstCaps **caps, gpointer *data); -static void gst_sinesrc_set_arg(GtkObject *object,GtkArg *arg,guint id); -static void gst_sinesrc_get_arg(GtkObject *object,GtkArg *arg,guint id); +static void gst_sinesrc_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); +static void gst_sinesrc_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); //static gboolean gst_sinesrc_change_state(GstElement *element, // GstElementState state); //static void gst_sinesrc_close_audio(GstSineSrc *src); @@ -92,58 +92,64 @@ static void gst_sinesrc_get_arg(GtkObject *object,GtkArg *arg,guint id); static void gst_sinesrc_populate_sinetable(GstSineSrc *src); static inline void gst_sinesrc_update_table_inc(GstSineSrc *src); static inline void gst_sinesrc_update_vol_scale(GstSineSrc *src); -void gst_sinesrc_force_caps(GstSineSrc *src); +static void gst_sinesrc_force_caps(GstSineSrc *src); static GstBuffer * gst_sinesrc_get(GstPad *pad); static GstElementClass *parent_class = NULL; //static guint gst_sinesrc_signals[LAST_SIGNAL] = { 0 }; -GtkType +GType gst_sinesrc_get_type(void) { - static GtkType sinesrc_type = 0; + static GType sinesrc_type = 0; if (!sinesrc_type) { - static const GtkTypeInfo sinesrc_info = { - "GstSineSrc", + static const GTypeInfo sinesrc_info = { + sizeof(GstSineSrcClass), NULL, + NULL, + (GClassInitFunc)gst_sinesrc_class_init, + NULL, + NULL, sizeof(GstSineSrc), - sizeof(GstSineSrcClass), - (GtkClassInitFunc)gst_sinesrc_class_init, - (GtkObjectInitFunc)gst_sinesrc_init, - (GtkArgSetFunc)gst_sinesrc_set_arg, - (GtkArgGetFunc)gst_sinesrc_get_arg, - (GtkClassInitFunc)NULL, + 0, + (GInstanceInitFunc)gst_sinesrc_init, }; - sinesrc_type = gtk_type_unique(GST_TYPE_ELEMENT,&sinesrc_info); + sinesrc_type = g_type_register_static(GST_TYPE_ELEMENT, "GstSineSrc", &sinesrc_info, 0); } return sinesrc_type; } static void gst_sinesrc_class_init(GstSineSrcClass *klass) { - GtkObjectClass *gtkobject_class; + GObjectClass *gobject_class; GstElementClass *gstelement_class; - gtkobject_class = (GtkObjectClass*)klass; + gobject_class = (GObjectClass*)klass; gstelement_class = (GstElementClass*)klass; - parent_class = gtk_type_class(GST_TYPE_ELEMENT); - - gtk_object_add_arg_type("GstSineSrc::volume", GTK_TYPE_DOUBLE, - GTK_ARG_READWRITE, ARG_VOLUME); - gtk_object_add_arg_type("GstSineSrc::format", GTK_TYPE_INT, - GTK_ARG_READWRITE, ARG_FORMAT); - gtk_object_add_arg_type("GstSineSrc::samplerate", GTK_TYPE_INT, - GTK_ARG_READWRITE, ARG_SAMPLERATE); - gtk_object_add_arg_type("GstSineSrc::tablesize", GTK_TYPE_INT, - GTK_ARG_READWRITE, ARG_TABLESIZE); - gtk_object_add_arg_type("GstSineSrc::freq", GTK_TYPE_DOUBLE, - GTK_ARG_READWRITE, ARG_FREQ); - gtk_object_add_arg_type("GstSineSrc::buffersize", GTK_TYPE_INT, - GTK_ARG_READWRITE, ARG_BUFFER_SIZE); + parent_class = g_type_class_ref(GST_TYPE_ELEMENT); + + g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_VOLUME, + g_param_spec_double("volume","volume","volume", + 0.0, 1.0, 0.0,G_PARAM_READWRITE)); // CHECKME + g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_FORMAT, + g_param_spec_int("format","format","format", + G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); // CHECKME + g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_SAMPLERATE, + g_param_spec_int("samplerate","samplerate","samplerate", + G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); // CHECKME + g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_TABLESIZE, + g_param_spec_int("tablesize","tablesize","tablesize", + G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); // CHECKME + g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_FREQ, + g_param_spec_double("freq","freq","freq", + 0.0,G_MAXDOUBLE, 440.0,G_PARAM_READWRITE)); // CHECKME + g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_BUFFER_SIZE, + g_param_spec_int("buffersize","buffersize","buffersize", + 0, G_MAXINT, 1024, G_PARAM_READWRITE)); - gtkobject_class->set_arg = gst_sinesrc_set_arg; - gtkobject_class->get_arg = gst_sinesrc_get_arg; + gobject_class->set_property = gst_sinesrc_set_property; + gobject_class->get_property = gst_sinesrc_get_property; // gstelement_class->change_state = gst_sinesrc_change_state; } @@ -246,42 +252,40 @@ gst_sinesrc_get(GstPad *pad) } static void -gst_sinesrc_set_arg(GtkObject *object,GtkArg *arg,guint id) { +gst_sinesrc_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GstSineSrc *src; /* it's not null if we got it, but it might not be ours */ g_return_if_fail(GST_IS_SINESRC(object)); src = GST_SINESRC(object); - switch (id) { + switch (prop_id) { case ARG_VOLUME: - if (GTK_VALUE_DOUBLE(*arg) < 0.0 || GTK_VALUE_DOUBLE(*arg) > 1.0) - break; - src->volume = GTK_VALUE_DOUBLE(*arg); + src->volume = g_value_get_double (value); gst_sinesrc_update_vol_scale(src); break; case ARG_FORMAT: - src->format = GTK_VALUE_INT(*arg); + src->format = g_value_get_int (value); src->newcaps=TRUE; break; case ARG_SAMPLERATE: - src->samplerate = GTK_VALUE_INT(*arg); + src->samplerate = g_value_get_int (value); src->newcaps=TRUE; gst_sinesrc_update_table_inc(src); break; case ARG_FREQ: { - if (GTK_VALUE_DOUBLE(*arg) <= 0.0 || GTK_VALUE_DOUBLE(*arg) > src->samplerate/2) + if (g_value_get_double (value) <= 0.0 || g_value_get_double (value) > src->samplerate/2) break; - src->freq = GTK_VALUE_DOUBLE(*arg); + src->freq = g_value_get_double (value); gst_sinesrc_update_table_inc(src); break; case ARG_TABLESIZE: - src->table_size = GTK_VALUE_INT(*arg); + src->table_size = g_value_get_int (value); gst_sinesrc_populate_sinetable(src); gst_sinesrc_update_table_inc(src); break; case ARG_BUFFER_SIZE: - src->buffer_size = GTK_VALUE_INT(*arg); + src->buffer_size = g_value_get_int (value); break; } default: @@ -290,34 +294,34 @@ gst_sinesrc_set_arg(GtkObject *object,GtkArg *arg,guint id) { } static void -gst_sinesrc_get_arg(GtkObject *object,GtkArg *arg,guint id) { +gst_sinesrc_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GstSineSrc *src; /* it's not null if we got it, but it might not be ours */ g_return_if_fail(GST_IS_SINESRC(object)); src = GST_SINESRC(object); - switch (id) { + switch (prop_id) { case ARG_VOLUME: - GTK_VALUE_DOUBLE(*arg) = src->volume; + g_value_set_double (value, src->volume); break; case ARG_FORMAT: - GTK_VALUE_INT(*arg) = src->format; + g_value_set_int (value, src->format); break; case ARG_SAMPLERATE: - GTK_VALUE_INT(*arg) = src->samplerate; + g_value_set_int (value, src->samplerate); break; case ARG_FREQ: - GTK_VALUE_DOUBLE(*arg) = src->freq; + g_value_set_double (value, src->freq); break; case ARG_TABLESIZE: - GTK_VALUE_INT(*arg) = src->table_size; + g_value_set_int (value, src->table_size); break; case ARG_BUFFER_SIZE: - GTK_VALUE_INT(*arg) = src->buffer_size; + g_value_set_int (value, src->buffer_size); break; default: - arg->type = GTK_TYPE_INVALID; + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } @@ -372,7 +376,7 @@ gst_sinesrc_update_vol_scale(GstSineSrc *src) src->vol_scale = 32767 * src->volume; } -void +static void gst_sinesrc_force_caps(GstSineSrc *src) { GstCaps *caps; |