ZAP_CHANNEL_3WAY = (1 << 20),
ZAP_CHANNEL_PROGRESS = (1 << 21),
ZAP_CHANNEL_MEDIA = (1 << 22),
- ZAP_CHANNEL_ANSWERED = (1 << 23)
+ ZAP_CHANNEL_ANSWERED = (1 << 23),
+ ZAP_CHANNEL_MUTE = (1 << 24)
} zap_channel_flag_t;
typedef enum {
}
}
}
-
+
+
if (zap_test_flag(zchan, ZAP_CHANNEL_DTMF_DETECT) && !zap_channel_test_feature(zchan, ZAP_CHANNEL_FEATURE_DTMF_DETECT)) {
teletone_dtmf_detect(&zchan->dtmf_detect, sln, (int)slen);
teletone_dtmf_get(&zchan->dtmf_detect, digit_str, sizeof(digit_str));
if (zap_test_flag(zchan, ZAP_CHANNEL_SUPRESS_DTMF)) {
zchan->skip_read_frames = 20;
}
- if (zchan->skip_read_frames > 0) {
- memset(data, 0, *datalen);
- zchan->skip_read_frames--;
- }
}
}
}
}
+ if (zchan->skip_read_frames > 0 || zap_test_flag(zchan, ZAP_CHANNEL_MUTE)) {
+ memset(data, 0, *datalen);
+ if (zchan->skip_read_frames > 0) {
+ zchan->skip_read_frames--;
+ }
+ }
+
return status;
}