[asterisk-commits] file: branch file/media-attrib-sdp r368874 - in /team/file/media-attrib-sdp: ...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Wed Jun 13 14:08:34 CDT 2012


Author: file
Date: Wed Jun 13 14:08:30 2012
New Revision: 368874

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=368874
Log:
Fix two places (so far) where attribute information would get lost or not used.

Modified:
    team/file/media-attrib-sdp/channels/chan_sip.c
    team/file/media-attrib-sdp/main/translate.c

Modified: team/file/media-attrib-sdp/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/file/media-attrib-sdp/channels/chan_sip.c?view=diff&rev=368874&r1=368873&r2=368874
==============================================================================
--- team/file/media-attrib-sdp/channels/chan_sip.c (original)
+++ team/file/media-attrib-sdp/channels/chan_sip.c Wed Jun 13 14:08:30 2012
@@ -12030,10 +12030,12 @@
 
 		/* Start by sending our preferred audio/video codecs */
 		for (x = 0; x < AST_CODEC_PREF_SIZE; x++) {
-			if (!(ast_codec_pref_index(&p->prefs, x, &tmp_fmt)))
+			struct ast_format pref;
+
+			if (!(ast_codec_pref_index(&p->prefs, x, &pref)))
 				break;
 
-			if (!(ast_format_cap_iscompatible(tmpcap, &tmp_fmt)))
+			if (!ast_format_cap_get_compatible_format(tmpcap, &pref, &tmp_fmt))
 				continue;
 
 			if (ast_format_cap_iscompatible(alreadysent, &tmp_fmt))

Modified: team/file/media-attrib-sdp/main/translate.c
URL: http://svnview.digium.com/svn/asterisk/team/file/media-attrib-sdp/main/translate.c?view=diff&rev=368874&r1=368873&r2=368874
==============================================================================
--- team/file/media-attrib-sdp/main/translate.c (original)
+++ team/file/media-attrib-sdp/main/translate.c Wed Jun 13 14:08:30 2012
@@ -1282,12 +1282,22 @@
 void ast_translate_available_formats(struct ast_format_cap *dest, struct ast_format_cap *src, struct ast_format_cap *result)
 {
 	struct ast_format tmp_fmt;
-	struct ast_format cur_src;
+	struct ast_format cur_dest, cur_src;
 	int src_audio = 0;
 	int src_video = 0;
 	int index;
 
-	ast_format_cap_copy(result, dest);
+	ast_format_cap_iter_start(dest);
+	while (!ast_format_cap_iter_next(dest, &cur_dest)) {
+		/* We give preference to a joint format structure if possible */
+		if (ast_format_cap_get_compatible_format(src, &cur_dest, &tmp_fmt)) {
+			ast_format_cap_add(result, &tmp_fmt);
+		} else {
+			/* Otherwise we just use the destination format */
+			ast_format_cap_add(result, &cur_dest);
+		}
+	}
+	ast_format_cap_iter_end(dest);
 
 	/* if we don't have a source format, we just have to try all
 	   possible destination formats */




More information about the asterisk-commits mailing list