=== app.c ================================================================== --- app.c (revision 5727) +++ app.c (local) @@ -678,6 +678,7 @@ struct ast_dsp *sildet = NULL; /* silence detector dsp */ int totalsilence = 0; int dspsilence = 0; + int olddspsilence = 0; int rfmt = 0; struct ast_silence_generator *silgen = NULL; char prependfile[80]; @@ -804,8 +805,11 @@ if (maxsilence > 0) { dspsilence = 0; ast_dsp_silence(sildet, f, &dspsilence); - totalsilence += dspsilence; + if (olddspsilence > dspsilence) + totalsilence += olddspsilence; + olddspsilence = dspsilence; + if (dspsilence > maxsilence) { /* Ended happily with silence */ ast_verb(3, "Recording automatically stopped after a silence of %d seconds\n", dspsilence/1000); @@ -884,6 +888,9 @@ if (!prepend) { /* Reduce duration by a total silence amount */ + if (olddspsilence <= dspsilence) + totalsilence += dspsilence; + if (totalsilence > 0) *duration -= (totalsilence - 200) / 1000; if (*duration < 0) {