diff options
author | Alexander Traud <pabstraud@compuserve.com> | 2015-10-21 16:51:11 +0200 |
---|---|---|
committer | Alexander Traud <pabstraud@compuserve.com> | 2015-10-21 09:54:15 -0500 |
commit | 869ef2a8ee4e4df271227d6b9b48470e44ad4831 (patch) | |
tree | 176708b4a368a24ae22933a559166b2e79279029 /channels/chan_sip.c | |
parent | 7c560a9a31ce93ae35ac80ca7f098929fbc5c6d5 (diff) |
chan_sip: Fix autoframing=yes.
With Asterisk 13, the structures ast_format and ast_codec changed. Because of
that, the paketization timing (framing) of the RTP channel moved away from the
formats/codecs. In the course of that change, the ptime of the callee was not
honored anymore, when the optional autoframing was enabled.
ASTERISK-25484 #close
Change-Id: Ic600ccaa125e705922f89c72212c698215d239b4
Diffstat (limited to 'channels/chan_sip.c')
-rw-r--r-- | channels/chan_sip.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 051bb2bc4..8a7ca5454 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -11095,7 +11095,7 @@ static int process_sdp_a_audio(const char *a, struct sip_pvt *p, struct ast_rtp_ if (framing && p->autoframing) { ast_debug(1, "Setting framing to %ld\n", framing); - ast_rtp_codecs_set_framing(ast_rtp_instance_get_codecs(p->rtp), framing); + ast_format_cap_set_framing(p->caps, framing); } found = TRUE; } else if (sscanf(a, "rtpmap: %30u %127[^/]/%30u", &codec, mimeSubtype, &sample_rate) == 3) { @@ -13384,6 +13384,11 @@ static enum sip_result add_sdp(struct sip_request *resp, struct sip_pvt *p, int ast_str_append(&a_audio, 0, "a=maxptime:%d\r\n", max_audio_packet_size); } + if (!ast_test_flag(&p->flags[0], SIP_OUTGOING)) { + ast_debug(1, "Setting framing on incoming call: %u\n", min_audio_packet_size); + ast_rtp_codecs_set_framing(ast_rtp_instance_get_codecs(p->rtp), min_audio_packet_size); + } + if (!doing_directmedia) { if (ast_test_flag(&p->flags[2], SIP_PAGE3_ICE_SUPPORT)) { add_ice_to_sdp(p->rtp, &a_audio); @@ -13676,10 +13681,6 @@ static int transmit_response_with_sdp(struct sip_pvt *p, const char *msg, const add_cc_call_info_to_response(p, &resp); } if (p->rtp) { - if (!p->autoframing && !ast_test_flag(&p->flags[0], SIP_OUTGOING)) { - ast_debug(1, "Setting framing from config on incoming call\n"); - ast_rtp_codecs_set_framing(ast_rtp_instance_get_codecs(p->rtp), ast_format_cap_get_framing(p->caps)); - } ast_rtp_instance_activate(p->rtp); try_suggested_sip_codec(p); if (p->t38.state == T38_ENABLED) { |