Voice over IP
- 1 Soft Phones
- 2 Service Providers
- 3 Open source projects
- 4 C# DirectX Libraries
- 5 Streaming Audio from C#
- 6 Information about RTP, RTCP, SIP, RSTP, IAX2
- 7 Getting through firewalls
- 8 Tools for testing and debugging VOIP calls
- 9 Dictionary
- 10 Codecs
- 11 Links
SJphone is a free VOIP softphone. It can be installed on:
- Windows (XP SP2, 2000 SP4, Vista, Vista x64), Windows CE (Pocket PC, Windows Mobile), Linux, MAC
It supports both SIP and H.323 standards, and has a brilliant logging feature if you are having trouble getting a call through.
Note for Vista x64 (64 bit version) users:
On my Dell Lattitude I couldn't make a call or run the Audio Wizard, it crashed the program. I found a workaround:
- Select: Menu -> To Advanced Mode
- Select: Menu -> Options
- Select: the Audio tab.
- Select: Advanced Settings...
- Uncheck: Enable Adaptive Echo Canceller
After that, I can make a call, and it is also possible to run the Audio Wizard....
I found this by trial and error, first I disabled everything in the 'Audio' tab, and reduced the sample rate, then I gradually enabled everything again.
In SJ Labs forum http://forum.sjphone.org/viewtopic.php?t=1589&highlight=aec you can read the following:
- Bugs and issues in 1.65
- 1. Although there is a Video tab on the Options panel, this build does not support Video.
- 2. AEC may work unstably if you use some old audio boards, or use different devices for input and output audio (for example, a USB mic and on-board audio system).
- 3. SJphone may deliver sound with less high frequency. In this case, reduce Driver sampling rate to 8000 (Options -> Audio -> Advanced Audio Settings).
This might explain my problem, but I was able to run it on the same Dell D620 without any problems, when it was running Windows XP.
Open source projects
The sipXtapi SDK is a C application programming interface for voice communications over IP. Specifically, sipXtapi provides a generalized telephony interface on top of the Session Initiation Protocol (SIP), RFC 3261, and the real-time Transport Protocol (RTP), RFC 1889. While the SIP and RTP protocols provide signaling and media transport infrastructure, sipXtapi also includes many other protocol and standards implementations needed for voice communications.
- sipXtapi: SDK Overview
- SipXtapi and sipXezPhone Build Environment for Windows - SIPfoundry sipx, The Open Source SIP PBX for Linux - Calivia
- SipXezPhone Introduction and Screenshot - SIPfoundry sipx, The Open Source SIP PBX for Linux - Calivia
- HowTo compile sipXezPhone - SIPfoundry sipx, The Open Source SIP PBX for Linux - Calivia
Help for compiling sipxmedialib.
- Re: sipxtapi-dev compiling sipxmedialib with ilbc msg00951
- Re: sipxtapi-dev compiling sipxmedialib with ilbc msg00953
Sofia-SIP is an open-source SIP User-Agent library, compliant with the IETF RFC3261 specification (see the feature table). It can be used as a building block for SIP client software for uses such as VoIP, IM, and many other real-time and person-to-person communication services. The primary target platform for Sofia-SIP is GNU/Linux. Sofia-SIP is based on a SIP stack developed at the Nokia Research Center. Sofia-SIP is licensed under the LGPL.
Open source SIP stack and media stack for presence, im/instant messaging, and multimedia communication.
This stack can be used on Windows Mobile.
Open source VoIP Servers
C# DirectX Libraries
Both projects support nearly the entire DirectX libraries (though SlimDX does support a bit more in the DirectX 9 space).
SlimDX is very mature, and fully featured. Some larger scale, commercial games have been written and published using SlimDX. It also provides more of a "framework" to use, and has more feature-complete documentation.
SharpDX promises slightly better performance in certain scenarios (see benchmarks). It's generated directly from the DirectX headers, so is more of a thin DirectX wrapper.
- SlimDX is a free open source framework that enables developers to easily build DirectX applications using .NET technologies
- SharpDX is an open-source project delivering the full DirectX API under the .Net platform
Streaming Audio from C#
- A low-level audio player in C#
- A full-duplex audio player in C# using the waveIn/waveOut APIs
- A C# Audio Recorder / Player Library
- MemoryStream and Media.SoundPlayer
- The waveInOpen function opens the given waveform-audio input device for recording
- The waveInClose function closes the given waveform-audio input device
- Audio Input/Output level
- Setting Up Direct Sound (Not managed but good explanation)
- Direct Sound Basics Tutorial
- DirectX:DirectSound:Tutorials:VBNET:DX9:Playing Sounds
- The ultimate Managed DirectSound 9 Tutorial. Part 1: a full introduction to Playback
- Sound Experiments in Managed DirectX
- Sound Experiments in Managed DirectX
- WAVE PCM soundfile format
- How to use c# to write a sound recorder?
- DirectSound C# Generate White Noise / Single tone? - GameDev.Net Discussion Forums
- Tutorial under construction - VBForums
- Building a Drum Machine with DirectSound
- Coding4Fun Beginning Game Development: Part VIII - DirectSound
- The Z Buffer \Managed DirectX Tutorials and Sample Code
.NET Compact Framework
Information about RTP, RTCP, SIP, RSTP, IAX2
Department of Computer Science at San Diego State University
Their Communication Networks Laboratory has this nice presentation with a lot of demystification.
On this page http://medusa.sdsu.edu/network/CS596/Lectures/Lectures.htm?PAGE=Lectures you can find other network presentations from them. To navigate to this page from their main page http://medusa.sdsu.edu/network/ select CS596 -> Lectures.
Their presentations are based on Forouzan's book: TCP/IP Protocol Suite.
The RFC Sourcebook is a great source for information on Internet protocols for the software professional. This guide is a reference for official networking standards and protocols.
Look up any RFC here.
Getting through firewalls
Tools for testing and debugging VOIP calls
Network protocol analyzer for Windows and Unix that allows examination of data from a live network, or from a capture file on disk. It is free, easy to use and the best network analyzer you can get.
It recognizes VOIP calls and can play back the audio afterwards.
SIPp is a free Open Source test tool / traffic generator for the SIP protocol.
After installing SIPp open two command prompts and change directory to the folder where SIPp was installed.
It the first window start the server with:
- sipp -sn uas -i <local ip>
In the second windows start the client with:
- sipp -sn uac -i <local ip> <local ip>
Where <local IP> is your IP address on your local LAN network, and -i sets the local IP address for 'Contact:','Via:', and 'From:' headers.
If you start SIPp without parameters you get the help.
The last tho lines is an example.
- Run sipp with embedded server (uas) scenario:
- ./sipp -sn uas
- On the same host, run sipp with embedded client (uac) scenario
- Run sipp with embedded server (uas) scenario:
- ./sipp -sn uac 127.0.0.1
This won't work on Vista, because the default IP address for the server will be the IPv6 address of your local host.
To call the server on the default IPv6 address which is ::1, You must use:
- sipp -sn uac ::1
For the same reason always specify th -i switch. It will also default to ::1 if not specified.
- Narrowband In telephony, narrowband is usually considered to cover frequencies 300–3400 Hz
- Wideband Wideband in speech services means that the used speech frequency response covers 50-7000 Hz
- POTS Plain old telephone service
- L16 (uncompressed 8KHz)
- L16-256 (uncompressed 16KHz)
- G.711 A at 8KHz
- G.711 A at 16KHz
- G.711 u at 8KHz
- G.711 u at 16KHz
- Standard GSM 6.10 full rate
- Microsoft GSM 6.10 full rate
- GSM 6.60 aka GSM-EFR (enhanced full rate)
- GSM 6.90 aka GSM-AMR, AMR-NB
- VoIP or the Voice Infrastructure Freedom - Building communication alternatives in Developing Regions
- ABNF Grammar for SDP -- Session Description Protocol (RFC 4566)
- SIP Protocol Structure through an Example
Microsoft Real-Time Communications API - RTC
- Microsoft Real-Time Communications: Protocols and Technologies
- Integrating Rich Client Communications with the Microsoft Real-Time Communications API
- Enhancing Rich Client Communications with the Microsoft Real-Time Communications API
- MSDN Webcast: Visual C# Express 2005: Creating an Instant Messaging Application Part 2 of 3
- Ever heard a PBX talk!
- Microsoft Office Communicator 2007 SDK
- Sound, tone and DTMF generation by using managed DirectSound and C# and sine tone detection with pure managed Goertzel algorithm implementation