diff options
-rw-r--r-- | include/asterisk/rtp_engine.h | 11 | ||||
-rw-r--r-- | main/rtp_engine.c | 18 |
2 files changed, 15 insertions, 14 deletions
diff --git a/include/asterisk/rtp_engine.h b/include/asterisk/rtp_engine.h index 376fac8dc..80183ede7 100644 --- a/include/asterisk/rtp_engine.h +++ b/include/asterisk/rtp_engine.h @@ -78,14 +78,13 @@ extern "C" { #include "asterisk/stasis.h" #include "asterisk/vector.h" -/* Maximum number of payloads supported */ -#if defined(LOW_MEMORY) +/*! Maximum number of payload types RTP can support. */ #define AST_RTP_MAX_PT 128 -#else -#define AST_RTP_MAX_PT 196 -#endif -/* Maximum number of generations */ +/*! First dynamic RTP payload type */ +#define AST_RTP_PT_FIRST_DYNAMIC 96 + +/*! Maximum number of generations */ #define AST_RED_MAX_GENERATION 5 /*! diff --git a/main/rtp_engine.c b/main/rtp_engine.c index f139dc454..296d84f2c 100644 --- a/main/rtp_engine.c +++ b/main/rtp_engine.c @@ -1740,22 +1740,24 @@ static void set_next_mime_type(struct ast_format *format, int rtp_code, const ch static void add_static_payload(int map, struct ast_format *format, int rtp_code) { int x; + + ast_assert(map < ARRAY_LEN(static_RTP_PT)); + ast_rwlock_wrlock(&static_RTP_PT_lock); if (map < 0) { /* find next available dynamic payload slot */ - for (x = 96; x < 127; x++) { + for (x = AST_RTP_PT_FIRST_DYNAMIC; x < AST_RTP_MAX_PT; ++x) { if (!static_RTP_PT[x].asterisk_format && !static_RTP_PT[x].rtp_code) { map = x; break; } } - } - - if (map < 0) { - ast_log(LOG_WARNING, "No Dynamic RTP mapping available for format %s\n", - ast_format_get_name(format)); - ast_rwlock_unlock(&static_RTP_PT_lock); - return; + if (map < 0) { + ast_log(LOG_WARNING, "No Dynamic RTP mapping available for format %s\n", + ast_format_get_name(format)); + ast_rwlock_unlock(&static_RTP_PT_lock); + return; + } } if (format) { |