Skip to content

doe300/OHMComm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OHMComm

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++.

Build Status Build Status GitHub license Release

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.

Build it

Under Linux/Mac OS

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.

Run it

Under Linux/Mac OS/Windows

$ 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

Supported libraries

Audio libraries

  • 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

Codecs

  • 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

Features

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

Addons

  • A work-in-process graphical interface based on Qt5 is available here