uint16_t in_digit_seq;
uint32_t in_digit_ts;
uint32_t in_digit_sanity;
+ uint32_t in_interleaved;
uint32_t timestamp_dtmf;
uint16_t last_duration;
uint32_t flip;
}
}
+ if (rtp_session->dtmf_data.in_digit_ts) {
+
+ }
+
+
if (rtp_session->dtmf_data.in_digit_ts) {
if (!switch_rtp_ready(rtp_session)) {
goto end;
}
- return_cng_frame();
+
+ if (!rtp_session->dtmf_data.in_interleaved && rtp_session->recv_msg.header.pt != rtp_session->recv_te) {
+ /* Drat, they are sending audio still as well as DTMF ok fine..... *sigh* */
+ rtp_session->dtmf_data.in_interleaved = 1;
+ }
+
+ if (rtp_session->dtmf_data.in_interleaved || (rtp_session->rtp_bugs & RTP_BUG_IGNORE_DTMF_DURATION)) {
+ if (rtp_session->recv_msg.header.pt == rtp_session->recv_te) {
+ goto recvfrom;
+ }
+ } else {
+ return_cng_frame();
+ }
}
timer_check:
}
frame->datalen = bytes;
-
return SWITCH_STATUS_SUCCESS;
}