-gst_pitch_setup_algorithm (GstPitch * filter)
+gst_pitch_setup_algorithm (GstPitch * filter, GstPitchAlgorithm algorithm)
- if (filter->algorithm == GST_PITCH_ALGORITHM_HPS) {
+ g_mutex_lock (filter->mutex);
+ if (algorithm == GST_PITCH_ALGORITHM_HPS) {
if (NULL == filter->module)
filter->module = (gint *) g_malloc (RATE * sizeof (gint));
}
if (NULL == filter->module)
filter->module = (gint *) g_malloc (RATE * sizeof (gint));
}
+ filter->algorithm = algorithm;
+ g_mutex_unlock (filter->mutex);
filter->minfreq = 30;
filter->maxfreq = 1500;
filter->message = TRUE;
filter->minfreq = 30;
filter->maxfreq = 1500;
filter->message = TRUE;
- filter->algorithm = DEFAULT_PROP_ALGORITHM;
- gst_pitch_setup_algorithm (filter);
+ filter->mutex = g_mutex_new ();
+
+ gst_pitch_setup_algorithm (filter, DEFAULT_PROP_ALGORITHM);
if (filter->module)
g_free (filter->module);
if (filter->module)
g_free (filter->module);
+ g_mutex_free (filter->mutex);
+
kiss_fft_cleanup ();
G_OBJECT_CLASS (parent_class)->dispose (object);
kiss_fft_cleanup ();
G_OBJECT_CLASS (parent_class)->dispose (object);
filter->maxfreq = g_value_get_int (value);
break;
case PROP_ALGORITHM:
filter->maxfreq = g_value_get_int (value);
break;
case PROP_ALGORITHM:
- filter->algorithm = g_value_get_enum (value);
- gst_pitch_setup_algorithm (filter);
+ gst_pitch_setup_algorithm (filter, g_value_get_enum (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
filter->maxfreq);
/*GST_DEBUG_OBJECT (filter, "min_i = %d, max_i = %d", min_i, max_i); */
filter->maxfreq);
/*GST_DEBUG_OBJECT (filter, "min_i = %d, max_i = %d", min_i, max_i); */
+ g_mutex_lock (filter->mutex);
switch (filter->algorithm) {
case GST_PITCH_ALGORITHM_FFT:
switch (filter->algorithm) {
case GST_PITCH_ALGORITHM_FFT:
+ g_mutex_unlock (filter->mutex);
/*
g_debug("freq %d[%d]\n", frequency, frequency_module);
/*
g_debug("freq %d[%d]\n", frequency, frequency_module);
kiss_fft_cpx *signal;
kiss_fft_cpx *spectrum;
kiss_fft_cpx *signal;
kiss_fft_cpx *spectrum;
+ gint *module;
+ GMutex *mutex;
GstBaseTransformClass parent_class;
};
GstBaseTransformClass parent_class;
};
-GType gst_pithc_get_type (void);
+GType gst_pitch_get_type (void);
G_END_DECLS
#endif /* __GST_PITCH_H__ */
G_END_DECLS
#endif /* __GST_PITCH_H__ */