mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	SDP: Add get/set option calls for RTP sched context per type.
Change-Id: I82dc75c63c48904e9e5a49e2205dcc06e88487e4
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