realXtend/naali — pull request #349 by jonnenauha (2012-02-08 19:18:04+00:00)
Title: Admino tundra 2.2.x mumble

So here we are. I've been waiting for years (no, I'm not joking) to rewrite this module into shape. This implementation brings lots of new features, stability, cleaner deps and cleaner/understandable code (hopefully :) compared to the last implementation. If you want to do code review I would be very happy, but I must warn you its ~8200 lines of code.

Main features

* SSL TCP for tunneled input and output voice traffic and general protocol messages.
* Encrypted UDP for input and output voice traffic.
* Network mode auto detection and on the fly change from TCP to UDP and from UDP to TCP. This switch is done if UDP latencies get too high or ping stops responding. On the fly auto switch to TCP network mode should not be audible to the user.
* Celt codec that is tested to work against >=1.2.3 Murmur and native Mumble clients. Essentially meaning native Mumble clients can also join the channels and everyone will hear each other.
* Voice activity detection, mic noise suppression and mic volume amplification. Provides ready made audio wizard for easy configuration. VAD is self written (techniques studied from native mumble client), other audio processing uses speexdsp library.
* Positional audio playback, transmission and audible radius from active sound listener. These can be set from audio wizard. If positional audio is allowed by the user (default, can be changed from audio wizard) your transmission position is always gotten from the active EC_SoundListener (avatar, free cam etc.). I did not make this overridable from the script logic, if you find use cases for this I can implement it, but for now all your app needs to take care of it setting the correct sound listener active.
* All user configured voice settings (via audio wizard) are stored to and loaded from config to not lose settings.
* Extensive Qt signals for everything that is going on, easy to hook to these and provide a client GUI and scene interaction. Signals can be found from MumblePlugin, MumbleChannel and MumbleUser classes. In scripting you can access this functionality with 'mumble' eg. mumble.Connect(...);

Additionally

* Rewritten example scene in bin/scenes/Mumble that shows all capabilities of the plugin with a rich UI. Additionally has nice usage instructions to get people started with hosting Murmur.
* Old MumbleVoipModule is completely removed.
* Updates deps/vs2008 to update celt, protobuf and adding speex/speexdsp 1.2rc1 libraries.
* Merged against current (when this was posted) realXtend/tundra tundra2 branch.

Linux and Mac notes
Build scripts will need to carry over on getting the dependencies: Remove libmumbleclient from the deps and add libspeex (>=1.2rc1). The module is disabled currently from other than windows (as was the previous module too). There should be no problems building if you just handle the deps, hopefully a simple apt-get or similar will do.