Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
I'd like to request a pre-approval for a future unblock of a not-yet-uploaded NMU of mumble. This NMU, prepared by Chris Knadle, would fix #675971, thereby implementing the TC decision in #682010. Chris' changes are in the attached mumble-celt.diff. Unfortunately unstable already has a newer version than testing; but on the bright side, the changes already in unstable are required, since mumble in testing currently doesn't build [0] and also fails to start [1], and also closes RC bugs #678759 [2], #676815, #676816. (So going through t-p-u for #675971 doesn't work, since that would also mean including the fixes for the 3 other RC bugs). I'm attaching the full debdiff wheezy/1.2.3-348-g317f5a0-1 → "proposed-sid"/1.2.3-349-g315b5f5-2.1 as mumble-wheezy-sid.diff. Thanks in advance, gregor [0] In file included from /usr/include/Ice/LocalObjectF.h:15:0, from ./Murmur.h:24, from MurmurI.h:4, from MurmurIce.h:42, from MurmurIce.cpp:33: /usr/include/Ice/Handle.h: In instantiation of 'IceInternal::Handle<T>::Handle(T*) [with T = Ice::Communicator]': /usr/include/Ice/OutgoingAsync.h:49:16: required from here /usr/include/Ice/Handle.h:66:13: error: 'upCast' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] compilation terminated due to -Wfatal-errors. This is http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=675971#131 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=672066#54 and [1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=675955 [2] also seen at http://people.debian.org/~lucas/logs/2012/10/10/mumble_1.2.3-348-g317f5a0-1_wheezy.log -- .''`. Homepage: http://info.comodo.priv.at/ - OpenPGP key 0xBB3A68018649AA06 : :' : Debian GNU/Linux user, admin, and developer - http://www.debian.org/ `. `' Member of VIBE!AT & SPI, fellow of the Free Software Foundation Europe `- NP: Sophie Hunger: Teenage Spirit
diff -Nru mumble-1.2.3-349-g315b5f5/debian/changelog mumble-1.2.3-349-g315b5f5/debian/changelog --- mumble-1.2.3-349-g315b5f5/debian/changelog 2012-07-08 13:42:05.000000000 -0400 +++ mumble-1.2.3-349-g315b5f5/debian/changelog 2012-10-04 21:03:18.000000000 -0400 @@ -1,3 +1,31 @@ +mumble (1.2.3-349-g315b5f5-2.1) unstable; urgency=low + + * Non-maintainer upload. + * Fix "Cannot communicate with the vast majority of Mumble servers due + to lack of required baseline codec": + re-enable using the bundled celt library: + debian/patches/series: + - add 07-use-embedded-celt-baseline patch + debian/patches/07-use-embedded-celt-baseline: + - build Celt 0.7.1 and not 0.11.0 + debian/mumble.install: + - ship Celt 0.7.1 library from the embedded source + debian/rules: + - re-enable Celt using the bundled 0.7.1 version + debian/patches/20-add-opus-threshold-option: + - fix src/murmur/Meta.cpp to set default iOpusThreshold=100 to only + switch from Celt to Opus if 100% of connected clients support Opus + (instead of 1%) + - fix murmur.ini example for opusthreshold option to =100 + (instead of =1) + - add #opusthreshold=100 comments to murmur.ini.system (shipped as + etc/mumble-server.ini) to match murmur.ini example + Closes: #675971. + This implements the TC decision in #682010. + [Thanks to Gregor Hermann for his help and guidance.] + + -- Christopher Knadle <chris.kna...@coredump.us> Thu, 04 Oct 2012 11:45:05 -0400 + mumble (1.2.3-349-g315b5f5-2) unstable; urgency=low * Drop the hard dep on boost-1.46, that's been removed now. Closes: #678759 diff -Nru mumble-1.2.3-349-g315b5f5/debian/mumble.install mumble-1.2.3-349-g315b5f5/debian/mumble.install --- mumble-1.2.3-349-g315b5f5/debian/mumble.install 2012-07-08 13:42:05.000000000 -0400 +++ mumble-1.2.3-349-g315b5f5/debian/mumble.install 2012-10-04 21:02:08.000000000 -0400 @@ -1,6 +1,6 @@ release/mumble usr/bin/ release/libmumble.so* usr/lib/mumble/ -#release/libcelt0.so.?.?.? usr/lib/mumble/ +release/libcelt0.so.?.?.? usr/lib/mumble/ release/plugins/lib*.so usr/lib/mumble/ icons/mumble.xpm usr/share/pixmaps/ icons/mumble.svg usr/share/icons/hicolor/scalable/apps/ diff -Nru mumble-1.2.3-349-g315b5f5/debian/patches/07-use-embedded-celt-baseline mumble-1.2.3-349-g315b5f5/debian/patches/07-use-embedded-celt-baseline --- mumble-1.2.3-349-g315b5f5/debian/patches/07-use-embedded-celt-baseline 1969-12-31 19:00:00.000000000 -0500 +++ mumble-1.2.3-349-g315b5f5/debian/patches/07-use-embedded-celt-baseline 2012-10-04 21:02:08.000000000 -0400 @@ -0,0 +1,13 @@ +# build and bundle in only celt 0.7.1 if celt is embedded +--- a/main.pro ++++ b/main.pro +@@ -12,7 +12,8 @@ + SUBDIRS *= speexbuild + } + !CONFIG(no-bundled-celt) { +- SUBDIRS *= celt-0.7.0-build celt-0.11.0-build ++ SUBDIRS *= celt-0.7.0-build ++ SUBDIRS -= celt-0.11.0-build + } + + CONFIG(opus) { diff -Nru mumble-1.2.3-349-g315b5f5/debian/patches/20-add-opus-threshold-option mumble-1.2.3-349-g315b5f5/debian/patches/20-add-opus-threshold-option --- mumble-1.2.3-349-g315b5f5/debian/patches/20-add-opus-threshold-option 2012-07-08 13:42:05.000000000 -0400 +++ mumble-1.2.3-349-g315b5f5/debian/patches/20-add-opus-threshold-option 2012-10-04 21:02:08.000000000 -0400 @@ -8,7 +8,7 @@ +# Amount of users with Opus support needed to force Opus usage, in percent. +# 0 = Always enable Opus, 100 = enable Opus if it's supported by all clients. -+#opusthreshold=1 ++#opusthreshold=100 + # Regular expression used to validate channel names # (note that you have to escape backslashes with \ ) @@ -36,7 +36,7 @@ uiUid = uiGid = 0; #endif -+ iOpusThreshold = 1; ++ iOpusThreshold = 100; + qrUserName = QRegExp(QLatin1String("[-=\\w\\[\\]\\{\\}\\(\\)\\@\\|\\.]+")); qrChannelName = QRegExp(QLatin1String("[ \\-=\\w\\#\\[\\]\\{\\}\\(\\)\\@\\|]+")); @@ -147,3 +147,16 @@ bool bAllowHTML; QString qsPassword; QString qsWelcomeText; +--- a/scripts/murmur.ini.system ++++ b/scripts/murmur.ini.system +@@ -86,6 +86,10 @@ bandwidth=72000 + # Maximum number of concurrent clients allowed. + users=100 + ++# Amount of users with Opus support needed to force Opus usage, in percent. ++# 0 = Always enable Opus, 100 = enable Opus if it's supported by all clients. ++#opusthreshold=100 ++ + # Regular expression used to validate channel names + # (note that you have to escape backslashes with \ ) + #channelname=[ \\-=\\w\\#\\[\\]\\{\\}\\(\\)\\@\\|]+ diff -Nru mumble-1.2.3-349-g315b5f5/debian/patches/series mumble-1.2.3-349-g315b5f5/debian/patches/series --- mumble-1.2.3-349-g315b5f5/debian/patches/series 2012-07-08 13:42:05.000000000 -0400 +++ mumble-1.2.3-349-g315b5f5/debian/patches/series 2012-10-04 21:02:08.000000000 -0400 @@ -1,5 +1,6 @@ 02-reject-with-ip-in-log.diff 05-lsb-description.diff +07-use-embedded-celt-baseline 10-use-celt-guard 15-fix-noise-in-opus-mode 20-add-opus-threshold-option diff -Nru mumble-1.2.3-349-g315b5f5/debian/rules mumble-1.2.3-349-g315b5f5/debian/rules --- mumble-1.2.3-349-g315b5f5/debian/rules 2012-07-08 13:42:05.000000000 -0400 +++ mumble-1.2.3-349-g315b5f5/debian/rules 2012-10-04 21:02:08.000000000 -0400 @@ -25,7 +25,8 @@ CONFIG*=packaged \ CONFIG*=quiet-build-log \ CONFIG*=no-bundled-speex \ - CONFIG*=no-bundled-celt \ + CONFIG*=bundled-celt \ + DEFINES*=USE_CELT \ DEFINES*=NO_UPDATE_CHECK \ DEFINES*=PLUGIN_PATH=/usr/lib/mumble \ DEFINES*=MUMBLE_VERSION=$(MUMBLE_DEB_VERSION) \
diff -Nru mumble-1.2.3-348-g317f5a0/debian/MurmurPHP.ini mumble-1.2.3-349-g315b5f5/debian/MurmurPHP.ini --- mumble-1.2.3-348-g317f5a0/debian/MurmurPHP.ini 2012-05-24 20:33:03.000000000 +0200 +++ mumble-1.2.3-349-g315b5f5/debian/MurmurPHP.ini 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -ice.slice=/usr/share/slice/Murmur.ice diff -Nru mumble-1.2.3-348-g317f5a0/debian/changelog mumble-1.2.3-349-g315b5f5/debian/changelog --- mumble-1.2.3-348-g317f5a0/debian/changelog 2012-05-24 20:33:03.000000000 +0200 +++ mumble-1.2.3-349-g315b5f5/debian/changelog 2012-10-14 18:37:03.000000000 +0200 @@ -1,3 +1,72 @@ +mumble (1.2.3-349-g315b5f5-2.1) unstable; urgency=low + + * Non-maintainer upload. + * Fix "Cannot communicate with the vast majority of Mumble servers due + to lack of required baseline codec": + re-enable using the bundled celt library: + debian/patches/series: + - add 07-use-embedded-celt-baseline patch + debian/patches/07-use-embedded-celt-baseline: + - build Celt 0.7.1 and not 0.11.0 + debian/mumble.install: + - ship Celt 0.7.1 library from the embedded source + debian/rules: + - re-enable Celt using the bundled 0.7.1 version + debian/patches/20-add-opus-threshold-option: + - fix src/murmur/Meta.cpp to set default iOpusThreshold=100 to only + switch from Celt to Opus if 100% of connected clients support Opus + (instead of 1%) + - fix murmur.ini example for opusthreshold option to =100 + (instead of =1) + - add #opusthreshold=100 comments to murmur.ini.system (shipped as + etc/mumble-server.ini) to match murmur.ini example + Closes: #675971. + This implements the TC decision in #682010. + [Thanks to Gregor Herrmann for his help and guidance.] + + -- Christopher Knadle <chris.kna...@coredump.us> Thu, 04 Oct 2012 11:45:05 -0400 + +mumble (1.2.3-349-g315b5f5-2) unstable; urgency=low + + * Drop the hard dep on boost-1.46, that's been removed now. Closes: #678759 + Drop the | dep on alternative boost, since that's what got this package + overlooked when people were removing boost-1.46. + + * Drop the | dep on libgl-dev, that's been gone a long time now too and + leaves us vulnerable to a similar problem. + + * Drop the mumble-server-web package altogether. Upstream reports that it + is unmaintained and "pretty useless anyway", which seems to be well backed + up by the fact that a call to Ice_intversion() was added in March 2010, + and that function has never existed in any version of zeroc-ice ever. + A function named Ice_intVersion was added to -ice 3.2.1 though ... + Since it's taken this long for anyone to notice, we can be pretty sure that + there aren't any actual users of it. Closes: #676815, #676816 + + * Build-Depend on the unfycked version of zeroc-ice, so the ABI broken one + doesn't accidentally get used by an out of date buildd. Closes: #675955 + Force building with gcc-4.6, since that's required for zeroc-ice deps now, + until they get their act together and write some actually legal code. + + * Cherry-pick the upstream patches to fix the "audio glitches", and provide + codec thresholds and warnings. Closes: #675971 since it fixes the only + actual bug reported there. + + * Drop the watch file, since this has been building snapshots from git now + since 1.2.3-3 (and before). + + -- Ron Lee <r...@debian.org> Sun, 08 Jul 2012 06:18:50 +0930 + +mumble (1.2.3-349-g315b5f5-1) unstable; urgency=low + + * Adopt the package. Closes: #674719 + * Drop the dependency on the celt package. Closes: #674650 + * Add the upstream patch to enable opus support. + * Explicitly disable the bundled libs, don't rely on system lib detection + doing that as a side-effect. + + -- Ron Lee <r...@debian.org> Mon, 04 Jun 2012 03:56:35 +0930 + mumble (1.2.3-348-g317f5a0-1) unstable; urgency=low * New upstream snapshot from 20.05.2012. diff -Nru mumble-1.2.3-348-g317f5a0/debian/control mumble-1.2.3-349-g315b5f5/debian/control --- mumble-1.2.3-348-g317f5a0/debian/control 2012-05-24 20:33:03.000000000 +0200 +++ mumble-1.2.3-349-g315b5f5/debian/control 2012-07-08 19:42:05.000000000 +0200 @@ -1,28 +1,26 @@ Source: mumble Section: sound Priority: optional -Homepage: http://mumble.sourceforge.net/ -Maintainer: Debian VoIP Team <pkg-voip-maintain...@lists.alioth.debian.org> -Uploaders: Patrick Matthäi <pmatth...@debian.org>, - Thorvald Natvig <thorv...@debian.org> -Build-Depends: debhelper (>= 7.0.8), +Maintainer: Ron Lee <r...@debian.org> +Uploaders: Thorvald Natvig <thorv...@debian.org> +Build-Depends: debhelper (>= 7.0.8), g++-4.6, po-debconf, - libboost1.46-dev | libboost-dev (>= 1.38.0), - libboost-python1.46-dev | libboost-python-dev (>= 1.38.0), + libboost-dev (>= 1.42), + libboost-python-dev (>= 1.42), libqt4-dev (>= 4.5.0), hardening-wrapper, - libgl1-mesa-dev | libgl-dev, + libgl1-mesa-dev, libasound2-dev, libpulse-dev, libogg-dev, libspeex-dev, libspeexdsp-dev, - libcelt-dev (>= 0.7.0), + libopus-dev, libsndfile1-dev, libssl-dev, - libzeroc-ice34-dev | libzeroc-ice33-dev | libzeroc-ice32-dev | libzeroc-ice-dev, - ice34-translators | ice33-translators | ice32-translators | ice-translators, - ice34-slice | ice33-slice | ice32-slice | ice-slice, + libzeroc-ice34-dev (>= 3.4.2-8.1), + ice34-translators (>= 3.4.2-8.1), + ice34-slice (>= 3.4.2-8.1), libg15daemon-client-dev, libspeechd-dev, protobuf-compiler, @@ -30,15 +28,15 @@ libavahi-compat-libdnssd-dev, libxi-dev, libcap-dev [linux-any] -Standards-Version: 3.9.3 -Vcs-Svn: svn://svn.debian.org/pkg-voip/mumble/trunk/ -Vcs-Browser: http://anonscm.debian.org/viewvc/pkg-voip/mumble/ +Standards-Version: 3.9.3.1 +Homepage: http://mumble.sourceforge.net/ +Vcs-Git: git://git.debian.org/users/ron/mumble.git +Vcs-Browser: http://git.debian.org/?p=users/ron/mumble.git;a=summary Package: mumble Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, - libcelt0 (>= 0.7.0) | libcelt0-0 (>= 0.7.1~), libqt4-sql-sqlite, lsb-release Recommends: speech-dispatcher @@ -87,21 +85,3 @@ . This package contains the debugging symbols for the 'mumble' and 'mumble-server' packages. - -Package: mumble-server-web -Architecture: all -Depends: ${misc:Depends}, - ${perl:Depends}, - mumble-server (>= ${binary:Version}), - apache2, - exim4 | mail-transport-agent, - libnet-dbus-perl, - libcgi-session-perl, - libhtml-template-perl, - php-zeroc-ice, - ice34-translators | ice33-translators | ice32-translators | ice-translators, - ice34-slice | ice33-slice | ice32-slice | ice-slice -Description: Web scripts for mumble-server - Murmur (in the package mumble-server) is the VoIP server component for - Mumble. This package contains web scripts for registering users, uploading - custom textures and showing a list of currently connected users. diff -Nru mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.README.Debian mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.README.Debian --- mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.README.Debian 2012-05-24 20:33:04.000000000 +0200 +++ mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.README.Debian 1970-01-01 01:00:00.000000000 +0100 @@ -1,3 +0,0 @@ -If you have got Apache running, you can get a server list on: - - http://localhost/mumble-server/ diff -Nru mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.conf mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.conf --- mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.conf 2012-05-24 20:33:04.000000000 +0200 +++ mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.conf 1970-01-01 01:00:00.000000000 +0100 @@ -1,10 +0,0 @@ -Alias /mumble-server /usr/share/mumble-server-web/www/ - -<Directory /usr/share/mumble-server-web/www/> - Options FollowSymLinks ExecCGI - AllowOverride None - AddHandler cgi-script .cgi - DirectoryIndex index.php - Order allow,deny - Allow from all -</Directory> diff -Nru mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.dirs mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.dirs --- mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.dirs 2012-05-24 20:33:04.000000000 +0200 +++ mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.dirs 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -usr/share/mumble-server-web/www diff -Nru mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.install mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.install --- mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.install 2012-05-24 20:33:04.000000000 +0200 +++ mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.install 1970-01-01 01:00:00.000000000 +0100 @@ -1,3 +0,0 @@ -debian/MurmurPHP.ini etc/php5/conf.d -debian/mumble-server-web.conf etc/apache2/conf.d -scripts/weblist.php usr/share/mumble-server-web/www diff -Nru mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.links mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.links --- mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.links 2012-05-24 20:33:04.000000000 +0200 +++ mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.links 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -usr/share/mumble-server-web/www/weblist.php usr/share/mumble-server-web/www/index.php diff -Nru mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.postinst mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.postinst --- mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.postinst 2012-05-24 20:33:04.000000000 +0200 +++ mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.postinst 1970-01-01 01:00:00.000000000 +0100 @@ -1,35 +0,0 @@ -#! /bin/sh -# postinst script for mumble-server-web - -set -e - -# summary of how this script can be called: -# * <postinst> `configure' <most-recently-configured-version> -# * <old-postinst> `abort-upgrade' <new version> -# * <conflictor's-postinst> `abort-remove' `in-favour' <package> -# <new-version> -# * <postinst> `abort-remove' -# * <deconfigured's-postinst> `abort-deconfigure' `in-favour' -# <failed-install-package> <version> `removing' -# <conflicting-package> <version> -# for details, see http://www.debian.org/doc/debian-policy/ or -# the debian-policy package - -case "$1" in - configure) - # Restart apache2 to load new config - invoke-rc.d --quiet apache2 reload - ;; - - abort-upgrade|abort-remove|abort-deconfigure) - ;; - - *) - echo "postinst called with unknown argument \`$1'" >&2 - exit 1 - ;; -esac - -#DEBHELPER# - -exit 0 diff -Nru mumble-1.2.3-348-g317f5a0/debian/mumble.install mumble-1.2.3-349-g315b5f5/debian/mumble.install --- mumble-1.2.3-348-g317f5a0/debian/mumble.install 2012-05-24 20:33:03.000000000 +0200 +++ mumble-1.2.3-349-g315b5f5/debian/mumble.install 2012-10-14 18:36:54.000000000 +0200 @@ -1,6 +1,6 @@ release/mumble usr/bin/ release/libmumble.so* usr/lib/mumble/ -#release/libcelt0.so.?.?.? usr/lib/mumble/ +release/libcelt0.so.?.?.? usr/lib/mumble/ release/plugins/lib*.so usr/lib/mumble/ icons/mumble.xpm usr/share/pixmaps/ icons/mumble.svg usr/share/icons/hicolor/scalable/apps/ diff -Nru mumble-1.2.3-348-g317f5a0/debian/patches/07-use-embedded-celt-baseline mumble-1.2.3-349-g315b5f5/debian/patches/07-use-embedded-celt-baseline --- mumble-1.2.3-348-g317f5a0/debian/patches/07-use-embedded-celt-baseline 1970-01-01 01:00:00.000000000 +0100 +++ mumble-1.2.3-349-g315b5f5/debian/patches/07-use-embedded-celt-baseline 2012-10-14 18:36:54.000000000 +0200 @@ -0,0 +1,13 @@ +# build and bundle in only celt 0.7.1 if celt is embedded +--- a/main.pro ++++ b/main.pro +@@ -12,7 +12,8 @@ + SUBDIRS *= speexbuild + } + !CONFIG(no-bundled-celt) { +- SUBDIRS *= celt-0.7.0-build celt-0.11.0-build ++ SUBDIRS *= celt-0.7.0-build ++ SUBDIRS -= celt-0.11.0-build + } + + CONFIG(opus) { diff -Nru mumble-1.2.3-348-g317f5a0/debian/patches/10-use-celt-guard mumble-1.2.3-349-g315b5f5/debian/patches/10-use-celt-guard --- mumble-1.2.3-348-g317f5a0/debian/patches/10-use-celt-guard 1970-01-01 01:00:00.000000000 +0100 +++ mumble-1.2.3-349-g315b5f5/debian/patches/10-use-celt-guard 2012-07-08 19:42:05.000000000 +0200 @@ -0,0 +1,430 @@ +diff --git a/src/mumble/Audio.cpp b/src/mumble/Audio.cpp +index ef78f81..dc2352d 100644 +--- a/src/mumble/Audio.cpp ++++ b/src/mumble/Audio.cpp +@@ -49,6 +49,7 @@ LoopUser LoopUser::lpLoopy; + CodecInit ciInit; + + void CodecInit::initialize() { ++#ifdef USE_CELT + CELTCodec *codec = NULL; + + codec = new CELTCodec070(QLatin1String("0.7.0")); +@@ -103,12 +104,15 @@ void CodecInit::initialize() { + delete codec; + } + } ++#endif + } + + void CodecInit::destroy() { ++#ifdef USE_CELT + foreach(CELTCodec *codec, g.qmCodecs) + delete codec; + g.qmCodecs.clear(); ++#endif + } + + #ifdef Q_CC_GNU +@@ -123,6 +127,7 @@ extern "C" { + }; + #endif + ++#ifdef USE_CELT + CELTCodec::CELTCodec(const QString &version) { + bValid = false; + cmMode = NULL; +@@ -311,6 +316,7 @@ int CELTCodec011::encode(CELTEncoder *st, const celt_int16 *pcm, unsigned char * + int CELTCodec011::decode_float(CELTDecoder *st, const unsigned char *data, int len, float *pcm) { + return celt_decode_float(st, data, len, pcm, SAMPLE_RATE / 100); + } ++#endif // USE_CELT + + LoopUser::LoopUser() { + qsName = QLatin1String("Loopy"); +diff --git a/src/mumble/Audio.h b/src/mumble/Audio.h +index 3aa851d..d91027a 100644 +--- a/src/mumble/Audio.h ++++ b/src/mumble/Audio.h +@@ -32,7 +32,10 @@ + #define AUDIO_H_ + + #include <stdint.h> ++ ++#ifdef USE_CELT + #include <celt.h> ++#endif + + #include <QtCore/QByteArray> + #include <QtCore/QLibrary> +@@ -52,6 +55,7 @@ + + typedef QPair<QString,QVariant> audioDevice; + ++#ifdef USE_CELT + class CELTCodec { + private: + Q_DISABLE_COPY(CELTCodec) +@@ -139,6 +143,7 @@ class CELTCodec011 : public CELTCodec { + virtual int encode(CELTEncoder *st, const celt_int16 *pcm, unsigned char *compressed, int nbCompressedBytes); + virtual int decode_float(CELTDecoder *st, const unsigned char *data, int len, float *pcm); + }; ++#endif // USE_CELT + + class LoopUser : public ClientUser { + private: +diff --git a/src/mumble/AudioInput.cpp b/src/mumble/AudioInput.cpp +index c663c3c..624e1df 100644 +--- a/src/mumble/AudioInput.cpp ++++ b/src/mumble/AudioInput.cpp +@@ -100,10 +100,16 @@ AudioInput::AudioInput() : opusBuffer(g.s.iFramesPerPacket * (SAMPLE_RATE / 100) + + g.iAudioBandwidth = getNetworkBandwidth(iAudioQuality, iAudioFrames); + ++#ifdef USE_CELT + umtType = MessageHandler::UDPVoiceCELTAlpha; ++#else ++ umtType = MessageHandler::UDPVoiceOpus; ++#endif + ++#ifdef USE_CELT + cCodec = NULL; + ceEncoder = NULL; ++#endif + + iSampleRate = SAMPLE_RATE; + iFrameSize = SAMPLE_RATE / 100; +@@ -166,9 +172,11 @@ AudioInput::~AudioInput() { + opus_encoder_destroy(opusState); + #endif + ++#ifdef USE_CELT + if (ceEncoder) { + cCodec->celt_encoder_destroy(ceEncoder); + } ++#endif + + foreach(short *buf, qlEchoFrames) + delete [] buf; +@@ -610,6 +618,7 @@ bool AudioInput::selectCodec() { + } + + if (!useOpus) { ++#ifdef USE_CELT + CELTCodec *switchto = NULL; + if ((!g.uiSession || (g.s.lmLoopMode == Settings::Local)) && (!g.qmCodecs.isEmpty())) { + // Use latest for local loopback +@@ -640,6 +649,7 @@ bool AudioInput::selectCodec() { + } + + if (!cCodec) ++#endif + return false; + } + +@@ -647,6 +657,7 @@ bool AudioInput::selectCodec() { + if (useOpus) { + umtType = MessageHandler::UDPVoiceOpus; + } else { ++#ifdef USE_CELT + if (!g.uiSession) { + umtType = MessageHandler::UDPVoiceCELTAlpha; + } else { +@@ -659,6 +670,7 @@ bool AudioInput::selectCodec() { + qWarning() << "Couldn't find message type for codec version" << v; + } + } ++#endif + } + + if (umtType != previousType) { +@@ -688,6 +700,7 @@ int AudioInput::encodeOpusFrame(short *source, int size, unsigned char *buffer) + + int AudioInput::encodeCELTFrame(short *psSource, unsigned char *buffer) { + int len = 0; ++#ifdef USE_CELT + if (!cCodec) + return len; + +@@ -699,7 +712,7 @@ int AudioInput::encodeCELTFrame(short *psSource, unsigned char *buffer) { + cCodec->celt_encoder_ctl(ceEncoder, CELT_SET_VBR_RATE(iAudioQuality)); + len = cCodec->encode(ceEncoder, psSource, buffer, qMin(iAudioQuality / (8 * 100), 127)); + iBitrate = len * 100 * 8; +- ++#endif + return len; + } + +@@ -841,12 +854,15 @@ void AudioInput::encodeAudioFrame() { + if (!selectCodec()) + return; + ++#ifdef USE_CELT + if (umtType == MessageHandler::UDPVoiceCELTAlpha || umtType == MessageHandler::UDPVoiceCELTBeta) { + len = encodeCELTFrame(psSource, buffer); + if (len == 0) + return; + ++iBufferedFrames; +- } else if (umtType == MessageHandler::UDPVoiceOpus) { ++ } else ++#endif ++ if (umtType == MessageHandler::UDPVoiceOpus) { + encoded = false; + opusBuffer.insert(opusBuffer.end(), psSource, psSource + iFrameSize); + ++iBufferedFrames; +diff --git a/src/mumble/AudioInput.h b/src/mumble/AudioInput.h +index c7b8f98..1ffbf1d 100644 +--- a/src/mumble/AudioInput.h ++++ b/src/mumble/AudioInput.h +@@ -117,8 +117,10 @@ class AudioInput : public QThread { + SpeexPreprocessState *sppPreprocess; + SpeexEchoState *sesEcho; + ++#ifdef USE_CELT + CELTCodec *cCodec; + CELTEncoder *ceEncoder; ++#endif + + int iAudioQuality; + int iAudioFrames; +diff --git a/src/mumble/AudioOutputSpeech.cpp b/src/mumble/AudioOutputSpeech.cpp +index c09dabc..5939fe6 100644 +--- a/src/mumble/AudioOutputSpeech.cpp ++++ b/src/mumble/AudioOutputSpeech.cpp +@@ -48,8 +48,10 @@ AudioOutputSpeech::AudioOutputSpeech(ClientUser *user, unsigned int freq, Messag + umtType = type; + iMixerFreq = freq; + ++#ifdef USE_CELT + cCodec = NULL; + cdDecoder = NULL; ++#endif + dsSpeex = NULL; + opusState = NULL; + +@@ -113,9 +115,12 @@ AudioOutputSpeech::~AudioOutputSpeech() { + if (opusState) + opus_decoder_destroy(opusState); + #endif ++#ifdef USE_CELT + if (cdDecoder) { + cCodec->celt_decoder_destroy(cdDecoder); +- } else if (dsSpeex) { ++ } else ++#endif ++ if (dsSpeex) { + speex_bits_destroy(&sbBits); + speex_decoder_destroy(dsSpeex); + } +@@ -302,6 +307,7 @@ bool AudioOutputSpeech::needSamples(unsigned int snum) { + if (! qlFrames.isEmpty()) { + QByteArray qba = qlFrames.takeFirst(); + ++#ifdef USE_CELT + if (umtType == MessageHandler::UDPVoiceCELTAlpha || umtType == MessageHandler::UDPVoiceCELTBeta) { + int wantversion = (umtType == MessageHandler::UDPVoiceCELTAlpha) ? g.iCodecAlpha : g.iCodecBeta; + if ((p == &LoopUser::lpLoopy) && (! g.qmCodecs.isEmpty())) { +@@ -323,7 +329,9 @@ bool AudioOutputSpeech::needSamples(unsigned int snum) { + cCodec->decode_float(cdDecoder, qba.isEmpty() ? NULL : reinterpret_cast<const unsigned char *>(qba.constData()), qba.size(), pOut); + else + memset(pOut, 0, sizeof(float) * iFrameSize); +- } else if (umtType == MessageHandler::UDPVoiceOpus) { ++ } else ++#endif ++ if (umtType == MessageHandler::UDPVoiceOpus) { + #ifdef USE_OPUS + decodedSamples = opus_decode_float(opusState, qba.isEmpty() ? NULL : reinterpret_cast<const unsigned char *>(qba.constData()), qba.size(), pOut, iAudioBufferSize, 0); + iOutputSize = static_cast<unsigned int>(ceilf(static_cast<float>(decodedSamples * iMixerFreq) / static_cast<float>(iSampleRate))); +@@ -369,12 +377,15 @@ bool AudioOutputSpeech::needSamples(unsigned int snum) { + if (qlFrames.isEmpty() && bHasTerminator) + nextalive = false; + } else { ++#ifdef USE_CELT + if (umtType == MessageHandler::UDPVoiceCELTAlpha || umtType == MessageHandler::UDPVoiceCELTBeta) { + if (cdDecoder) + cCodec->decode_float(cdDecoder, NULL, 0, pOut); + else + memset(pOut, 0, sizeof(float) * iFrameSize); +- } else if (umtType == MessageHandler::UDPVoiceOpus) { ++ } else ++#endif ++ if (umtType == MessageHandler::UDPVoiceOpus) { + #ifdef USE_OPUS + opus_decode_float(opusState, NULL, 0, pOut, iFrameSize, 0); + #endif +diff --git a/src/mumble/AudioOutputSpeech.h b/src/mumble/AudioOutputSpeech.h +index d123c8a..1199585 100644 +--- a/src/mumble/AudioOutputSpeech.h ++++ b/src/mumble/AudioOutputSpeech.h +@@ -36,14 +36,20 @@ + #include <speex/speex.h> + #include <speex/speex_resampler.h> + #include <speex/speex_jitter.h> ++ ++#ifdef USE_CELT + #include <celt.h> ++#endif + + #include <QtCore/QMutex> + + #include "AudioOutputUser.h" + #include "Message.h" + ++#ifdef USE_CELT + class CELTCodec; ++#endif ++ + class ClientUser; + struct OpusDecoder; + +@@ -74,8 +80,10 @@ class AudioOutputSpeech : public AudioOutputUser { + JitterBuffer *jbJitter; + int iMissCount; + ++#ifdef USE_CELT + CELTCodec *cCodec; + CELTDecoder *cdDecoder; ++#endif + + OpusDecoder *opusState; + +diff --git a/src/mumble/Global.h b/src/mumble/Global.h +index f50d8dd..d4669d8 100644 +--- a/src/mumble/Global.h ++++ b/src/mumble/Global.h +@@ -54,7 +54,9 @@ class Overlay; + class LCD; + class BonjourClient; + class OverlayClient; ++#ifdef USE_CELT + class CELTCodec; ++#endif + + class QNetworkAccessManager; + +@@ -92,7 +94,9 @@ public: + int iMaxBandwidth; + int iAudioBandwidth; + QDir qdBasePath; ++#ifdef USE_CELT + QMap<int, CELTCodec *> qmCodecs; ++#endif + int iCodecAlpha, iCodecBeta; + bool bPreferAlpha; + bool bOpus; +diff --git a/src/mumble/MainWindow.cpp b/src/mumble/MainWindow.cpp +index 1ff8eb1..178f2de 100644 +--- a/src/mumble/MainWindow.cpp ++++ b/src/mumble/MainWindow.cpp +@@ -1046,12 +1046,16 @@ static const QString currentCodec() { + if (g.bOpus) + return QLatin1String("Opus"); + ++#ifdef USE_CELT + int v = g.bPreferAlpha ? g.iCodecAlpha : g.iCodecBeta; + CELTCodec* cc = g.qmCodecs.value(v); + if (cc) + return QString::fromLatin1("CELT %1").arg(cc->version()); + else + return QString::fromLatin1("CELT %1").arg(QString::number(v, 16)); ++#else ++ return QLatin1String("None"); ++#endif + } + + void MainWindow::on_qaServerInformation_triggered() { +diff --git a/src/mumble/Messages.cpp b/src/mumble/Messages.cpp +index 8806c0d..2aabbda 100644 +--- a/src/mumble/Messages.cpp ++++ b/src/mumble/Messages.cpp +@@ -735,6 +735,7 @@ void MainWindow::msgCodecVersion(const MumbleProto::CodecVersion &msg) { + g.bOpus = msg.opus(); + #endif + ++#ifdef USE_CELT + // Workaround for broken 1.2.2 servers + if (g.sh && g.sh->uiVersion == 0x010202 && alpha != -1 && alpha == beta) { + if (pref) +@@ -768,6 +769,7 @@ void MainWindow::msgCodecVersion(const MumbleProto::CodecVersion &msg) { + } else { + warned = false; + } ++#endif + } + + void MainWindow::msgUserStats(const MumbleProto::UserStats &msg) { +diff --git a/src/mumble/ServerHandler.cpp b/src/mumble/ServerHandler.cpp +index b5bbc96..d0feb69 100644 +--- a/src/mumble/ServerHandler.cpp ++++ b/src/mumble/ServerHandler.cpp +@@ -189,8 +189,10 @@ void ServerHandler::udpReady() { + accUDP(static_cast<double>(tTimestamp.elapsed() - t) / 1000.0); + } + break; ++#ifdef USE_CELT + case MessageHandler::UDPVoiceCELTAlpha: + case MessageHandler::UDPVoiceCELTBeta: ++#endif + case MessageHandler::UDPVoiceSpeex: + case MessageHandler::UDPVoiceOpus: + handleVoicePacket(msgFlags, pds, msgType); +@@ -420,8 +422,10 @@ void ServerHandler::message(unsigned int msgType, const QByteArray &qbaMsg) { + PacketDataStream pds(qbaMsg.constData() + 1, qbaMsg.size()); + + switch (umsgType) { ++#ifdef USE_CELT + case MessageHandler::UDPVoiceCELTAlpha: + case MessageHandler::UDPVoiceCELTBeta: ++#endif + case MessageHandler::UDPVoiceSpeex: + handleVoicePacket(msgFlags, pds, umsgType); + break; +@@ -539,9 +543,11 @@ void ServerHandler::serverConnectionConnected() { + foreach(const QString &qs, tokens) + mpa.add_tokens(u8(qs)); + ++#ifdef USE_CELT + QMap<int, CELTCodec *>::const_iterator i; + for (i=g.qmCodecs.constBegin(); i != g.qmCodecs.constEnd(); ++i) + mpa.add_celt_versions(i.key()); ++#endif + #ifdef USE_OPUS + mpa.set_opus(true); + #else +diff --git a/src/mumble/UserInformation.cpp b/src/mumble/UserInformation.cpp +index af1dbe3..36fdde5 100644 +--- a/src/mumble/UserInformation.cpp ++++ b/src/mumble/UserInformation.cpp +@@ -160,6 +160,7 @@ void UserInformation::update(const MumbleProto::UserStats &msg) { + qlVersion->setText(tr("%1 (%2)").arg(MumbleVersion::toString(mpv.version())).arg(u8(mpv.release()))); + qlOS->setText(tr("%1 (%2)").arg(u8(mpv.os())).arg(u8(mpv.os_version()))); + } ++#ifdef USE_CELT + if (msg.celt_versions_size() > 0) { + QStringList qsl; + for (int i=0;i<msg.celt_versions_size(); ++i) { +@@ -172,6 +173,7 @@ void UserInformation::update(const MumbleProto::UserStats &msg) { + } + qlCELT->setText(qsl.join(tr(", "))); + } ++#endif + if (msg.has_opus()) { + qlOpus->setText(msg.opus() ? tr("Supported") : tr("Not Supported")); + } +diff --git a/src/mumble/mumble_pch.hpp b/src/mumble/mumble_pch.hpp +index d8c4dbd..2089c94 100644 +--- a/src/mumble/mumble_pch.hpp ++++ b/src/mumble/mumble_pch.hpp +@@ -52,8 +52,12 @@ + #define __int64_t __int64 + #include <sndfile.h> + #undef __int64_t ++ ++#ifdef USE_CELT + #include <celt.h> + #include <celt_header.h> ++#endif ++ + #include <speex/speex.h> + #include <speex/speex_header.h> + #include <speex/speex_jitter.h> diff -Nru mumble-1.2.3-348-g317f5a0/debian/patches/15-fix-noise-in-opus-mode mumble-1.2.3-349-g315b5f5/debian/patches/15-fix-noise-in-opus-mode --- mumble-1.2.3-348-g317f5a0/debian/patches/15-fix-noise-in-opus-mode 1970-01-01 01:00:00.000000000 +0100 +++ mumble-1.2.3-349-g315b5f5/debian/patches/15-fix-noise-in-opus-mode 2012-07-08 19:42:05.000000000 +0200 @@ -0,0 +1,31 @@ +diff --git a/src/mumble/AudioOutputSpeech.cpp b/src/mumble/AudioOutputSpeech.cpp +index 5939fe6..e67fc87 100644 +--- a/src/mumble/AudioOutputSpeech.cpp ++++ b/src/mumble/AudioOutputSpeech.cpp +@@ -334,8 +334,6 @@ bool AudioOutputSpeech::needSamples(unsigned int snum) { + if (umtType == MessageHandler::UDPVoiceOpus) { + #ifdef USE_OPUS + decodedSamples = opus_decode_float(opusState, qba.isEmpty() ? NULL : reinterpret_cast<const unsigned char *>(qba.constData()), qba.size(), pOut, iAudioBufferSize, 0); +- iOutputSize = static_cast<unsigned int>(ceilf(static_cast<float>(decodedSamples * iMixerFreq) / static_cast<float>(iSampleRate))); +- resizeBuffer(iBufferFilled + iOutputSize); + #endif + } else { + if (qba.isEmpty()) { +@@ -387,7 +385,7 @@ bool AudioOutputSpeech::needSamples(unsigned int snum) { + #endif + if (umtType == MessageHandler::UDPVoiceOpus) { + #ifdef USE_OPUS +- opus_decode_float(opusState, NULL, 0, pOut, iFrameSize, 0); ++ decodedSamples = opus_decode_float(opusState, NULL, 0, pOut, iFrameSize, 0); + #endif + } else { + speex_decode(dsSpeex, NULL, pOut); +@@ -410,7 +408,7 @@ bool AudioOutputSpeech::needSamples(unsigned int snum) { + } + nextframe: + spx_uint32_t inlen = decodedSamples; +- spx_uint32_t outlen = iOutputSize; ++ spx_uint32_t outlen = static_cast<unsigned int>(ceilf(static_cast<float>(decodedSamples * iMixerFreq) / static_cast<float>(iSampleRate))); + if (srs && bLastAlive) + speex_resampler_process_float(srs, 0, fResamplerBuffer, &inlen, pfBuffer + iBufferFilled, &outlen); + iBufferFilled += outlen; diff -Nru mumble-1.2.3-348-g317f5a0/debian/patches/20-add-opus-threshold-option mumble-1.2.3-349-g315b5f5/debian/patches/20-add-opus-threshold-option --- mumble-1.2.3-348-g317f5a0/debian/patches/20-add-opus-threshold-option 1970-01-01 01:00:00.000000000 +0100 +++ mumble-1.2.3-349-g315b5f5/debian/patches/20-add-opus-threshold-option 2012-10-14 18:36:54.000000000 +0200 @@ -0,0 +1,162 @@ +diff --git a/scripts/murmur.ini b/scripts/murmur.ini +index f941531..87d49fd 100644 +--- a/scripts/murmur.ini ++++ b/scripts/murmur.ini +@@ -86,6 +86,10 @@ bandwidth=72000 + # Maximum number of concurrent clients allowed. + users=100 + ++# Amount of users with Opus support needed to force Opus usage, in percent. ++# 0 = Always enable Opus, 100 = enable Opus if it's supported by all clients. ++#opusthreshold=100 ++ + # Regular expression used to validate channel names + # (note that you have to escape backslashes with \ ) + #channelname=[ \\-=\\w\\#\\[\\]\\{\\}\\(\\)\\@\\|]+ +diff --git a/src/murmur/Messages.cpp b/src/murmur/Messages.cpp +index 0d7a5ed..4b6be72 100644 +--- a/src/murmur/Messages.cpp ++++ b/src/murmur/Messages.cpp +@@ -391,7 +391,9 @@ void Server::msgAuthenticate(ServerUser *uSource, MumbleProto::Authenticate &msg + mpsug.set_positional(qvSuggestPositional.toBool()); + if (! qvSuggestPushToTalk.isNull()) + mpsug.set_push_to_talk(qvSuggestPushToTalk.toBool()); +- sendMessage(uSource, mpsug); ++ if (mpsug.ByteSize() > 0) { ++ sendMessage(uSource, mpsug); ++ } + + log(uSource, "Authenticated"); + +diff --git a/src/murmur/Meta.cpp b/src/murmur/Meta.cpp +index dc55b3a..4333ae2 100644 +--- a/src/murmur/Meta.cpp ++++ b/src/murmur/Meta.cpp +@@ -81,6 +81,8 @@ MetaParams::MetaParams() { + uiUid = uiGid = 0; + #endif + ++ iOpusThreshold = 100; ++ + qrUserName = QRegExp(QLatin1String("[-=\\w\\[\\]\\{\\}\\(\\)\\@\\|\\.]+")); + qrChannelName = QRegExp(QLatin1String("[ \\-=\\w\\#\\[\\]\\{\\}\\(\\)\\@\\|]+")); + +@@ -283,6 +285,8 @@ void MetaParams::read(QString fname) { + if (qvSuggestPushToTalk.toString().trimmed().isEmpty()) + qvSuggestPushToTalk = QVariant(); + ++ iOpusThreshold = qsSettings->value("opusthreshold", iOpusThreshold).toInt(); ++ + #ifdef Q_OS_UNIX + qsName = qsSettings->value("uname").toString(); + if (geteuid() == 0) { +@@ -441,6 +445,7 @@ void MetaParams::read(QString fname) { + qmConfig.insert(QLatin1String("suggestversion"), qvSuggestVersion.isNull() ? QString() : qvSuggestVersion.toString()); + qmConfig.insert(QLatin1String("suggestpositional"), qvSuggestPositional.isNull() ? QString() : qvSuggestPositional.toString()); + qmConfig.insert(QLatin1String("suggestpushtotalk"), qvSuggestPushToTalk.isNull() ? QString() : qvSuggestPushToTalk.toString()); ++ qmConfig.insert(QLatin1String("opusthreshold"), QString::number(iOpusThreshold)); + } + + Meta::Meta() { +diff --git a/src/murmur/Meta.h b/src/murmur/Meta.h +index 7ed0595..669e76c 100644 +--- a/src/murmur/Meta.h ++++ b/src/murmur/Meta.h +@@ -60,6 +60,7 @@ struct MetaParams { + bool bRememberChan; + int iMaxTextMessageLength; + int iMaxImageMessageLength; ++ int iOpusThreshold; + bool bAllowHTML; + QString qsPassword; + QString qsWelcomeText; +diff --git a/src/murmur/Server.cpp b/src/murmur/Server.cpp +index 547d699..f015bac 100644 +--- a/src/murmur/Server.cpp ++++ b/src/murmur/Server.cpp +@@ -331,6 +331,7 @@ void Server::readParams() { + qvSuggestVersion = Meta::mp.qvSuggestVersion; + qvSuggestPositional = Meta::mp.qvSuggestPositional; + qvSuggestPushToTalk = Meta::mp.qvSuggestPushToTalk; ++ iOpusThreshold = Meta::mp.iOpusThreshold; + + QString qsHost = getConf("host", QString()).toString(); + if (! qsHost.isEmpty()) { +@@ -393,6 +394,8 @@ void Server::readParams() { + if (qvSuggestPushToTalk.toString().trimmed().isEmpty()) + qvSuggestPushToTalk = QVariant(); + ++ iOpusThreshold = getConf("opusthreshold", iOpusThreshold).toInt(); ++ + qrUserName=QRegExp(getConf("username", qrUserName.pattern()).toString()); + qrChannelName=QRegExp(getConf("channelname", qrChannelName.pattern()).toString()); + } +@@ -503,6 +506,8 @@ void Server::setLiveConf(const QString &key, const QString &value) { + qvSuggestPositional = ! v.isNull() ? (v.isEmpty() ? QVariant() : v) : Meta::mp.qvSuggestPositional; + else if (key == "suggestpushtotalk") + qvSuggestPushToTalk = ! v.isNull() ? (v.isEmpty() ? QVariant() : v) : Meta::mp.qvSuggestPushToTalk; ++ else if (key == "opusthreshold") ++ iOpusThreshold = i ? i : Meta::mp.iOpusThreshold; + } + + #ifdef USE_BONJOUR +@@ -1648,8 +1653,9 @@ void Server::recheckCodecVersions() { + + if (! users) + return; +- +- bool allHasOpus = (opus == users); ++ ++ // Enable Opus if the number of users with Opus is higher than the threshold ++ bool enableOpus = ((opus * 100 / users) >= iOpusThreshold); + + // Find the best possible codec most users support + int version = 0; +@@ -1680,17 +1686,17 @@ void Server::recheckCodecVersions() { + iCodecAlpha = version; + else + iCodecBeta = version; +- } else if (bOpus == allHasOpus) { ++ } else if (bOpus == enableOpus) { + return; + } +- +- bOpus = allHasOpus; +- ++ ++ bOpus = enableOpus; ++ + MumbleProto::CodecVersion mpcv; + mpcv.set_alpha(iCodecAlpha); + mpcv.set_beta(iCodecBeta); + mpcv.set_prefer_alpha(bPreferAlpha); +- mpcv.set_opus(allHasOpus); ++ mpcv.set_opus(bOpus); + sendAll(mpcv); + + log(QString::fromLatin1("CELT codec switch %1 %2 (prefer %3) (Opus %4)").arg(iCodecAlpha,0,16).arg(iCodecBeta,0,16).arg(bPreferAlpha ? iCodecAlpha : iCodecBeta,0,16).arg(bOpus)); +diff --git a/src/murmur/Server.h b/src/murmur/Server.h +index 788eb89..66025de 100644 +--- a/src/murmur/Server.h ++++ b/src/murmur/Server.h +@@ -132,6 +132,7 @@ class Server : public QThread { + bool bRememberChan; + int iMaxTextMessageLength; + int iMaxImageMessageLength; ++ int iOpusThreshold; + bool bAllowHTML; + QString qsPassword; + QString qsWelcomeText; +--- a/scripts/murmur.ini.system ++++ b/scripts/murmur.ini.system +@@ -86,6 +86,10 @@ bandwidth=72000 + # Maximum number of concurrent clients allowed. + users=100 + ++# Amount of users with Opus support needed to force Opus usage, in percent. ++# 0 = Always enable Opus, 100 = enable Opus if it's supported by all clients. ++#opusthreshold=100 ++ + # Regular expression used to validate channel names + # (note that you have to escape backslashes with \ ) + #channelname=[ \\-=\\w\\#\\[\\]\\{\\}\\(\\)\\@\\|]+ diff -Nru mumble-1.2.3-348-g317f5a0/debian/patches/25-add-codec-warnings mumble-1.2.3-349-g315b5f5/debian/patches/25-add-codec-warnings --- mumble-1.2.3-348-g317f5a0/debian/patches/25-add-codec-warnings 1970-01-01 01:00:00.000000000 +0100 +++ mumble-1.2.3-349-g315b5f5/debian/patches/25-add-codec-warnings 2012-07-08 19:42:05.000000000 +0200 @@ -0,0 +1,47 @@ +diff --git a/src/murmur/Messages.cpp b/src/murmur/Messages.cpp +index 4b6be72..6310f89 100644 +--- a/src/murmur/Messages.cpp ++++ b/src/murmur/Messages.cpp +@@ -201,6 +201,7 @@ void Server::msgAuthenticate(ServerUser *uSource, MumbleProto::Authenticate &msg + mpcrypt.set_client_nonce(std::string(reinterpret_cast<const char *>(uSource->csCrypt.decrypt_iv), AES_BLOCK_SIZE)); + sendMessage(uSource, mpcrypt); + ++ bool fake_celt_support = false; + if (msg.celt_versions_size() > 0) { + for (int i=0;i < msg.celt_versions_size(); ++i) + uSource->qlCodecs.append(msg.celt_versions(i)); +@@ -217,6 +219,12 @@ void Server::msgAuthenticate(ServerUser *uSource, MumbleProto::Authenticate &msg + mpcv.set_opus(bOpus); + sendMessage(uSource, mpcv); + ++ if (!bOpus && uSource->bOpus && fake_celt_support) { ++ sendTextMessage(NULL, uSource, false, QLatin1String("<strong>WARNING:</strong> Your client doesn't support the CELT codec, you won't be able to talk to or hear most clients. Please make sure your client was built with CELT support.")); ++ } else if (bOpus && !uSource->bOpus) { ++ sendTextMessage(NULL, uSource, false, QLatin1String("<strong>WARNING:</strong> Your client doesn't support the Opus codec, you won't be able to talk or hear anyone. Please upgrade to a client with Opus support.")); ++ } ++ + // Transmit channel tree + QQueue<Channel *> q; + QSet<Channel *> chans; +diff --git a/src/murmur/Server.cpp b/src/murmur/Server.cpp +index f015bac..b1700fd 100644 +--- a/src/murmur/Server.cpp ++++ b/src/murmur/Server.cpp +@@ -773,6 +773,8 @@ void Server::run() { + case MessageHandler::UDPVoiceSpeex: + case MessageHandler::UDPVoiceCELTAlpha: + case MessageHandler::UDPVoiceCELTBeta: ++ if (bOpus) ++ break; + case MessageHandler::UDPVoiceOpus: { + u->bUdp = true; + processMsg(u, buffer, len); +@@ -1275,6 +1277,8 @@ void Server::message(unsigned int uiType, const QByteArray &qbaMsg, ServerUser * + case MessageHandler::UDPVoiceCELTAlpha: + case MessageHandler::UDPVoiceCELTBeta: + case MessageHandler::UDPVoiceSpeex: ++ if (bOpus) ++ break; + case MessageHandler::UDPVoiceOpus: + processMsg(u, buffer, l); + break; diff -Nru mumble-1.2.3-348-g317f5a0/debian/patches/series mumble-1.2.3-349-g315b5f5/debian/patches/series --- mumble-1.2.3-348-g317f5a0/debian/patches/series 2012-05-24 20:33:03.000000000 +0200 +++ mumble-1.2.3-349-g315b5f5/debian/patches/series 2012-10-14 18:36:54.000000000 +0200 @@ -1,2 +1,7 @@ 02-reject-with-ip-in-log.diff 05-lsb-description.diff +07-use-embedded-celt-baseline +10-use-celt-guard +15-fix-noise-in-opus-mode +20-add-opus-threshold-option +25-add-codec-warnings diff -Nru mumble-1.2.3-348-g317f5a0/debian/rules mumble-1.2.3-349-g315b5f5/debian/rules --- mumble-1.2.3-348-g317f5a0/debian/rules 2012-05-24 20:33:03.000000000 +0200 +++ mumble-1.2.3-349-g315b5f5/debian/rules 2012-10-14 18:36:54.000000000 +0200 @@ -18,12 +18,15 @@ configure: configure-stamp configure-stamp: dh_testdir - qmake-qt4 -recursive main.pro \ + qmake-qt4 QMAKE_CXX=g++-4.6 QMAKE_CC=gcc-4.6 -recursive main.pro \ CONFIG*=release \ CONFIG*=symbols \ CONFIG*=no-embed-qt-translations \ CONFIG*=packaged \ CONFIG*=quiet-build-log \ + CONFIG*=no-bundled-speex \ + CONFIG*=bundled-celt \ + DEFINES*=USE_CELT \ DEFINES*=NO_UPDATE_CHECK \ DEFINES*=PLUGIN_PATH=/usr/lib/mumble \ DEFINES*=MUMBLE_VERSION=$(MUMBLE_DEB_VERSION) \ @@ -31,7 +34,7 @@ DEFINES*=HAVE_ENDIAN_H touch configure-stamp -build: build-arch build-indep +build: build-arch build-arch: build-arch-stamp @@ -40,14 +43,13 @@ slice2html -I/usr/share/Ice-3.4.1/slice -I/usr/share/Ice-3.3.1/slice -I/usr/share/Ice/slice src/murmur/Murmur.ice --output-dir Ice touch $@ -build-indep: build-indep-stamp +build-indep: -build-indep-stamp: clean: dh_testdir dh_testroot - rm -f build-arch-stamp build-indep-stamp configure-stamp + rm -f build-arch-stamp configure-stamp [ ! -f Makefile ] || $(MAKE) distclean [ ! -d gendoc ] || rm -rf Ice rm -rf release debug @@ -56,15 +58,7 @@ debconf-updatepo dh_clean -install: install-indep install-arch - -install-indep: - dh_testdir - dh_testroot - dh_prep - dh_installdirs -i - dh_install -i - install -m 0755 -D ./scripts/weblist.pl $(CURDIR)/debian/mumble-server-web/usr/share/mumble-server-web/www/weblist.cgi +install: install-arch install-arch: dh_testdir @@ -95,22 +89,19 @@ dh_strip --dbg-package=mumble-dbg dh_compress dh_fixperms - dh_perl $(CURDIR)/debian/mumble-server-web/usr/lib/cgi-bin/mumble-server dh_installdeb dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb -binary-indep: build-indep install-indep - $(MAKE) -f debian/rules DH_OPTIONS=-i binary-common +binary-indep: binary-arch: build-arch install-arch $(MAKE) -f debian/rules DH_OPTIONS=-s binary-common -binary: binary-indep binary-arch - -get-orig-source: - wget -O $(SOURCE_DIR)/mumble_$(VERSION).orig.tar.gz http://mumble.info/snapshot/mumble-$(VERSION).tar.gz +binary: binary-arch -.PHONY: build clean binary-indep binary-arch binary install install-indep install-arch configure +.PHONY: clean configure build build-arch build-indep \ + binary binary-arch binary-indep binary-common \ + install install-arch diff -Nru mumble-1.2.3-348-g317f5a0/debian/watch mumble-1.2.3-349-g315b5f5/debian/watch --- mumble-1.2.3-348-g317f5a0/debian/watch 2012-05-24 20:33:03.000000000 +0200 +++ mumble-1.2.3-349-g315b5f5/debian/watch 1970-01-01 01:00:00.000000000 +0100 @@ -1,2 +0,0 @@ -version=3 -http://sf.net/mumble/mumble-(.*)\.tar\.gz diff -Nru mumble-1.2.3-348-g317f5a0/src/mumble/mumble.pro mumble-1.2.3-349-g315b5f5/src/mumble/mumble.pro --- mumble-1.2.3-348-g317f5a0/src/mumble/mumble.pro 2012-05-20 14:00:56.000000000 +0200 +++ mumble-1.2.3-349-g315b5f5/src/mumble/mumble.pro 2012-06-03 20:12:20.000000000 +0200 @@ -77,10 +77,15 @@ DEFINES *= NO_VORBIS_RECORDING } -CONFIG(opus) { - INCLUDEPATH *= ../../opus-src/celt ../../opus-src/include ../../opus-src/src ../../opus-build/src - DEFINES *= USE_OPUS - LIBS *= -lopus +unix:system(pkg-config --exists opus) { + PKGCONFIG *= opus + DEFINES *= USE_OPUS +} else { + CONFIG(opus) { + INCLUDEPATH *= ../../opus-src/celt ../../opus-src/include ../../opus-src/src ../../opus-build/src + DEFINES *= USE_OPUS + LIBS *= -lopus + } } win32 {
signature.asc
Description: Digital signature