From 3c51f9cfa7e7039ffafafc94a0f9775b8ce2bc4b Mon Sep 17 00:00:00 2001 From: Steve Baker Date: Wed, 12 Sep 2001 11:26:31 +0000 Subject: [PATCH] remove volume and freq args. update to reflect api changes Original commit message from CVS: remove volume and freq args. update to reflect api changes --- gst/elements/gstsinesrc.c | 50 ++++++++++++++----------------------------- plugins/elements/gstsinesrc.c | 50 ++++++++++++++----------------------------- 2 files changed, 32 insertions(+), 68 deletions(-) diff --git a/gst/elements/gstsinesrc.c b/gst/elements/gstsinesrc.c index 75ca6ba..e2ce9d7 100644 --- a/gst/elements/gstsinesrc.c +++ b/gst/elements/gstsinesrc.c @@ -46,10 +46,8 @@ enum { enum { ARG_0, - ARG_VOLUME, ARG_FORMAT, ARG_SAMPLERATE, - ARG_FREQ, ARG_TABLESIZE, ARG_BUFFER_SIZE, }; @@ -130,9 +128,6 @@ gst_sinesrc_class_init (GstSineSrcClass *klass) 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 @@ -142,9 +137,6 @@ gst_sinesrc_class_init (GstSineSrcClass *klass) 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)); @@ -180,9 +172,11 @@ gst_sinesrc_init (GstSineSrc *src) src->seq = 0; dpman = gst_dpman_new ("sinesrc_dpman", GST_ELEMENT(src)); - gst_dpman_add_required_dparam (dpman, "volume", G_TYPE_FLOAT, gst_sinesrc_update_volume, src); - gst_dpman_add_required_dparam (dpman, "freq", G_TYPE_FLOAT, gst_sinesrc_update_freq, src); - + gst_dpman_add_required_dparam_callback (dpman, "volume", G_TYPE_FLOAT, gst_sinesrc_update_volume, src); + gst_dpman_add_required_dparam_callback (dpman, "freq", G_TYPE_FLOAT, gst_sinesrc_update_freq, src); + + src->volume = 1.0; + gst_dpman_set_rate_change_pad(dpman, src->srcpad); GST_ELEMENT_DPARAM_MANAGER(element) = dpman; @@ -230,13 +224,15 @@ gst_sinesrc_get(GstPad *pad) GST_BUFFER_SIZE(buf) = 2 * src->buffer_size; dpman = GST_ELEMENT_DPARAM_MANAGER(GST_ELEMENT(src)); - frame_countdown = GST_DPMAN_FIRST_COUNTDOWN(dpman, src->buffer_size, 0LL); + frame_countdown = GST_DPMAN_PREPROCESS(dpman, src->buffer_size, 0LL); +// GST_DEBUG(GST_CAT_PARAMS, "vol_scale = %f\n", src->vol_scale); + + while(GST_DPMAN_PROCESS_COUNTDOWN(dpman, frame_countdown, i)) { - while(GST_DPMAN_COUNTDOWN(dpman, frame_countdown, i)) { src->table_lookup = (gint)(src->table_pos); src->table_lookup_next = src->table_lookup + 1; src->table_interp = src->table_pos - src->table_lookup; - + // wrap the array lookups if we're out of bounds if (src->table_lookup_next >= src->table_size){ src->table_lookup_next -= src->table_size; @@ -251,7 +247,7 @@ gst_sinesrc_get(GstPad *pad) //no interpolation //samples[i] = src->table_data[src->table_lookup] // * src->vol_scale; - + //linear interpolation samples[i++] = ((src->table_interp *(src->table_data[src->table_lookup_next] @@ -264,7 +260,6 @@ gst_sinesrc_get(GstPad *pad) if (src->newcaps) { gst_sinesrc_force_caps(src); } - return buf; } @@ -278,10 +273,6 @@ gst_sinesrc_set_property (GObject *object, guint prop_id, const GValue *value, G src = GST_SINESRC(object); switch (prop_id) { - case ARG_VOLUME: - src->volume = (gfloat)g_value_get_double (value); - gst_sinesrc_update_vol_scale(src); - break; case ARG_FORMAT: src->format = g_value_get_int (value); src->newcaps=TRUE; @@ -291,12 +282,6 @@ gst_sinesrc_set_property (GObject *object, guint prop_id, const GValue *value, G src->newcaps=TRUE; gst_sinesrc_update_table_inc(src); break; - case ARG_FREQ: { - if (g_value_get_double (value) <= 0.0 || g_value_get_double (value) > src->samplerate/2) - break; - src->freq = (gfloat)g_value_get_double (value); - gst_sinesrc_update_table_inc(src); - break; case ARG_TABLESIZE: src->table_size = g_value_get_int (value); gst_sinesrc_populate_sinetable(src); @@ -305,7 +290,6 @@ gst_sinesrc_set_property (GObject *object, guint prop_id, const GValue *value, G case ARG_BUFFER_SIZE: src->buffer_size = g_value_get_int (value); break; - } default: break; } @@ -321,18 +305,12 @@ gst_sinesrc_get_property (GObject *object, guint prop_id, GValue *value, GParamS src = GST_SINESRC(object); switch (prop_id) { - case ARG_VOLUME: - g_value_set_double (value, (gdouble)(src->volume)); - break; case ARG_FORMAT: g_value_set_int (value, src->format); break; case ARG_SAMPLERATE: g_value_set_int (value, src->samplerate); break; - case ARG_FREQ: - g_value_set_double (value, (gdouble)(src->freq)); - break; case ARG_TABLESIZE: g_value_set_int (value, src->table_size); break; @@ -391,6 +369,8 @@ gst_sinesrc_update_volume(GValue *value, gpointer data) src->volume = g_value_get_float(value); src->vol_scale = 32767.0 * src->volume; + GST_DEBUG(GST_CAT_PARAMS, "volume %f\n", src->volume); + } static void @@ -398,9 +378,11 @@ gst_sinesrc_update_freq(GValue *value, gpointer data) { GstSineSrc *src = (GstSineSrc*)data; g_return_if_fail(GST_IS_SINESRC(src)); - + src->freq = g_value_get_float(value); src->table_inc = src->table_size * src->freq / src->samplerate; + + GST_DEBUG(GST_CAT_PARAMS, "freq %f\n", src->freq); } static inline void diff --git a/plugins/elements/gstsinesrc.c b/plugins/elements/gstsinesrc.c index 75ca6ba..e2ce9d7 100644 --- a/plugins/elements/gstsinesrc.c +++ b/plugins/elements/gstsinesrc.c @@ -46,10 +46,8 @@ enum { enum { ARG_0, - ARG_VOLUME, ARG_FORMAT, ARG_SAMPLERATE, - ARG_FREQ, ARG_TABLESIZE, ARG_BUFFER_SIZE, }; @@ -130,9 +128,6 @@ gst_sinesrc_class_init (GstSineSrcClass *klass) 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 @@ -142,9 +137,6 @@ gst_sinesrc_class_init (GstSineSrcClass *klass) 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)); @@ -180,9 +172,11 @@ gst_sinesrc_init (GstSineSrc *src) src->seq = 0; dpman = gst_dpman_new ("sinesrc_dpman", GST_ELEMENT(src)); - gst_dpman_add_required_dparam (dpman, "volume", G_TYPE_FLOAT, gst_sinesrc_update_volume, src); - gst_dpman_add_required_dparam (dpman, "freq", G_TYPE_FLOAT, gst_sinesrc_update_freq, src); - + gst_dpman_add_required_dparam_callback (dpman, "volume", G_TYPE_FLOAT, gst_sinesrc_update_volume, src); + gst_dpman_add_required_dparam_callback (dpman, "freq", G_TYPE_FLOAT, gst_sinesrc_update_freq, src); + + src->volume = 1.0; + gst_dpman_set_rate_change_pad(dpman, src->srcpad); GST_ELEMENT_DPARAM_MANAGER(element) = dpman; @@ -230,13 +224,15 @@ gst_sinesrc_get(GstPad *pad) GST_BUFFER_SIZE(buf) = 2 * src->buffer_size; dpman = GST_ELEMENT_DPARAM_MANAGER(GST_ELEMENT(src)); - frame_countdown = GST_DPMAN_FIRST_COUNTDOWN(dpman, src->buffer_size, 0LL); + frame_countdown = GST_DPMAN_PREPROCESS(dpman, src->buffer_size, 0LL); +// GST_DEBUG(GST_CAT_PARAMS, "vol_scale = %f\n", src->vol_scale); + + while(GST_DPMAN_PROCESS_COUNTDOWN(dpman, frame_countdown, i)) { - while(GST_DPMAN_COUNTDOWN(dpman, frame_countdown, i)) { src->table_lookup = (gint)(src->table_pos); src->table_lookup_next = src->table_lookup + 1; src->table_interp = src->table_pos - src->table_lookup; - + // wrap the array lookups if we're out of bounds if (src->table_lookup_next >= src->table_size){ src->table_lookup_next -= src->table_size; @@ -251,7 +247,7 @@ gst_sinesrc_get(GstPad *pad) //no interpolation //samples[i] = src->table_data[src->table_lookup] // * src->vol_scale; - + //linear interpolation samples[i++] = ((src->table_interp *(src->table_data[src->table_lookup_next] @@ -264,7 +260,6 @@ gst_sinesrc_get(GstPad *pad) if (src->newcaps) { gst_sinesrc_force_caps(src); } - return buf; } @@ -278,10 +273,6 @@ gst_sinesrc_set_property (GObject *object, guint prop_id, const GValue *value, G src = GST_SINESRC(object); switch (prop_id) { - case ARG_VOLUME: - src->volume = (gfloat)g_value_get_double (value); - gst_sinesrc_update_vol_scale(src); - break; case ARG_FORMAT: src->format = g_value_get_int (value); src->newcaps=TRUE; @@ -291,12 +282,6 @@ gst_sinesrc_set_property (GObject *object, guint prop_id, const GValue *value, G src->newcaps=TRUE; gst_sinesrc_update_table_inc(src); break; - case ARG_FREQ: { - if (g_value_get_double (value) <= 0.0 || g_value_get_double (value) > src->samplerate/2) - break; - src->freq = (gfloat)g_value_get_double (value); - gst_sinesrc_update_table_inc(src); - break; case ARG_TABLESIZE: src->table_size = g_value_get_int (value); gst_sinesrc_populate_sinetable(src); @@ -305,7 +290,6 @@ gst_sinesrc_set_property (GObject *object, guint prop_id, const GValue *value, G case ARG_BUFFER_SIZE: src->buffer_size = g_value_get_int (value); break; - } default: break; } @@ -321,18 +305,12 @@ gst_sinesrc_get_property (GObject *object, guint prop_id, GValue *value, GParamS src = GST_SINESRC(object); switch (prop_id) { - case ARG_VOLUME: - g_value_set_double (value, (gdouble)(src->volume)); - break; case ARG_FORMAT: g_value_set_int (value, src->format); break; case ARG_SAMPLERATE: g_value_set_int (value, src->samplerate); break; - case ARG_FREQ: - g_value_set_double (value, (gdouble)(src->freq)); - break; case ARG_TABLESIZE: g_value_set_int (value, src->table_size); break; @@ -391,6 +369,8 @@ gst_sinesrc_update_volume(GValue *value, gpointer data) src->volume = g_value_get_float(value); src->vol_scale = 32767.0 * src->volume; + GST_DEBUG(GST_CAT_PARAMS, "volume %f\n", src->volume); + } static void @@ -398,9 +378,11 @@ gst_sinesrc_update_freq(GValue *value, gpointer data) { GstSineSrc *src = (GstSineSrc*)data; g_return_if_fail(GST_IS_SINESRC(src)); - + src->freq = g_value_get_float(value); src->table_inc = src->table_size * src->freq / src->samplerate; + + GST_DEBUG(GST_CAT_PARAMS, "freq %f\n", src->freq); } static inline void -- 2.7.4