snprintf(costr, sizeof(costr), "a=rtpmap:%d %s/8000\r\n", codec, ast_rtp_lookup_mime_subtype(0, x));
strncat(a, costr, sizeof(a) - strlen(a) - 1);
if (x == AST_RTP_DTMF) {
- /* Indicate we support DTMF... Not sure about 16, but MSN supports it so dang it, we will too... */
+ /* Indicate we support DTMF and FLASH... */
snprintf(costr, sizeof costr, "a=fmtp:%d 0-16\r\n",
codec);
strncat(a, costr, sizeof(a) - strlen(a) - 1);
return &null_frame;
}
ast_log(LOG_DEBUG, "Sending dtmf: %d (%c), at %s\n", rtp->resp, rtp->resp, ast_inet_ntoa(iabuf, sizeof(iabuf), rtp->them.sin_addr));
- rtp->f.frametype = AST_FRAME_DTMF;
- rtp->f.subclass = rtp->resp;
+ if (rtp->resp == 'X') {
+ rtp->f.frametype = AST_FRAME_CONTROL;
+ rtp->f.subclass = AST_CONTROL_FLASH;
+ } else {
+ rtp->f.frametype = AST_FRAME_DTMF;
+ rtp->f.subclass = rtp->resp;
+ }
rtp->f.datalen = 0;
rtp->f.samples = 0;
rtp->f.mallocd = 0;
resp = '#';
} else if (event < 16) {
resp = 'A' + (event - 12);
+ } else if (event < 17) {
+ resp = 'X';
}
if (rtp->resp && (rtp->resp != resp)) {
f = send_dtmf(rtp);
resp = '#';
} else if (event < 16) {
resp = 'A' + (event - 12);
+ } else if (event < 17) {
+ resp = 'X';
}
if (rtp->resp && (rtp->resp != resp)) {
f = send_dtmf(rtp);