Index: bridges/bridge_softmix.c =================================================================== --- bridges/bridge_softmix.c (revision 110330) +++ bridges/bridge_softmix.c (working copy) @@ -46,7 +46,7 @@ #include "asterisk/slinfactory.h" #define SOFTMIX_INTERVAL 20 /* Valid options are 10, 20, and 30 */ -#define SOFTMIX_SAMPLES (160*(SOFTMIX_INTERVAL/10)) +#define SOFTMIX_SAMPLES (320 * (SOFTMIX_INTERVAL / 10)) struct softmix_channel { ast_mutex_t lock; @@ -75,7 +75,7 @@ /* Setup frame parameters */ sc->frame.frametype = AST_FRAME_VOICE; - sc->frame.subclass = AST_FORMAT_SLINEAR; + sc->frame.subclass = AST_FORMAT_SLINEAR16; sc->frame.data = sc->final_buf; sc->frame.datalen = sizeof(sc->final_buf); sc->frame.samples = SOFTMIX_SAMPLES; @@ -115,7 +115,7 @@ ast_mutex_lock(&sc->lock); /* If a frame was provided add it to the smoother */ - if (frame->frametype == AST_FRAME_VOICE && frame->subclass == AST_FORMAT_SLINEAR) + if (frame->frametype == AST_FRAME_VOICE && frame->subclass == AST_FORMAT_SLINEAR16) ast_slinfactory_feed(&sc->factory, frame); /* If a frame is ready to be written out, do so */ @@ -210,10 +210,10 @@ int adjust = abs(skew-previous_skew), new_adjust = 0; if (adjust > 0) new_adjust = abs(adjust-last_adjust); - base = ast_tvadd(base, ast_tv(0, ((SOFTMIX_INTERVAL-new_adjust)+SOFTMIX_INTERVAL)*1000)); + base = ast_tvadd(base, ast_tv(0, ((SOFTMIX_INTERVAL - new_adjust) + SOFTMIX_INTERVAL) * 1000)); last_adjust = new_adjust; } else { - base = ast_tvadd(base, ast_tv(0, (SOFTMIX_INTERVAL*2)*1000)); + base = ast_tvadd(base, ast_tv(0, (SOFTMIX_INTERVAL * 2) * 1000)); } /* Calculate next time until we should wake up */ @@ -242,7 +242,7 @@ .name = "softmix", .capabilities = AST_BRIDGE_CAPABILITY_MULTIMIX | AST_BRIDGE_CAPABILITY_THREAD | AST_BRIDGE_CAPABILITY_MULTITHREADED, .preference = AST_BRIDGE_PREFERENCE_LOW, - .formats = AST_FORMAT_SLINEAR, + .formats = AST_FORMAT_SLINEAR16, .join = softmix_bridge_join, .leave = softmix_bridge_leave, .write = softmix_bridge_write,