This is a mirror of official site: http://jasper-net.blogspot.com/

Using OpenTK/OpenAL to Develop Cross Platform DIS VOIP Application

| Monday, March 1, 2010
The intent of this application is to provide an example on how OpenAL (via OpenTK) can be used for voice communication utilizing the Distributed Interactive Simulation (DIS) IEEE Standard 1278.1 while running under Mono. The motivation for writing this article was due to my quest to find examples for both of these technologies. As there were not many or any examples found on the internet in using either OpenAL (under the .NET Framework) and DIS, I felt that providing this example might be helpful for other developers. Note that this technology is similar to using Voice Over Internet Protocol (VOIP) but does not use "session control" to handle calls, therefore this application is just voice encoded data being transmitted over the internet.
Background

Open Audio Library (OpenAL) is a cross-platform 3D audio API that several game developers have used successfully in the past. The Open Tool Kit (OpenTK) developers provided a wrapper around the OpenAL API (along with OpenGL and OpenCL) which then provides the functionality to work with any Mono/.NET language.

Distributed Interactive Simulation (DIS) or IEEE 1278.1 has been around since 1995 and is mainly used by military organizations for conducting simulations. This protocol was chosen due to the work done by the MOVES institute at the Naval Post Graduate School in developing the Open-DIS implementation. As a contributor to that project, for the C# effort, my intent was to capitalize on the work done and create a product encompassing both OpenAL and Open-DIS.
Code Description

The code provided shows only one of the ways in which the OpenAL API can be used to capture and transmit audio over the internet. There are four modules and one main form application.

   * AudioIn: Project that contains all necessary methods to Initialize, Start and Stop the microphone
   * AudioOut: Project that contains all necessary methods to Initialize and Play audio data
   * DISNET: Project that contains methods used to process DIS Protocol Data Units (PDU), in particular the Transmitter and Signal PDU
   * Sockets: Project that contains the socket communication architecture. The implementation provided will use UDP broadcasting only.
   * OpenDISRadioTransmitter: Project that contains the main form which encapsulates all the other classes to produce a simplistic radio interface. This form/application is the 'Radio' when referenced in the description below. A Radio in this case will have One Transmitter and multiple Receivers. Note that a simplistic GUI interface was designed on purpose as the main goal of this project was to introduce OpenAL and DIS.

Read more: Codeproject

Posted via email from jasper22's posterous

0 comments: