[asterisk-bugs] [JIRA] (ASTERISK-21976) Set more than one codec in dialplan execution using SIP_CODEC (adapted chan_sip:try_suggested_codec)

Matt Jordan (JIRA) noreply at issues.asterisk.org
Fri Jun 28 08:53:03 CDT 2013


    [ https://issues.asterisk.org/jira/browse/ASTERISK-21976?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=207551#comment-207551 ] 

Matt Jordan commented on ASTERISK-21976:
----------------------------------------

A few comments here:

# Patches cannot be supplied inline or in comments on the issue. They must be attached in unified diff format to this issue after signing a license contributor agreeement.
# Improvements and new features are only allowed against trunk, and will not be applied to release branches (particularly LTS releases). Please write the patch against Asterisk trunk.

I've removed the code in the comment section on the issue and put this into Waiting for Feedback - thanks!
                
> Set more than one codec in dialplan execution using SIP_CODEC (adapted chan_sip:try_suggested_codec)
> ----------------------------------------------------------------------------------------------------
>
>                 Key: ASTERISK-21976
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-21976
>             Project: Asterisk
>          Issue Type: Improvement
>      Security Level: None
>          Components: Channels/chan_sip/CodecHandling
>    Affects Versions: 11.4.0
>         Environment: FreeBSD (AMD64) 9.1 using Asterisk provided via ports (at the moment 11.4)
>            Reporter: Dennis Guse
>            Severity: Minor
>
> For video calls, we would like to set the codecs in the dialplan using SIP_CODEC. However, if SIP_CODEC is set, all codecs except the ONE set are disallowed and thus either audio or video is available.
> Attached is a patch for 11.4 that allows SIP_CODEC to contain a list of codecs , e.g. "gsm,h264".
> Here is the code (chan_sip.c):
>  static void try_suggested_sip_codec(struct sip_pvt *p)
>  {
>  	struct ast_format fmt;
> 	const char *codecList;
> 	char *codecListCopy;
> 	struct ast_format_cap *jointcapsCopy;
> 	char *codec;
> 	int firstCodec = 1;
> 	char *strtok_ptr;
>  
>  	ast_format_clear(&fmt);
>  
>  	if (p->outgoing_call) {
> 		codecList = pbx_builtin_getvar_helper(p->owner, "SIP_CODEC_OUTBOUND");
> 	} else if (!(codecList = pbx_builtin_getvar_helper(p->owner, "SIP_CODEC_INBOUND"))) {
> 		codecList = pbx_builtin_getvar_helper(p->owner, "SIP_CODEC");	
>  	}
>  
> 	if (!codecList) 
>  		return;
> 	
> 	codecListCopy = ast_strdupa(codecList);
> 	jointcapsCopy = ast_format_cap_dup(p->jointcaps);
> 	for (codec = strtok_r(codecListCopy, ",", &strtok_ptr); codec; codec = strtok_r(NULL, ",", &strtok_ptr)) {
> 		ast_getformatbyname(ast_strip(codec), &fmt);
> 		if (fmt.id) {
> 			if (ast_format_cap_iscompatible(jointcapsCopy, &fmt)) {
> 				if (firstCodec) {
> 					ast_log(LOG_NOTICE, "Set codec to '%s' for this call because of ${SIP_CODEC} variable\n", codec);
> 					ast_format_cap_set(p->jointcaps, &fmt);
> 					ast_format_cap_set(p->caps, &fmt);
> 					firstCodec = 0;
> 				} else {
> 					ast_log(LOG_NOTICE, "Add codec to '%s' for this call because of ${SIP_CODEC} variable\n", codec);
> 					ast_format_cap_add(p->jointcaps, &fmt);
> 					ast_format_cap_add(p->caps, &fmt);
> 				}
> 			} else 
> 				ast_log(LOG_NOTICE, "Ignoring ${SIP_CODEC} variable because it is not shared by both ends: %s\n", codec);
>  		} else
> 			ast_log(LOG_NOTICE, "Ignoring ${SIP_CODEC} variable because of unrecognized/not configured codec (check allow/disallow in sip.conf): %s\n", codec);
> 	}
> 	ast_format_cap_destroy(jointcapsCopy);
>  	return;
>  } 
> Do you have any feedback?
> Authors: Dennis Guse (dennis.guse at qu.tu-berlin.de) und Frank Haase (fra.haase at googlemail.com).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.asterisk.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira



More information about the asterisk-bugs mailing list