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];
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 */
if (!prepend) {
/* Reduce duration by a total silence amount */
+ if (olddspsilence <= dspsilence) {
+ totalsilence += dspsilence;
+ }
+
if (totalsilence > 0)
*duration -= (totalsilence - 200) / 1000;
if (*duration < 0) {