This project started as an IT-Project at the faculty for Computer Science of the technical university Georg Simon Ohm Nürnberg in summer semester 2015 and winter semester 2015/2016 to create a platform-independent voice-over-IP peer-to-peer communication program in C++.
This program is currently developed under linux (Fedora 23) and Windows (7/8) and tested under Mac OS X.
OHMComm is based upon RtAudio and therefore supports all audio-libraries supported by RtAudio (see RtAudio API-Notes). The audio-data are (optionally but highly recommended) encoded with the included opus-codec. As of version 0.8, RtAudio as well as Opus are optional and PortAudio is also supported as audio-library. By additionally supporting SIP as well as the audio-codecs Opus, G.711 A-law and mu-law, OHMComm can be used to call or get called by any other SIP-based VoIP application.
The OHMComm framework is highly extensible. Any audio-library or codec can be added by writing a wrapper-class and registering it with the correct factory-class.
You will need a compiler with full C++11 support and cmake in version 2.6 or higher.
Additionally you will require the development-header for the supported audio-library of your choice,
for ALSA this would be libasound-dev
on Debian-based systems and alsa-lib-devel
on Fedora.
$ cd <project-directory>
$ cmake -G "Unix Makefiles" ./CMakeLists.txt
$ make OHMComm # To build the library
$ make OHMCommStandalone # To build the executable
This will build the library/executable into <project-directory>/build/
by default.
$ cd <executable-directory>
$ ./OHMCommStandalone # To run in interactive mode
$ ./OHMCommStandalone -h # Prints all command-line arguments
$ ./OHMCommStandalone path/to/config-file # Runs in file-configuration mode
- RtAudio: A platform-independent API for accessing audio-drivers written in C++
- PortAudio: Another platform-independent audio API for accessing native libraries, written in C
- Opus: An highly effective audio-codec, primarily used for real-time applications (e.g. VoIP)
- G.711: The two audio-codecs (A-law and mu-law) used for digital telephony
- iLBC: Another low-bandwidth VoIP codec, defined in RFC 3951, now a part of WebRTC
- GSM: GSM 06.10 Mobile communication standard
- AMR-NB: Adaptive Multi Rate Narrowband via the OpenCORE-AMR library
- Fully standard-conform communication based on RTP including full RTCP support
- Support for direct calls to and from any VoIP application featuring SIP
- Support for SIP-based registration with a VoIP-server
- Support for DTX to further decrease required bandwidth
- Automatic audio-device detection, resampling, etc.
- A work-in-process graphical interface based on Qt5 is available here