What is recon?
The Conversation Manager is a SIP User Agent API that allows conversations and participants to be created. Participants can then be placed into conversations. In general all participants belonging to the same conversation can be heard and can hear each other. A participants contribution level to a particular conversation can be modified such that they appear quiter or louder to other participants.
There are three types of participants:
- Local participant - this participant type consists of the default local speaker and microphone of the computer that is running recon. Local participants are always only explicitly destroyed.
- Media participant - this participant type consists of an audio file, audio stream, or tone played out. Media participants are destroyed when the file is complete or when explicitly destroyed.
- Remote Participant - this participant type uses audio from an external source. The current implementation uses SIP to create/connect to remote participants. Remote participants are destroyed by the API user, or a "hangup" signal from the remote party.
A typical phone conversation consists of 3 components: 1 conversation, 1 local participant and 1 remote participant.
recon currently uses the sipXtapi project for an RTP/codec/mixing library. It is responsible for processing incoming RTP packets to and from the reflow layer. The reflow project is then used to send RTP packets to the network. See the What is reflow? and What is sipXtapi? sections for information on these two projects.
What is reflow?
The flow manager is a layer that faciltates the flow of media to/from a media based application. It is responsible for any NAT traversal logic, and will eventually implement ICE as a Nat traversal solution. The flow manager also implements SRTP encryption of RTP packets, and can media via:
- TURN UDP Allocation
- TURN TCP Allocation with UDP relay
- TURN TLS Allocation with UDP relay
- SRTP encrypted over any of the above transports
- DTLS-SRTP encrypted
What is sipXtapi?
Initial Project Team
- Rohan Mahy
- Scott Godin ( s g o d i n AT s i p s p e c t r u m DOT c o m )
- Correct and comprehensive implementation of the relevant standards from the SIP working groups
- Support for UDP/TCP/TLS protocols over both IPv4 and IPv6
- Asynchrounous client APIs
- Media layer abstraction interface
How to Participate
- You can discuss recon ongoing development at recon developer mailing list.
- Currently recon is held as a subtree of the reSIProcate source base at https://svn.resiprocate.org/rep/resiprocate/.
- You can read how to use subversion with reSIProcate at Quick Subversion Checkout and Compilation HOWTO.
- You can view recon source code
- You can view reflow source code
- You can view sipXtapi source code
Working with recon
Current External Library Usage
- recon uses the reflow project which has the following dependencies
- OpenSSL - special version of 0.98g with DTLS-SRTP support
- ASIO 1.0.0
- BOOST 1.34.1
recon is distributed under a standard 3-clause BSD license:
/* ==================================================================== Copyright (c) 2007-2008, Plantronics, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of Plantronics nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================== */