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

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Sat Jun 23 13:42:56 CDT 2012


Author: file
Date: Sat Jun 23 13:42:52 2012
New Revision: 369301

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=369301
Log:
Move CELT and SILK SDP logic out into their respective format attribute modules.

Modified:
    team/file/media-attrib-sdp/channels/chan_sip.c
    team/file/media-attrib-sdp/res/res_format_attr_celt.c
    team/file/media-attrib-sdp/res/res_format_attr_silk.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=369301&r1=369300&r2=369301
==============================================================================
--- team/file/media-attrib-sdp/channels/chan_sip.c (original)
+++ team/file/media-attrib-sdp/channels/chan_sip.c Sat Jun 23 13:42:52 2012
@@ -10082,21 +10082,6 @@
 					}
 				}
 				break;
-			case AST_FORMAT_CELT:
-				if (sscanf(fmtp_string, "framesize=%30u", &val) == 1) {
-					ast_format_append(format, CELT_ATTR_KEY_FRAME_SIZE, val, AST_FORMAT_ATTR_END);
-				}
-			case AST_FORMAT_SILK:
-				if (sscanf(fmtp_string, "maxaveragebitrate=%30u", &val) == 1) {
-					ast_format_append(format, SILK_ATTR_KEY_MAX_BITRATE, val, AST_FORMAT_ATTR_END);
-				}
-				if (sscanf(fmtp_string, "usedtx=%30u", &val) == 1) {
-					ast_format_append(format, SILK_ATTR_KEY_DTX, val ? 1 : 0, AST_FORMAT_ATTR_END);
-				}
-				if (sscanf(fmtp_string, "useinbandfec=%30u", &val) == 1) {
-					ast_format_append(format, SILK_ATTR_KEY_FEC, val ? 1 : 0, AST_FORMAT_ATTR_END);
-				}
-				break;
 			}
 		}
 	}
@@ -11564,22 +11549,6 @@
 	case AST_FORMAT_G719:
 		/* Indicate that we only expect 64Kbps */
 		ast_str_append(a_buf, 0, "a=fmtp:%d bitrate=64000\r\n", rtp_code);
-		break;
-	case AST_FORMAT_CELT:
-		if (!ast_format_get_value(format, CELT_ATTR_KEY_FRAME_SIZE, &val) && val > 0) {
-			ast_str_append(a_buf, 0, "a=fmtp:%d framesize=%u\r\n", rtp_code, val);
-		}
-		break;
-	case AST_FORMAT_SILK:
-		if (!ast_format_get_value(format, SILK_ATTR_KEY_MAX_BITRATE, &val) && val > 5000 && val < 40000) {
-			ast_str_append(a_buf, 0, "a=fmtp:%d maxaveragebitrate=%u\r\n", rtp_code, val);
-		}
-		if (!ast_format_get_value(format, SILK_ATTR_KEY_DTX, &val)) {
-			ast_str_append(a_buf, 0, "a=fmtp:%d usedtx=%u\r\n", rtp_code, val ? 1 : 0);
-		}
-		if (!ast_format_get_value(format, SILK_ATTR_KEY_FEC, &val)) {
-			ast_str_append(a_buf, 0, "a=fmtp:%d useinbandfec=%u\r\n", rtp_code, val ? 1 : 0);
-		}
 		break;
 	}
 

Modified: team/file/media-attrib-sdp/res/res_format_attr_celt.c
URL: http://svnview.digium.com/svn/asterisk/team/file/media-attrib-sdp/res/res_format_attr_celt.c?view=diff&rev=369301&r1=369300&r2=369301
==============================================================================
--- team/file/media-attrib-sdp/res/res_format_attr_celt.c (original)
+++ team/file/media-attrib-sdp/res/res_format_attr_celt.c Sat Jun 23 13:42:52 2012
@@ -44,6 +44,29 @@
 	unsigned int maxbitrate;
 	unsigned int framesize;
 };
+
+static int celt_sdp_parse(struct ast_format_attr *format_attr, const char *attributes)
+{
+	struct celt_attr *attr = (struct celt_attr *) format_attr;
+	unsigned int val;
+
+	if (sscanf(attributes, "framesize=%30u", &val) == 1) {
+		attr->framesize = val;
+	}
+
+	return 0;
+}
+
+static void celt_sdp_generate(const struct ast_format_attr *format_attr, unsigned int payload, struct ast_str **str)
+{
+	struct celt_attr *attr = (struct celt_attr *) format_attr;
+
+	if (!attr->framesize) {
+		return;
+	}
+
+	ast_str_append(str, 0, "a=fmtp:%d framesize=%d\r\n", payload, attr->framesize);
+}
 
 static enum ast_format_cmp_res celt_cmp(const struct ast_format_attr *fattr1, const struct ast_format_attr *fattr2)
 {
@@ -161,6 +184,8 @@
 	.format_attr_set = celt_set,
 	.format_attr_isset = celt_isset,
 	.format_attr_get_val = celt_get_val,
+	.format_attr_sdp_parse = celt_sdp_parse,
+	.format_attr_sdp_generate = celt_sdp_generate,
 };
 
 static int load_module(void)

Modified: team/file/media-attrib-sdp/res/res_format_attr_silk.c
URL: http://svnview.digium.com/svn/asterisk/team/file/media-attrib-sdp/res/res_format_attr_silk.c?view=diff&rev=369301&r1=369300&r2=369301
==============================================================================
--- team/file/media-attrib-sdp/res/res_format_attr_silk.c (original)
+++ team/file/media-attrib-sdp/res/res_format_attr_silk.c Sat Jun 23 13:42:52 2012
@@ -47,6 +47,36 @@
 	unsigned int packetloss_percentage;
 };
 
+static int silk_sdp_parse(struct ast_format_attr *format_attr, const char *attributes)
+{
+	struct silk_attr *attr = (struct silk_attr *) format_attr;
+	unsigned int val;
+
+	if (sscanf(attributes, "maxaveragebitrate=%30u", &val) == 1) {
+		attr->maxbitrate = val;
+	}
+	if (sscanf(attributes, "usedtx=%30u", &val) == 1) {
+		attr->dtx = val;
+	}
+	if (sscanf(attributes, "useinbandfec=%30u", &val) == 1) {
+		attr->fec = val;
+	}
+
+	return 0;
+}
+
+static void silk_sdp_generate(const struct ast_format_attr *format_attr, unsigned int payload, struct ast_str **str)
+{
+	struct silk_attr *attr = (struct silk_attr *) format_attr;
+
+	if ((attr->maxbitrate > 5000) && (attr->maxbitrate < 40000)) { 
+		ast_str_append(str, 0, "a=fmtp:%d maxaveragebitrate=%d\r\n", payload, attr->maxbitrate);
+	}
+
+	ast_str_append(str, 0, "a=fmtp:%d usedtx=%d\r\n", payload, attr->dtx);
+	ast_str_append(str, 0, "a=fmtp:%d useinbandfec=%d\r\n", payload, attr->fec);
+}
+
 static enum ast_format_cmp_res silk_cmp(const struct ast_format_attr *fattr1, const struct ast_format_attr *fattr2)
 {
 	struct silk_attr *attr1 = (struct silk_attr *) fattr1;
@@ -195,6 +225,8 @@
 	.format_attr_set = silk_set,
 	.format_attr_isset = silk_isset,
 	.format_attr_get_val = silk_get_val,
+	.format_attr_sdp_parse = silk_sdp_parse,
+	.format_attr_sdp_generate = silk_sdp_generate,
 };
 
 static int load_module(void)




More information about the asterisk-commits mailing list