/* get notified of caps and plug in the correct process function */ static gboolean gst_audio_wsinclimit_setup (GstAudioFilter * base, const GstAudioInfo * info) { GstAudioWSincLimit *self = GST_AUDIO_WSINC_LIMIT (base); gst_audio_wsinclimit_build_kernel (self, info); return GST_AUDIO_FILTER_CLASS (parent_class)->setup (base, info); }
static void gst_audio_wsinclimit_finalize (GObject * object) { GstAudioWSincLimit *self = GST_AUDIO_WSINC_LIMIT (object); g_mutex_clear (&self->lock); G_OBJECT_CLASS (parent_class)->finalize (object); }
/* get notified of caps and plug in the correct process function */ static gboolean gst_audio_wsinclimit_setup (GstAudioFilter * base, GstRingBufferSpec * format) { GstAudioWSincLimit *self = GST_AUDIO_WSINC_LIMIT (base); gst_audio_wsinclimit_build_kernel (self); return GST_AUDIO_FILTER_CLASS (parent_class)->setup (base, format); }
static void gst_audio_wsinclimit_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) { GstAudioWSincLimit *self = GST_AUDIO_WSINC_LIMIT (object); g_return_if_fail (GST_IS_AUDIO_WSINC_LIMIT (self)); switch (prop_id) { case PROP_LENGTH:{ gint val; g_mutex_lock (&self->lock); val = g_value_get_int (value); if (val % 2 == 0) val++; if (val != self->kernel_length) { gst_audio_fx_base_fir_filter_push_residue (GST_AUDIO_FX_BASE_FIR_FILTER (self)); self->kernel_length = val; gst_audio_wsinclimit_build_kernel (self, NULL); } g_mutex_unlock (&self->lock); break; } case PROP_FREQUENCY: g_mutex_lock (&self->lock); self->cutoff = g_value_get_float (value); gst_audio_wsinclimit_build_kernel (self, NULL); g_mutex_unlock (&self->lock); break; case PROP_MODE: g_mutex_lock (&self->lock); self->mode = g_value_get_enum (value); gst_audio_wsinclimit_build_kernel (self, NULL); g_mutex_unlock (&self->lock); break; case PROP_WINDOW: g_mutex_lock (&self->lock); self->window = g_value_get_enum (value); gst_audio_wsinclimit_build_kernel (self, NULL); g_mutex_unlock (&self->lock); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static void gst_audio_wsinclimit_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) { GstAudioWSincLimit *self = GST_AUDIO_WSINC_LIMIT (object); switch (prop_id) { case PROP_LENGTH: g_value_set_int (value, self->kernel_length); break; case PROP_FREQUENCY: g_value_set_float (value, self->cutoff); break; case PROP_MODE: g_value_set_enum (value, self->mode); break; case PROP_WINDOW: g_value_set_enum (value, self->window); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }