Only try to detect silence when we actually need to, instead of...always.
authorJason Parker <jparker@digium.com>
Wed, 26 Mar 2008 19:16:31 +0000 (19:16 +0000)
committerJason Parker <jparker@digium.com>
Wed, 26 Mar 2008 19:16:31 +0000 (19:16 +0000)
If this is wrong, I'd love to hear why.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@111028 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/dsp.c

index 084a37c..f2d47df 100644 (file)
@@ -1301,7 +1301,11 @@ struct ast_frame *ast_dsp_process(struct ast_channel *chan, struct ast_dsp *dsp,
        /* Initially we do not want to mute anything */
        dsp->mute_fragments = 0;
 
-       res = __ast_dsp_silence_noise(dsp, shortdata, len, &silence, NULL);
+       /* Need to run the silence detection stuff for silence suppression and busy detection */
+       if ((dsp->features & DSP_FEATURE_SILENCE_SUPPRESS) || (dsp->features & DSP_FEATURE_BUSY_DETECT)) {
+               res = __ast_dsp_silence_noise(dsp, shortdata, len, &silence, NULL);
+       }
+
        if ((dsp->features & DSP_FEATURE_SILENCE_SUPPRESS) && silence) {
                memset(&dsp->f, 0, sizeof(dsp->f));
                dsp->f.frametype = AST_FRAME_NULL;