[asterisk-dev] Fwd: [svn-commits] kpfleming: branch 1.4 r46153 - in /branches/1.4: channels/ main/

Olle E Johansson oej at edvina.net
Wed Oct 25 05:03:23 MST 2006


Cool. We're back to experimental in the 1.4 branch, I thought that  
was trunk only.
I have some new ideas I want to test too...

(Could not resist, sorry...)

/O

Vidarebefordrat brev:

> Från: svn-commits at lists.digium.com
> Datum: onsdag 25 okt 2006 02.10.54 GMT+02:00
> Till: asterisk-commits at lists.digium.com, svn-commits at lists.digium.com
> Ämne: [svn-commits] kpfleming: branch 1.4 r46153 - in /branches/ 
> 1.4: channels/ main/
>
> Author: kpfleming
> Date: Tue Oct 24 19:10:54 2006
> New Revision: 46153
>
> URL: http://svn.digium.com/view/asterisk?rev=46153&view=rev
> Log:
> code zone experiment: don't offer formats in the outbound INVITE  
> that aren't either passthrough or translatable
>
> Modified:
>     branches/1.4/channels/chan_sip.c
>     branches/1.4/main/translate.c
>
> Modified: branches/1.4/channels/chan_sip.c
> URL: http://svn.digium.com/view/asterisk/branches/1.4/channels/ 
> chan_sip.c?rev=46153&r1=46152&r2=46153&view=diff
> ====================================================================== 
> ========
> --- branches/1.4/channels/chan_sip.c (original)
> +++ branches/1.4/channels/chan_sip.c Tue Oct 24 19:10:54 2006
> @@ -147,6 +147,7 @@
>  #include "asterisk/abstract_jb.h"
>  #include "asterisk/compiler.h"
>  #include "asterisk/threadstorage.h"
> +#include "asterisk/translate.h"
>
>  #ifndef FALSE
>  #define FALSE    0
> @@ -924,7 +925,7 @@
>  	unsigned int sipoptions;		/*!< Supported SIP options on the other  
> end */
>  	struct ast_codec_pref prefs;		/*!< codec prefs */
>  	int capability;				/*!< Special capability (codec) */
> -	int jointcapability;			/*!< Supported capability at both ends  
> (codecs ) */
> +	int jointcapability;			/*!< Supported capability at both ends  
> (codecs) */
>  	int peercapability;			/*!< Supported peer capability */
>  	int prefcodec;				/*!< Preferred codec (outbound only) */
>  	int noncodeccapability;			/*!< DTMF RFC2833 telephony-event */
> @@ -6023,15 +6024,13 @@
>  	if (p->redirip.sin_addr.s_addr) {
>  		dest.sin_port = p->redirip.sin_port;
>  		dest.sin_addr = p->redirip.sin_addr;
> -		if (p->redircodecs)
> -			capability = p->redircodecs;
>  	} else {
>  		dest.sin_addr = p->ourip;
>  		dest.sin_port = sin.sin_port;
>  	}
>
>  	/* Ok, let's start working with codec selection here */
> -	capability = p->jointcapability;
> +	capability = ast_translate_available_formats(p->jointcapability,  
> p->prefcodec);
>
>  	if (option_debug > 1) {
>  		char codecbuf[BUFSIZ];
> @@ -6039,26 +6038,25 @@
>  		ast_log(LOG_DEBUG, "** Our prefcodec: %s \n",  
> ast_getformatname_multiple(codecbuf, sizeof(codecbuf), p->prefcodec));
>  	}
>  	
> -	if ((ast_test_flag(&p->t38.t38support, SIP_PAGE2_T38SUPPORT_RTP))) {
> +	if (ast_test_flag(&p->t38.t38support, SIP_PAGE2_T38SUPPORT_RTP)) {
>  		ast_build_string(&m_audio_next, &m_audio_left, " %d", 191);
>  		ast_build_string(&a_audio_next, &a_audio_left, "a=rtpmap:%d %s/%d 
> \r\n", 191, "t38", 8000);
>  	}
>
>  	/* Check if we need video in this call */
> -	if((capability & AST_FORMAT_VIDEO_MASK) && !ast_test_flag(&p- 
> >flags[0], SIP_NOVIDEO)) {
> +	if ((capability & AST_FORMAT_VIDEO_MASK) && !ast_test_flag(&p- 
> >flags[0], SIP_NOVIDEO)) {
>  		if (p->vrtp) {
>  			needvideo = TRUE;
>  			if (option_debug > 1)
> -				ast_log(LOG_DEBUG, "This call needs video offers! \n");
> +				ast_log(LOG_DEBUG, "This call needs video offers!\n");
>  		} else if (option_debug > 1)
> -			ast_log(LOG_DEBUG, "This call needs video offers, but there's  
> no video support enabled ! \n");
> +			ast_log(LOG_DEBUG, "This call needs video offers, but there's  
> no video support enabled!\n");
>  	}
>  		
>
>  	/* Ok, we need video. Let's add what we need for video and set  
> codecs.
>  	   Video is handled differently than audio since we can not  
> transcode. */
>  	if (needvideo) {
> -
>  		/* Determine video destination */
>  		if (p->vredirip.sin_addr.s_addr) {
>  			vdest.sin_addr = p->vredirip.sin_addr;
> @@ -6074,31 +6072,8 @@
>  			snprintf(bandwidth, sizeof(bandwidth), "b=CT:%d\r\n", p- 
> >maxcallbitrate);
>  		if (debug)
>  			ast_verbose("Video is at %s port %d\n", ast_inet_ntoa(p- 
> >ourip), ntohs(vsin.sin_port));	
> -
> -		/* For video, we can't negotiate video offers. Let's compare the  
> incoming call with what we got. */
> -		if (p->prefcodec) {
> -			int videocapability = (capability & p->prefcodec) &  
> AST_FORMAT_VIDEO_MASK; /* Outbound call */
> -		
> -			/*! \todo XXX We need to select one codec, not many, since  
> there's no transcoding */
> -
> -			/* Now, merge this video capability into capability while  
> removing unsupported codecs */
> -			if (!videocapability) {
> -				needvideo = FALSE;
> -				if (option_debug > 2)
> -					ast_log(LOG_DEBUG, "** No compatible video codecs...  
> Disabling video.\n");
> -			}
> -
> -			/* Replace video capabilities with the new videocapability */
> -			capability = (capability & AST_FORMAT_AUDIO_MASK) |  
> videocapability;
> -
> -			if (option_debug > 4) {
> -				char codecbuf[BUFSIZ];
> -				if (videocapability)
> -					ast_log(LOG_DEBUG, "** Our video codec selection is: %s \n",  
> ast_getformatname_multiple(codecbuf, sizeof(codecbuf),  
> videocapability));
> -				ast_log(LOG_DEBUG, "** Capability now set to : %s \n",  
> ast_getformatname_multiple(codecbuf, sizeof(codecbuf), capability));
> -			}
> -		}
> -	}
> +	}
> +
>  	if (debug)
>  		ast_verbose("Audio is at %s port %d\n", ast_inet_ntoa(p->ourip),  
> ntohs(sin.sin_port));	
>
>
> Modified: branches/1.4/main/translate.c
> URL: http://svn.digium.com/view/asterisk/branches/1.4/main/ 
> translate.c?rev=46153&r1=46152&r2=46153&view=diff
> ====================================================================== 
> ========
> --- branches/1.4/main/translate.c (original)
> +++ branches/1.4/main/translate.c Tue Oct 24 19:10:54 2006
> @@ -818,6 +818,11 @@
>  	unsigned int src_audio = powerof(src & AST_FORMAT_AUDIO_MASK);
>  	unsigned int src_video = powerof(src & AST_FORMAT_VIDEO_MASK);
>
> +	/* if we don't have a source format, we just have to try all
> +	   possible destination formats */
> +	if (!src)
> +		return dest;
> +
>  	AST_LIST_LOCK(&translators);
>
>  	for (x = 1; x < AST_FORMAT_MAX_AUDIO; x <<= 1) {
>
> _______________________________________________
> --Bandwidth and Colocation provided by Easynews.com --
>
> svn-commits mailing list
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/svn-commits

---
* Olle E Johansson - oej at edvina.net
* Cell phone +46 70 593 68 51, Office +46 8 96 40 20, Sweden





More information about the asterisk-dev mailing list