mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-26 06:26:41 +00:00
Merge "SDP: Add get/set option calls for RTP sched context per type."
This commit is contained in:
@@ -77,6 +77,39 @@ DEFINE_GETTERS_SETTERS_FOR(enum ast_sdp_options_impl, impl);
|
||||
DEFINE_GETTERS_SETTERS_FOR(enum ast_sdp_options_encryption, encryption);
|
||||
DEFINE_GETTERS_SETTERS_FOR(unsigned int, ssrc);
|
||||
|
||||
struct ast_sched_context *ast_sdp_options_get_sched_type(const struct ast_sdp_options *options, enum ast_media_type type)
|
||||
{
|
||||
struct ast_sched_context *sched = NULL;
|
||||
|
||||
switch (type) {
|
||||
case AST_MEDIA_TYPE_AUDIO:
|
||||
case AST_MEDIA_TYPE_VIDEO:
|
||||
case AST_MEDIA_TYPE_IMAGE:
|
||||
case AST_MEDIA_TYPE_TEXT:
|
||||
sched = options->sched[type];
|
||||
break;
|
||||
case AST_MEDIA_TYPE_UNKNOWN:
|
||||
case AST_MEDIA_TYPE_END:
|
||||
break;
|
||||
}
|
||||
return sched;
|
||||
}
|
||||
|
||||
void ast_sdp_options_set_sched_type(struct ast_sdp_options *options, enum ast_media_type type, struct ast_sched_context *sched)
|
||||
{
|
||||
switch (type) {
|
||||
case AST_MEDIA_TYPE_AUDIO:
|
||||
case AST_MEDIA_TYPE_VIDEO:
|
||||
case AST_MEDIA_TYPE_IMAGE:
|
||||
case AST_MEDIA_TYPE_TEXT:
|
||||
options->sched[type] = sched;
|
||||
break;
|
||||
case AST_MEDIA_TYPE_UNKNOWN:
|
||||
case AST_MEDIA_TYPE_END:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void set_defaults(struct ast_sdp_options *options)
|
||||
{
|
||||
options->dtmf = DEFAULT_DTMF;
|
||||
|
||||
@@ -35,6 +35,8 @@ struct ast_sdp_options {
|
||||
/*! RTP Engine Name */
|
||||
AST_STRING_FIELD(rtp_engine);
|
||||
);
|
||||
/*! Scheduler context for the media stream types (Mainly for RTP) */
|
||||
struct ast_sched_context *sched[AST_MEDIA_TYPE_END];
|
||||
struct {
|
||||
unsigned int rtp_symmetric:1;
|
||||
unsigned int udptl_symmetric:1;
|
||||
|
||||
@@ -151,12 +151,6 @@ static void sdp_state_capabilities_free(struct sdp_state_capabilities *capabilit
|
||||
ast_free(capabilities);
|
||||
}
|
||||
|
||||
/* TODO
|
||||
* This isn't set anywhere yet.
|
||||
*/
|
||||
/*! \brief Scheduler for RTCP purposes */
|
||||
static struct ast_sched_context *sched;
|
||||
|
||||
/*! \brief Internal function which creates an RTP instance */
|
||||
static struct sdp_state_rtp *create_rtp(const struct ast_sdp_options *options,
|
||||
enum ast_media_type media_type)
|
||||
@@ -185,7 +179,8 @@ static struct sdp_state_rtp *create_rtp(const struct ast_sdp_options *options,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
rtp->instance = ast_rtp_instance_new(options->rtp_engine, sched, media_address, NULL);
|
||||
rtp->instance = ast_rtp_instance_new(options->rtp_engine,
|
||||
ast_sdp_options_get_sched_type(options, media_type), media_address, NULL);
|
||||
if (!rtp->instance) {
|
||||
ast_log(LOG_ERROR, "Unable to create RTP instance using RTP engine '%s'\n",
|
||||
options->rtp_engine);
|
||||
|
||||
Reference in New Issue
Block a user