[asterisk-commits] branch oej/sdpcleanup r32112 - in /team/oej/sdpcleanup: ./ channels/ include/...

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Sun Jun 4 12:20:52 MST 2006


Author: oej
Date: Sun Jun  4 14:20:51 2006
New Revision: 32112

URL: http://svn.digium.com/view/asterisk?rev=32112&view=rev
Log:
Update

Modified:
    team/oej/sdpcleanup/   (props changed)
    team/oej/sdpcleanup/channels/chan_sip.c
    team/oej/sdpcleanup/frame.c
    team/oej/sdpcleanup/include/asterisk/frame.h

Propchange: team/oej/sdpcleanup/
------------------------------------------------------------------------------
    automerge = http://edvina.net/training/

Modified: team/oej/sdpcleanup/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/team/oej/sdpcleanup/channels/chan_sip.c?rev=32112&r1=32111&r2=32112&view=diff
==============================================================================
--- team/oej/sdpcleanup/channels/chan_sip.c (original)
+++ team/oej/sdpcleanup/channels/chan_sip.c Sun Jun  4 14:20:51 2006
@@ -5122,18 +5122,18 @@
 		dest.sin_addr = p->ourip;
 		dest.sin_port = sin.sin_port;
 	}
-	if (option_debug) {
+	if (option_debug > 1) {
 		char codecbuf[BUFSIZ];
 		ast_log(LOG_DEBUG, "** Our capability: %s Video flag: %s\n", ast_getformatname_multiple(codecbuf, sizeof(codecbuf), capability), ast_test_flag(&p->flags[0], SIP_NOVIDEO) ? "True" : "False");
-	}
-
-	if( p->owner->nativeformats & AST_FORMAT_VIDEO_MASK) {
-	// if((capability & AST_FORMAT_VIDEO_MASK) && !ast_test_flag(&p->flags[0], SIP_NOVIDEO)) {
+		ast_log(LOG_DEBUG, "** Our prefcodec: %s \n", ast_getformatname_multiple(codecbuf, sizeof(codecbuf), p->prefcodec));
+	}
+
+	if((capability & AST_FORMAT_VIDEO_MASK) && !ast_test_flag(&p->flags[0], SIP_NOVIDEO)) {
 		if (p->vrtp) {
 			needvideo = TRUE;
-			if (option_debug)
+			if (option_debug > 1)
 				ast_log(LOG_DEBUG, "This call needs video offers! \n");
-		} else if (option_debug)
+		} else if (option_debug > 1)
 			ast_log(LOG_DEBUG, "This call needs video offers, but there's no video suupport enabled ! \n");
 	}
 		
@@ -5148,7 +5148,8 @@
 			vdest.sin_port = vsin.sin_port;
 		}
 		/* Build max bitrate string */
-		snprintf(b, sizeof(b), "b=CT:%d\r\n", p->maxcallbitrate);
+		if (p->maxcallbitrate)
+			snprintf(b, sizeof(b), "b=CT:%d\r\n", p->maxcallbitrate);
 		if (debug) 
 			ast_verbose("Video is at %s port %d\n", ast_inet_ntoa(iabuf, sizeof(iabuf), p->ourip), ntohs(vsin.sin_port));	
 	}
@@ -5187,7 +5188,6 @@
 					 debug);
 		alreadysent |= p->prefcodec;
 	}
-	ast_log(LOG_DEBUG, "**** ONE ************* \n");
 
 	/* Start by sending our preferred codecs */
 	for (x = 0; x < 32; x++) {
@@ -5212,7 +5212,6 @@
 					 debug);
 		alreadysent |= pref_codec;
 	}
-	ast_log(LOG_DEBUG, "**** TWO ************* \n");
 
 	/* Now send any other common codecs, and non-codec formats: */
 	for (x = 1; x <= (needvideo ? AST_FORMAT_MAX_VIDEO : AST_FORMAT_MAX_AUDIO); x <<= 1) {
@@ -5233,7 +5232,6 @@
 					 &a_video_next, &a_video_left,
 					 debug);
 	}
-	ast_log(LOG_DEBUG, "**** THREE ************* \n");
 
 	for (x = 1; x <= AST_RTP_MAX; x <<= 1) {
 		if (!(p->noncodeccapability & x))
@@ -5244,7 +5242,6 @@
 				    &a_audio_next, &a_audio_left,
 				    debug);
 	}
-	ast_log(LOG_DEBUG, "**** FOUR ************* \n");
 	if (option_debug > 2)
 		ast_log(LOG_DEBUG, "Done with adding codecs to SDP\n");
 
@@ -5286,7 +5283,7 @@
 	/* Update lastrtprx when we send our SDP */
 	p->lastrtprx = p->lastrtptx = time(NULL); /* XXX why both ? */
 
-	if (option_debug) {
+	if (option_debug > 2) {
 		char buf[BUFSIZ];
 		ast_log(LOG_DEBUG, "We're settling with offering these formats: %s\n", ast_getformatname_multiple(buf, BUFSIZ, capability));
 	}

Modified: team/oej/sdpcleanup/frame.c
URL: http://svn.digium.com/view/asterisk/team/oej/sdpcleanup/frame.c?rev=32112&r1=32111&r2=32112&view=diff
==============================================================================
--- team/oej/sdpcleanup/frame.c (original)
+++ team/oej/sdpcleanup/frame.c Sun Jun  4 14:20:51 2006
@@ -1037,7 +1037,10 @@
 				*mask &= ~format;
 		}
 
-		if (pref) {
+		/* Set up a preference list for audio. Do not include video in preferences 
+		   since we can not transcode video and have to use whatever is offered
+		 */
+		if (pref && (format & AST_FORMAT_AUDIO_MASK)) {
 			if (strcasecmp(this, "all")) {
 				if (allowing)
 					ast_codec_pref_append(pref, format);

Modified: team/oej/sdpcleanup/include/asterisk/frame.h
URL: http://svn.digium.com/view/asterisk/team/oej/sdpcleanup/include/asterisk/frame.h?rev=32112&r1=32111&r2=32112&view=diff
==============================================================================
--- team/oej/sdpcleanup/include/asterisk/frame.h (original)
+++ team/oej/sdpcleanup/include/asterisk/frame.h Sun Jun  4 14:20:51 2006
@@ -456,30 +456,47 @@
 
 extern void ast_frame_dump(const char *name, struct ast_frame *f, char *prefix);
 
-/*! \brief Initialize a codec preference to "no preference" */
+/*! \par AudioCodecPref Audio Codec Preferences
+	In order to negotiate audio codecs in the order they are configured
+	in <channel>.conf for a device, we set up codec preference lists
+	in addition to the codec capabilities setting. The capabilities
+	setting is a bitmask of audio and video codecs with no internal
+	order. This will reflect the offer given to the other side, where
+	the prefered codecs will be added to the top of the list in the
+	order indicated by the "allow" lines in the device configuration.
+	
+	Video codecs are not included in the preference lists since they
+	can't be transcoded and we just have to pick whatever is supported
+*/
+
+/*! \brief Initialize an audio codec preference to "no preference" See \ref AudioCodecPref */
 extern void ast_codec_pref_init(struct ast_codec_pref *pref);
 
-/*! \brief Codec located at  a particular place in the preference index */
+/*! \brief Codec located at a particular place in the preference index See \ref AudioCodecPref */
 extern int ast_codec_pref_index(struct ast_codec_pref *pref, int index);
 
-/*! \brief Remove a codec from a preference list */
+/*! \brief Remove audio a codec from a preference list */
 extern void ast_codec_pref_remove(struct ast_codec_pref *pref, int format);
 
-/*! \brief Append a codec to a preference list, removing it first if it was already there */
+/*! \brief Append a audio codec to a preference list, removing it first if it was already there 
+*/
 extern int ast_codec_pref_append(struct ast_codec_pref *pref, int format);
 
-/*! \brief Select the best format according to preference list from supplied options. 
+/*! \brief Select the best audio format according to preference list from supplied options. 
    If "find_best" is non-zero then if nothing is found, the "Best" format of 
    the format list is selected, otherwise 0 is returned. */
 extern int ast_codec_choose(struct ast_codec_pref *pref, int formats, int find_best);
 
-/*! \brief Parse an "allow" or "deny" line and update the mask and pref if provided */
+/*! \brief Parse an "allow" or "deny" line in a channel or device configuration 
+        and update the capabilities mask and pref if provided.
+	Video codecs are not added to codec preference lists, since we can not transcode
+ */
 extern void ast_parse_allow_disallow(struct ast_codec_pref *pref, int *mask, const char *list, int allowing);
 
-/*! \brief Dump codec preference list into a string */
+/*! \brief Dump audio codec preference list into a string */
 extern int ast_codec_pref_string(struct ast_codec_pref *pref, char *buf, size_t size);
 
-/*! \brief Shift a codec preference list up or down 65 bytes so that it becomes an ASCII string */
+/*! \brief Shift an audio codec preference list up or down 65 bytes so that it becomes an ASCII string */
 extern void ast_codec_pref_convert(struct ast_codec_pref *pref, char *buf, size_t size, int right);
 
 /*! \brief Returns the number of samples contained in the frame */



More information about the asterisk-commits mailing list