RTP Stack Research

Items to research •Licensing •Is the license compatible with core Asterisk SCF? •Does the license require us to do things we may not want to do? •Community •Is the community active? •Are they continually adding new functionality and fixing bugs? •Can we get help from the community easily if need be? •Ease of use •Can we easily interface with the API? •Is it easy to add new things? •If we distribute it, is it easy to work into our build system? •Feature richness •Does it have the features our customers will want? •Channel Encryption (SRTP) and Key management (DTLS-SRTP, ZRTP, ...) •Is IPv6 supported? •Platform support •Are the platforms supported that we need to be supported? •If not, is it easy to support them? •Scaling •Does the stack scale to the amount we want? RTP stacks under consideration CCRTP URL: http://www.gnu.org/software/ccrtp/ License: GPL v2 Language: C++ Created as an official GNU project for the telephony stuff this stack has been around since 2002 and has continued to be developed since then with activity falling off. Control over the tree is maintained by David Sugar with patches for inclusion getting sent to him. An issue tracker is provided on sourceforge but it has not gotten any attention in years. There seems to be some community activity with people using CCRTP but it is very minimal. It is supported on both Windows and Linux, but should work on other platforms we are targeting. Both IPv6 and SRTP are supported. The SRTP support does not use an outside library (like srtp) but it does require OpenSSL or gcrypt. RTCP is supported. Threading is taken care of by the stack itself. No scalability information is available. This stack does require GNU Common C++ as a dependency. JRTPLib URL: http://research.edm.uhasselt.be/~jori/page/index.php?n=CS.Jrtplib License: Free Language: C++ Originally created by Jori Liesenborgs as a thesis project this stack continued to be developed further. Development in recent years though has scaled back considerably and a diff of the nightly SVN copy and last release (from May of 2007) shows very little changes. Control over the tree is maintained by Jori and any changes have to go to him for review and inclusion. No issue tracker is present. Unfortunately it was difficult to gauge the community but it does not seem to be lively at all. It is supported on both Windows and Linux, but should work on other platforms we are targeting. IPv6 is supported but SRTP is not. This is something we would have to add but I do not believe it would be difficult based on the architecture. This stack can use another library created by Jori for threading which allows it to handle polling for incoming data but this is not a requirement. If it is not compiled in it is up to the user of the stack to poll for incoming RTP data. RTCP is supported. No scalability information is really available but I think it would fair quite well. ortp URL: http://www.linphone.org/index.php/eng/code_review/ortp License: LGPL Language: C ortp is the RTP stack originally created for use with the linphone softphone. Since then it has been made separate and used in other projects/products. Development has continued on it and it continues to receive bug fixes and new features. Control over the tree is maintained by a single individual, Simon Morlat. Patches that are contributed get sent to him for review and inclusion. There doesn't appear to be any issue tracker. The community itself seems to be rather actively, there are mailing list posts every few days. It is supported on both Windows and Linux, but should work on other platforms we are targeting. Both IPv6 and SRTP are supported. The SRTP support uses libsrtp but doesn't seem to be well documented like the rest of ortp. Additional features include an adaptive jitterbuffer, packet scheduler, multiplexed support (multiple streams being handled in the same thread), and of course RTCP. No scalability information is really available for ortp, but from my understanding of the architecture it should scale as we need. Asterisk URL: Do I really need a URL? License: Doesn't quite matter Language: C Possible to pull out the RTP stack due to RTP engine work, but still utilizes some Asterisk provided API functions and is written in a very Asterisk centric way. Isolated and would be easy to integrate into our build system. Currently does not support SRTP or IPv6 but both are in the works. Has been untested on additional platforms (like Windows) and certainly not written to be used on it, would probably require additional work. Scaling has varied but can certainly handle over 1000. It's up to the user of the stack to do all threading, which changes scaling. Does not currently support RTCP as well as other stacks do. Well supported and used by many installations out there. PJSIP PJMedia URL: http://www.pjsip.org/pjmedia/docs/html/ License: GPL and Commercial Language: C PJMedia is an interesting library. Everything (RTP, transport, SRTP) is split up into different parts that you then have to combine to make work. This means the RTP stack is really simple and just produces an RTP header, or parses an RTP packet and gives you data. It doesn't have threads, or sockets, or any of that. It's really up to the user to do that. It's rather active like PJSIP. Both IPv6 and SRTP are supported. The SRTP support uses libsrtp like other RTP stacks. The library also includes an adaptive jitterbuffer. The platforms we wish to support are supported by it.

你可能感兴趣的:(search)