Add extended properties to rtp_engine for RTP retransmission support.

A couple of additional properties are needed in rtp_engine to enable
support for packet retransmission: AST_RTP_PROPERTY_RETRANS_RECV and
AST_RTP_PROPERTY_RETRANS_SEND. These will both be enabled automatically
if an endpoint has the webrtc option enabled. While this adds no
functionality currently, it will serve as a building block for future
changes for RTP retransmission support.

For more information, refer to the wiki page:
https://wiki.asterisk.org/wiki/display/AST/WebRTC+User+Experience+Improvements

Change-Id: Ic598acd042a045f9d10e5bdccb66f4efc9e587cc
This commit is contained in:
Ben Ford
2018-02-22 14:27:26 -06:00
committed by Benjamin Keith Ford
parent d6d520a040
commit 0be1c388e4
2 changed files with 11 additions and 4 deletions

View File

@@ -122,6 +122,10 @@ enum ast_rtp_property {
AST_RTP_PROPERTY_RTCP,
/*! Enable Asymmetric RTP Codecs */
AST_RTP_PROPERTY_ASYMMETRIC_CODEC,
/*! Enable packet retransmission for received packets */
AST_RTP_PROPERTY_RETRANS_RECV,
/*! Enable packet retransmission for sent packets */
AST_RTP_PROPERTY_RETRANS_SEND,
/*!
* \brief Maximum number of RTP properties supported

View File

@@ -219,10 +219,13 @@ static int create_rtp(struct ast_sip_session *session, struct ast_sip_session_me
(session->endpoint->media.tos_audio || session->endpoint->media.cos_audio)) {
ast_rtp_instance_set_qos(session_media->rtp, session->endpoint->media.tos_audio,
session->endpoint->media.cos_audio, "SIP RTP Audio");
} else if (session_media->type == AST_MEDIA_TYPE_VIDEO &&
(session->endpoint->media.tos_video || session->endpoint->media.cos_video)) {
ast_rtp_instance_set_qos(session_media->rtp, session->endpoint->media.tos_video,
session->endpoint->media.cos_video, "SIP RTP Video");
} else if (session_media->type == AST_MEDIA_TYPE_VIDEO) {
ast_rtp_instance_set_prop(session_media->rtp, AST_RTP_PROPERTY_RETRANS_RECV, session->endpoint->media.webrtc);
ast_rtp_instance_set_prop(session_media->rtp, AST_RTP_PROPERTY_RETRANS_SEND, session->endpoint->media.webrtc);
if (session->endpoint->media.tos_video || session->endpoint->media.cos_video) {
ast_rtp_instance_set_qos(session_media->rtp, session->endpoint->media.tos_video,
session->endpoint->media.cos_video, "SIP RTP Video");
}
}
ast_rtp_instance_set_last_rx(session_media->rtp, time(NULL));