mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
chan_pjsip: add a new function PJSIP_DTMF_MODE
This function is a replica of SIPDtmfMode, allowing the DTMF mode of a PJSIP call to be modified on a per-call basis ASTERISK-27085 #close Change-Id: I20eef5da3e5d1d3e58b304416bc79683f87e7612
This commit is contained in:
committed by
George Joseph
parent
b3914df10b
commit
65c560894d
@@ -207,10 +207,10 @@ static int create_rtp(struct ast_sip_session *session, struct ast_sip_session_me
|
||||
ice->stop(session_media->rtp);
|
||||
}
|
||||
|
||||
if (session->endpoint->dtmf == AST_SIP_DTMF_RFC_4733 || session->endpoint->dtmf == AST_SIP_DTMF_AUTO || session->endpoint->dtmf == AST_SIP_DTMF_AUTO_INFO) {
|
||||
if (session->dtmf == AST_SIP_DTMF_RFC_4733 || session->dtmf == AST_SIP_DTMF_AUTO || session->dtmf == AST_SIP_DTMF_AUTO_INFO) {
|
||||
ast_rtp_instance_dtmf_mode_set(session_media->rtp, AST_RTP_DTMF_MODE_RFC2833);
|
||||
ast_rtp_instance_set_prop(session_media->rtp, AST_RTP_PROPERTY_DTMF, 1);
|
||||
} else if (session->endpoint->dtmf == AST_SIP_DTMF_INBAND) {
|
||||
} else if (session->dtmf == AST_SIP_DTMF_INBAND) {
|
||||
ast_rtp_instance_dtmf_mode_set(session_media->rtp, AST_RTP_DTMF_MODE_INBAND);
|
||||
}
|
||||
|
||||
@@ -293,11 +293,11 @@ static void get_codecs(struct ast_sip_session *session, const struct pjmedia_sdp
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!tel_event && (session->endpoint->dtmf == AST_SIP_DTMF_AUTO)) {
|
||||
if (!tel_event && (session->dtmf == AST_SIP_DTMF_AUTO)) {
|
||||
ast_rtp_instance_dtmf_mode_set(session_media->rtp, AST_RTP_DTMF_MODE_INBAND);
|
||||
}
|
||||
|
||||
if (session->endpoint->dtmf == AST_SIP_DTMF_AUTO_INFO) {
|
||||
if (session->dtmf == AST_SIP_DTMF_AUTO_INFO) {
|
||||
if (tel_event) {
|
||||
ast_rtp_instance_dtmf_mode_set(session_media->rtp, AST_RTP_DTMF_MODE_RFC2833);
|
||||
} else {
|
||||
@@ -434,7 +434,7 @@ static int set_caps(struct ast_sip_session *session,
|
||||
ast_set_write_format(session->channel, ast_channel_writeformat(session->channel));
|
||||
}
|
||||
|
||||
if ( ((session->endpoint->dtmf == AST_SIP_DTMF_AUTO) || (session->endpoint->dtmf == AST_SIP_DTMF_AUTO_INFO) )
|
||||
if ( ((session->dtmf == AST_SIP_DTMF_AUTO) || (session->dtmf == AST_SIP_DTMF_AUTO_INFO) )
|
||||
&& (ast_rtp_instance_dtmf_mode_get(session_media->rtp) == AST_RTP_DTMF_MODE_RFC2833)
|
||||
&& (session->dsp)) {
|
||||
dsp_features = ast_dsp_get_features(session->dsp);
|
||||
@@ -1314,7 +1314,7 @@ static int create_outgoing_sdp_stream(struct ast_sip_session *session, struct as
|
||||
pj_str_t stmp;
|
||||
pjmedia_sdp_attr *attr;
|
||||
int index = 0;
|
||||
int noncodec = (session->endpoint->dtmf == AST_SIP_DTMF_RFC_4733 || session->endpoint->dtmf == AST_SIP_DTMF_AUTO || session->endpoint->dtmf == AST_SIP_DTMF_AUTO_INFO) ? AST_RTP_DTMF : 0;
|
||||
int noncodec = (session->dtmf == AST_SIP_DTMF_RFC_4733 || session->dtmf == AST_SIP_DTMF_AUTO || session->dtmf == AST_SIP_DTMF_AUTO_INFO) ? AST_RTP_DTMF : 0;
|
||||
int min_packet_size = 0, max_packet_size = 0;
|
||||
int rtp_code;
|
||||
RAII_VAR(struct ast_format_cap *, caps, NULL, ao2_cleanup);
|
||||
|
Reference in New Issue
Block a user