codec negotiation: add incoming_call_offer_prefs option

Add a new option, incoming_call_offer_pref, to res_pjsip endpoints that
specifies the preferred order of codecs after receiving an offer.

This patch does the following:

  Adds a new enumeration, ast_sip_call_codec_pref, used by the the new
configuration option that's added to the endpoint media structure.

  Adds a new ast_sip_session_caps structure that's set for each session media
object.

  Creates a new file, res_pjsip_session_caps that "implements" the new
structure and option, and is compiled into the res_pjsip_session library.

ASTERISK-28756 #close

Change-Id: I35e7a2a0c236cfb6bd9cdf89539f57a1ffefc76f
This commit is contained in:
Kevin Harwell
2020-02-24 12:47:46 -06:00
parent 87fda066ea
commit 06dada3f01
11 changed files with 484 additions and 20 deletions

View File

@@ -509,6 +509,24 @@ enum ast_sip_session_redirect {
AST_SIP_REDIRECT_URI_PJSIP,
};
/*!
* \brief Incoming/Outgoing call offer/answer joint codec preference.
*/
enum ast_sip_call_codec_pref {
/*! Prefer, and order by local values */
AST_SIP_CALL_CODEC_PREF_LOCAL,
/*! Prefer, and order by local values (intersection) */
AST_SIP_CALL_CODEC_PREF_LOCAL_LIMIT,
/*! Prefer, and order by local values (top/first only) */
AST_SIP_CALL_CODEC_PREF_LOCAL_SINGLE,
/*! Prefer, and order by remote values */
AST_SIP_CALL_CODEC_PREF_REMOTE,
/*! Prefer, and order by remote values (intersection) */
AST_SIP_CALL_CODEC_PREF_REMOTE_LIMIT,
/*! Prefer, and order by remote values (top/first only) */
AST_SIP_CALL_CODEC_PREF_REMOTE_SINGLE,
};
/*!
* \brief Session timers options
*/
@@ -750,6 +768,8 @@ struct ast_sip_endpoint_media_configuration {
unsigned int bundle;
/*! Enable webrtc settings and defaults */
unsigned int webrtc;
/*! Codec preference for an incoming offer */
enum ast_sip_call_codec_pref incoming_call_offer_pref;
};
/*!