summaryrefslogtreecommitdiffstats
path: root/src/modules
diff options
context:
space:
mode:
authorArun Raghavan <arun.raghavan@collabora.co.uk>2011-06-13 13:42:01 -0700
committerArun Raghavan <arun.raghavan@collabora.co.uk>2011-06-13 15:25:54 -0700
commit4e9328cb934ecbc1bec6acfd40994d8a048dac72 (patch)
treed9295162d4f5c261a9119609a7a30e298dc512e1 /src/modules
parentb2f83b2502233f0fcfbf6bf78df9c03f5265d4de (diff)
echo-cancel: More preprocessing fixes
The speex_preprocess_ctl() function takes a spx_int32_t, but we've been passing a pa_bool_t, which could potentially crash.
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/echo-cancel/module-echo-cancel.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/modules/echo-cancel/module-echo-cancel.c b/src/modules/echo-cancel/module-echo-cancel.c
index c406508c..96eb9ef1 100644
--- a/src/modules/echo-cancel/module-echo-cancel.c
+++ b/src/modules/echo-cancel/module-echo-cancel.c
@@ -1476,6 +1476,8 @@ int pa__init(pa_module*m) {
}
if (u->ec->agc || u->ec->denoise || u->ec->echo_suppress) {
+ spx_int32_t tmp;
+
if (source_ss.channels != 1) {
pa_log("AGC, denoising and echo suppression only work with channels=1");
goto fail;
@@ -1483,8 +1485,10 @@ int pa__init(pa_module*m) {
u->ec->pp_state = speex_preprocess_state_init(u->blocksize / pa_frame_size(&source_ss), source_ss.rate);
- speex_preprocess_ctl(u->ec->pp_state, SPEEX_PREPROCESS_SET_AGC, &u->ec->agc);
- speex_preprocess_ctl(u->ec->pp_state, SPEEX_PREPROCESS_SET_DENOISE, &u->ec->denoise);
+ tmp = u->ec->agc;
+ speex_preprocess_ctl(u->ec->pp_state, SPEEX_PREPROCESS_SET_AGC, &tmp);
+ tmp = u->ec->denoise;
+ speex_preprocess_ctl(u->ec->pp_state, SPEEX_PREPROCESS_SET_DENOISE, &tmp);
if (u->ec->echo_suppress) {
if (u->ec->echo_suppress_attenuation)
speex_preprocess_ctl(u->ec->pp_state, SPEEX_PREPROCESS_SET_ECHO_SUPPRESS, &u->ec->echo_suppress_attenuation);