mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-04 20:04:50 +00:00
rtp_engine: allocate RTP dynamic payloads per session
Dynamic payload types were statically defined in Asterisk. This unfortunately limited the number of dynamic payloads that could be registered. With this patch dynamic payload type numbers are now assigned dynamically and per RTP instance. However, in order to limit any issues where some clients expect the old statically defined value this patch makes it so the value Asterisk used to pre- designate is used for the dynamic assignment if available. An option, "rtp_use_dynamic", has also been added (can be set in asterisk.conf) that turns the new dynamic behavior on or off. When off it reverts back to using statically defined payload values. This option defaults to "yes" in Asterisk 15. ASTERISK-26515 #close patches: ASTERISK-26515.diff submitted by jcolp (license 5000 Change-Id: I7653465c5ebeaf968f1a1cc8f3f4f5c4321da7fc
This commit is contained in:
@@ -339,6 +339,7 @@ unsigned int option_dtmfminduration; /*!< Minimum duration of DTMF. */
|
||||
#if defined(HAVE_SYSINFO)
|
||||
long option_minmemfree; /*!< Minimum amount of free system memory - stop accepting calls if free memory falls below this watermark */
|
||||
#endif
|
||||
int ast_option_rtpusedynamic;
|
||||
unsigned int ast_option_rtpptdynamic;
|
||||
|
||||
/*! @} */
|
||||
@@ -602,6 +603,7 @@ static char *handle_show_settings(struct ast_cli_entry *e, int cmd, struct ast_c
|
||||
ast_cli(a->fd, " Transmit silence during rec: %s\n", ast_test_flag(&ast_options, AST_OPT_FLAG_TRANSMIT_SILENCE) ? "Enabled" : "Disabled");
|
||||
ast_cli(a->fd, " Generic PLC: %s\n", ast_test_flag(&ast_options, AST_OPT_FLAG_GENERIC_PLC) ? "Enabled" : "Disabled");
|
||||
ast_cli(a->fd, " Min DTMF duration:: %u\n", option_dtmfminduration);
|
||||
ast_cli(a->fd, " RTP use dynamic payloads: %u\n", ast_option_rtpusedynamic);
|
||||
|
||||
if (ast_option_rtpptdynamic == AST_RTP_PT_LAST_REASSIGN) {
|
||||
ast_cli(a->fd, " RTP dynamic payload types: %u,%u-%u\n",
|
||||
@@ -3499,6 +3501,7 @@ static void ast_readconfig(void)
|
||||
|
||||
/* Set default value */
|
||||
option_dtmfminduration = AST_MIN_DTMF_DURATION;
|
||||
ast_option_rtpusedynamic = 1;
|
||||
ast_option_rtpptdynamic = 35;
|
||||
|
||||
/* init with buildtime config */
|
||||
@@ -3655,6 +3658,8 @@ static void ast_readconfig(void)
|
||||
if (sscanf(v->value, "%30u", &option_dtmfminduration) != 1) {
|
||||
option_dtmfminduration = AST_MIN_DTMF_DURATION;
|
||||
}
|
||||
} else if (!strcasecmp(v->name, "rtp_use_dynamic")) {
|
||||
ast_option_rtpusedynamic = ast_true(v->value);
|
||||
/* http://www.iana.org/assignments/rtp-parameters
|
||||
* RTP dynamic payload types start at 96 normally; extend down to 0 */
|
||||
} else if (!strcasecmp(v->name, "rtp_pt_dynamic")) {
|
||||
|
Reference in New Issue
Block a user