From 6c28744f769c6caf460e1eb6148ebdb4ae62d893 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Sun, 15 Feb 2009 07:30:17 +0100 Subject: [PATCH] audioresample: Add locking to protect the resampling context When setting the quality/filter-length while PLAYING the resampling context will be destroyed and created again in some cases, which will cause crashes in the transform function if it's called at that time. --- gst/audioresample/gstaudioresample.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gst/audioresample/gstaudioresample.c b/gst/audioresample/gstaudioresample.c index ee4c757c38..308f7abd6d 100644 --- a/gst/audioresample/gstaudioresample.c +++ b/gst/audioresample/gstaudioresample.c @@ -1174,16 +1174,19 @@ gst_audio_resample_set_property (GObject * object, guint prop_id, switch (prop_id) { case PROP_QUALITY: + GST_BASE_TRANSFORM_LOCK (resample); resample->quality = g_value_get_int (value); GST_DEBUG_OBJECT (resample, "new quality %d", resample->quality); gst_audio_resample_update_state (resample, resample->width, resample->channels, resample->inrate, resample->outrate, resample->quality, resample->fp); + GST_BASE_TRANSFORM_UNLOCK (resample); break; case PROP_FILTER_LENGTH:{ gint filter_length = g_value_get_int (value); + GST_BASE_TRANSFORM_LOCK (resample); if (filter_length <= 8) resample->quality = 0; else if (filter_length <= 16) @@ -1212,6 +1215,7 @@ gst_audio_resample_set_property (GObject * object, guint prop_id, gst_audio_resample_update_state (resample, resample->width, resample->channels, resample->inrate, resample->outrate, resample->quality, resample->fp); + GST_BASE_TRANSFORM_UNLOCK (resample); break; } default: