Hi,
Currently sofia-sip doesn't recognise the UDPTL transport used for T.38
FoIP. It also doesn't recognise RED for redundancy according to RFC2198.
I have attached a small patch while will add these.
Regards,
Steve
diff -rU5 sofia-sip.orig/libsofia-sip-ua/sdp/sdp_parse.c sofia-sip/libsofia-sip-ua/sdp/sdp_parse.c
--- sofia-sip.orig/libsofia-sip-ua/sdp/sdp_parse.c 2006-10-03 05:26:58.000000000 +0800
+++ sofia-sip/libsofia-sip-ua/sdp/sdp_parse.c 2006-11-28 21:23:11.000000000 +0800
@@ -1357,10 +1357,12 @@
m->m_type = sdp_media_control, m->m_type_name = "control";
else if (strcasecmp(s, "message") == 0)
m->m_type = sdp_media_message, m->m_type_name = "message";
else if (strcasecmp(s, "image") == 0)
m->m_type = sdp_media_image, m->m_type_name = "image";
+ else if (strcasecmp(s, "red") == 0)
+ m->m_type = sdp_media_red, m->m_type_name = "red";
else
m->m_type = sdp_media_x, m->m_type_name = s;
}
void sdp_media_transport(sdp_media_t *m, char const *s)
@@ -1369,10 +1371,12 @@
m->m_proto = sdp_proto_any, m->m_proto_name = "*";
else if (strcasecmp(s, "RTP/AVP") == 0)
m->m_proto = sdp_proto_rtp, m->m_proto_name = "RTP/AVP";
else if (strcasecmp(s, "RTP/SAVP") == 0)
m->m_proto = sdp_proto_srtp, m->m_proto_name = "RTP/SAVP";
+ else if (strcasecmp(s, "UDPTL") == 0)
+ m->m_proto = sdp_proto_udptl, m->m_proto_name = "UDPTL";
else if (strcasecmp(s, "UDP") == 0)
m->m_proto = sdp_proto_udp, m->m_proto_name = "UDP";
else if (strcasecmp(s, "TCP") == 0)
m->m_proto = sdp_proto_tcp, m->m_proto_name = "TCP";
else if (strcasecmp(s, "TLS") == 0)
diff -rU5 sofia-sip.orig/libsofia-sip-ua/sdp/sdp_print.c sofia-sip/libsofia-sip-ua/sdp/sdp_print.c
--- sofia-sip.orig/libsofia-sip-ua/sdp/sdp_print.c 2006-09-27 19:57:57.000000000 +0800
+++ sofia-sip/libsofia-sip-ua/sdp/sdp_print.c 2006-11-28 21:23:01.000000000 +0800
@@ -576,13 +576,15 @@
case sdp_media_image : media = "image"; break;
default: media = m->m_type_name;
}
switch (m->m_proto) {
- case sdp_proto_rtp: proto = "RTP/AVP"; break;
- case sdp_proto_udp: proto = "udp"; break;
case sdp_proto_tcp: proto = "tcp"; break;
+ case sdp_proto_udp: proto = "udp"; break;
+ case sdp_proto_rtp: proto = "RTP/AVP"; break;
+ case sdp_proto_srtp: proto = "RTP/SAVP"; break;
+ case sdp_proto_udptl: proto = "UDPTL"; break;
case sdp_proto_tls: proto = "tls"; break;
default: proto = m->m_proto_name; break;
}
if (m->m_number_of_ports <= 1)
diff -rU5 sofia-sip.orig/libsofia-sip-ua/sdp/sofia-sip/sdp.h sofia-sip/libsofia-sip-ua/sdp/sofia-sip/sdp.h
--- sofia-sip.orig/libsofia-sip-ua/sdp/sofia-sip/sdp.h 2006-10-03 05:26:58.000000000 +0800
+++ sofia-sip/libsofia-sip-ua/sdp/sofia-sip/sdp.h 2006-11-28 21:23:20.000000000 +0800
@@ -227,21 +227,23 @@
sdp_media_video, /**< Video */
sdp_media_application, /**< Conferencing */
sdp_media_data, /**< Bulk data transfer */
sdp_media_control, /**< Additional conference control */
sdp_media_message, /**< Messaging sessions*/
- sdp_media_image /**< Image browsing sessions for JPIP */
+ sdp_media_image, /**< Image browsing sessions for JPIP, and T.38 */
+ sdp_media_red /**< Redundancy */
} sdp_media_e;
/** Media transport protocol. */
typedef enum
{
sdp_proto_x = 0, /**< Unknown transport */
sdp_proto_tcp = 6, /**< TCP */
sdp_proto_udp = 17, /**< Plain UDP */
sdp_proto_rtp = 256, /**< RTP/AVP */
sdp_proto_srtp = 257, /**< RTP/SAVP */
+ sdp_proto_udptl = 258, /**< UDPTL */
sdp_proto_tls = 511, /**< TLS over TCP */
sdp_proto_any = 512 /**< * wildcard */
} sdp_proto_e;
/** Session mode. @note Identical to rtp_mode_t. */
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Sofia-sip-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel