Recon Overview

From reSIProcate
Revision as of 23:23, 5 June 2008 by Sgodin (talk | contribs) (starting to fill in recon detail)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Overview

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:

  1. 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.
  2. 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.
  3. 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.


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:

  • UDP
  • 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?

TODO


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 )


Key Features

  • 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
  • TODO


Upcoming Features

  • Media layer abstraction interface
  • TODO


How to Participate


Project Details

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
  • libSrtp
  • sipXtapi


Licensing

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.

==================================================================== */