Commit Graph

97 Commits

Author SHA1 Message Date
Hartmnt
1e35791295 DOCS: Add accessibility checklist 2024-04-04 13:23:05 +00:00
Robert Adam
6925837e03 MAINT: Fix cmake option generation 2024-01-01 15:15:45 +01:00
Robert Adam
dac3337786
Merge PR #6292: CHANGE(client): Exclude and discourage RNNoise
Due to RNNoise being unmaintained and the library's code being in very poor shape, this commit excludes the RNNoise feature from Mumble by default and discourages its use.

The library contains Opus and CELT symbols (probably due to copy&paste of code) that can end up being called from Opus instead of its own versions of these functions. This can lead to completely unforeseen behavior, including crashes.
An example of this is as of writing this, enabling RNNoise on macOS leads to a crash of Mumble pretty much as soon as it starts up with an "invalid instruction" error. The reason being that part of RNNoise's implementation of one of Opus's symbols contains a code path that produces an invalid instruction in optimized builds (and a segfault in debug builds) and this code path is taken when Opus (wrongly) uses this function instead of its own.

Fixes #6041
2023-12-31 13:51:19 +01:00
Robert Adam
694c4fbb78 CHANGE(client): Exclude and discourage RNNoise
Due to RNNoise being unmaintained and the library's code being in very
poor shape, this commit excludes the RNNoise feature from Mumble by
default and discourages its use.

The library contains Opus and CELT symbols (probably due to copy&paste
of code) that can end up being called from Opus instead of its own
versions of these functions. This can lead to completely unforeseen
behavior, including crashes.
An example of this is as of writing this, enabling RNNoise on macOS
leads to a crash of Mumble pretty much as soon as it starts up with an
"invalid instruction" error. The reason being that part of RNNoise's
implementation of one of Opus's symbols contains a code path that
produces an invalid instruction in optimized builds (and a segfault in
debug builds) and this code path is taken when Opus (wrongly) uses this
function instead of its own.

Fixes #6041
2023-12-30 09:36:13 +01:00
Robert Adam
fd41ebde9f
Merge PR #6205: DOCS(build): Update Ubuntu package names
Fixes #6204
2023-12-29 20:16:31 +01:00
Kaif Khan
f321876cc6 DOCS(build): Update Ubuntu package names
Fixes #6204
2023-12-29 19:41:37 +01:00
Davide Beatrici
4587e75de2 REFAC(client): Get rid of launcher and DLL on Windows 2023-10-25 02:33:48 +02:00
Robert Adam
ca3f296617
Merge PR #6235: DOCS: Change encoding to UTF-8 & clean up error msg in FAQ 2023-10-11 08:48:56 +02:00
Robert Adam
620b7fd253
DOCS: Change encoding to UTF-8 & clean up error msg in FAQ 2023-10-11 07:56:03 +02:00
Thomas Windt
9eafefbeb6 DOCS(build): fix custom ice link
Folder was renamed in 4a533fa64e
2023-10-08 15:27:17 +02:00
Robert Adam
5b83d0fe45
Merge PR #6170: REFAC(plugins): Unified Mumble plugin headers
Having different include files that are needed (and which are inter-dependent) to create your own plugin, makes things harder than it needs to be.

Therefore, all plugin header files (those for the "new" (1.4) plugin framework anyway) have been combined into one header file. Thus, developers now only have to download a single file and include that instead of having to figure out what files to download and what to include where.

Taking the chance, the version number has been removed from the header file's name. This allows one to track changes made to the API via git (which is not quite as easy if you create a new file every time you make a change).
2023-10-06 08:59:01 +02:00
Robert Adam
2b35c0c28f REFAC(plugins): Unified Mumble plugin headers
Having different include files that are needed (and which are
inter-dependent) to create your own plugin, makes things harder than it
needs to be.

Therefore, all plugin header files (those for the "new" (1.4) plugin
framework anyway) have been combined into one header file. Thus,
developers now only have to download a single file and include that
instead of having to figure out what files to download and what to
include where.

Taking the chance, the version number has been removed from the header
file's name. This allows one to track changes made to the API via git
(which is not quite as easy if you create a new file every time you make
a change).
2023-07-27 19:39:30 +02:00
Robert Adam
ff1e736c47 DOCS/MAINT: Update vcpkg dependency list
The different dependency lists have become out-of-sync and/or
out-of-date.

This should remedy problems as encountered in #6163.
2023-07-10 13:14:59 +02:00
Robert Adam
b0b47cda3b BUILD(cmake): Improve LTO handling
Instead of having a fixed setting that affects all build modes, we now
set LTO only for release builds (but then for all targets). This has the
advantage that a dev doesn't have to switch LTO on and off when
switching between Release and Debug builds.
2023-04-20 19:37:37 +02:00
Robert Adam
a4cd707128 BUILD(cmake): Always use DBus on Linux(-like) systems 2023-01-05 15:56:13 +01:00
Robert Adam
d11fd05062 CHANGE(client): Remove bundled Opus version
Since newer versions of libsndfile now link to the system-wide installed
Opus version (on Linux distros), there would be a conflict between
symbols defined in the system-wide installation and the self-built
(bundled) Opus library.
This, as it turned out, can lead for instance to failing assertions due
to pointer identities no longer holding because e.g. a function from the
self-built Opus version ends up calling a sub-function from the
system-wide Opus installation instead. This is also the root cause for
the infamous "Opus crash" or "Audio wizard crash".

In order to avoid these issues, we don't ship a bundled Opus version
anymore and instead make it a build prerequisite to have Opus installed
on your system.

Fixes #5302
2022-12-28 13:04:25 +01:00
Robert Adam
60d0a86b8e MAINT: Downgrade Opus submodule
Since newer Opus versions appear to cause crashes under some
circumstances, we downgrade our Opus submodule to point to the latest
stable release, which is v1.3.1 from 2019.

We will only be able to upgrade again, once the underlying issue causing
the crashes has been identified and fixed.

Fixes #5302
2022-12-26 18:04:34 +01:00
Carlo Castoldi
bd1209153f BUILD(overlay): build overlay on Linux and FreeBSD without client flag 2022-11-29 11:41:20 +01:00
Robert Adam
b81b06001d MAINT: Rename Murmur.ice to MumbleServer.ice 2022-09-10 17:28:34 +02:00
Robert Adam
4d05018c2e CHANGE(client): Drop support for all legacy codecs
Opus has been the go-to codec for years now and there is absolutely no
reason why one would want to use any of the legacy codecs (Speex or
CELT) its stead.

Thus, this commit completely removes the support for these codecs from
the Mumble client.

Incidentally, having different codecs available somehow even caused some
audio artifacts, which should now be resolved as well.

Fixes #4538
2022-09-10 10:29:12 +02:00
Hartmnt
41ce5de4cc DOCS(plugins): Document Mumble API increments
Describe necessary steps to implement a new API version for plugins.
2022-08-01 12:27:09 +02:00
Jan Klass
084f23ac36 DOCS(winbuild): Add troubleshooting for missing MFC dependency
Although installing MFC is mentioned in setup_visual_studio.md,
identifying where the header file is expected from is not obvious.

A C++ environment may already be installed without MFC, where the VS setup docs may not be followed/opened before-hand.
2022-06-04 15:17:56 +02:00
powerjungle
453663028b
DOCS(build_linux): Added dependency install instructions for OpenSUSE Tumbleweed 2022-05-22 22:13:47 +02:00
powerjungle
dde8e655b2
DOCS(build_linux): Make all dependencies collapsed 2022-05-22 14:33:56 +02:00
Robert Adam
d16ad421d4
Merge PR #5603: DOCS(build_linux): Added instructions for Debian 2022-05-09 10:07:23 +02:00
Jaggzh
63fe37ac81 DOCS(build_linux): Added instructions for Debian 2022-05-08 09:43:50 +02:00
Robert Adam
8186d1d310 BUILD: Allow to prefer system GSL-installation over bundled one 2022-03-27 09:49:59 +02:00
Robert Adam
1d45d991aa CHANGE: Use Protobuf for UDP messages
Previously Mumble was using a custom binary format for transmitting data
via UDP (mainly audio). This has worked for a long time but besides
being inconvenient for 3rdParty implementors (they had to manually
re-implement encoding and decoding support for this format) this format
was not very flexible and changes to the data format were very hard.

In order to improve on this situation, this commit introduces changes
that allow to use Protobuf for the UDP messages as well (it's already
used for TCP). With that it should be relatively easy to extend/change
the UDP packet formats in the future and 3rdParty implementors can now
simply use Protobuf to handle decoding/encoding packets for them (much
less work and much less prone to errors).

Since the new Protobuf format is incompatible with the old UDP format,
this commit also includes support for dealing with older clients or
servers that don't recognize the new protocol yet. That way the new
protocol format is only used if both the client and the server are
recent enough to have it implemented (assumed to be the case >=1.5.0).

Note also that the server will make sure that clients using the old and
the new format can seamlessly communicate with one another.

Therefore, on the surface it should not be noticeable to the user which
protocol is currently used.

Note also that the new protocol format only supports Opus as an audio
codec. If one of the legacy codecs is to be used, the legacy packet
format has to be used as well. However, all codecs except for Opus will
be removed from Mumble in the future anyway.

Fixes #4350
2022-03-27 09:49:58 +02:00
Robert Adam
b3dd3d3f79 CHANGE(server): Remove gRPC implementation
The gRPC implementation never left the experimental state and never
reached a properly stable state to the point where we would feel good
about enabling it by default. In addition to that, there has been no
further attempts at finding and fixing the encountered issues in the
implementation (except #3947 but that was discontinued).

As such we had an essentially unmaintained piece of code in our server
implementation that was known to be buggy and that nobody wanted to fix.
In addition to that the implementation itself could not be considered
very clean or elegant and therefore only represented a few smelly
corners in our code base.

For this reason, we decided to remove the gRPC support entirely from
Mumble (for now).

What we hope to gain by that is:
- Prevent people from building unstable server versions and then coming
to us complaining that it crashed/misbehaved
- Removing (essentially) dead code
- Reduce the RPC implementation complexity

That last piece is crucial: By removing gRPC support we reduce the
amount of supported RPC frameworks to only one (ignoring DBus for now).
Our future plans include a refactoring of how RPC is being handled and
implemented and only having to worry about maintaining compatibility
with one RPC system is much easier than having to worry about two (with
(slightly) different APIs).
Once the RPC implementation has been rewritten, more RPC backends may be
reintroduced and in that process we might investigate adding a proper
gRPC implementation to the code (that then hopefully is more stable than
the current one).

Fixes #4567
Fixes #4197
Fixes #3496
Fixes #3429
Fixes #3265
2022-03-16 08:23:38 +01:00
Robert Adam
a239ccf623 BUILD(client): Add option to use system JSON lib
This commit introduces an option that toggles between using a bundled
version of nlohmann_json (default) and looking for a version installed
on the system instead.

Fixes #5584
2022-02-25 18:42:53 +01:00
Robert Adam
c06332fcf8
Merge PR #5533: DOCS: Add missing build dependency 2022-02-06 20:43:57 +01:00
Robert Adam
16c814fd57
Merge PR #5490: DOCS: Add FindPythonInterpreter error to common build errors 2022-02-06 18:52:39 +01:00
Begley Brothers (Development)
16abfffbd6 DOCS: Add missing build dependency
Fixes #4631
2022-02-06 18:29:34 +01:00
wabash1
b503b276b4 DOCS: Add FindPythonInterpreter error to common build errors
Found this extremely helpful and had difficulty finding this error.
https://githubmemory.com/repo/mumble-voip/mumble/issues/5120
2022-01-24 08:23:17 +01:00
Robert Adam
1b8f5db332
Merge PR #5500: DOCS: General intro to Mumble's source code 2022-01-23 20:08:53 +01:00
Robert Adam
f07f48fce9 DOCS: General intro to Mumble's source code 2022-01-23 15:14:03 +01:00
Robert Adam
361e1b02f6
Merge PR #5486: BUILD: Build tests in package builds by default
Encourage OS package maintainers to run tests by packaging=ON implying
tests=ON.

Keep online-tests=OFF by default since it is common practise for
packages to be built in unprivileged environments, e.g. without network.
2022-01-23 14:59:55 +01:00
Klemens Nanni
6a621f0a0c BUILD: Build tests in package builds by default
Encourage OS package maintainers to run tests by `packaging=ON` implying
`tests=ON`.

Keep `online-tests=OFF` by default since it is common practise for
packages to be built in unprivileged environments, e.g. without network.
2022-01-21 23:39:00 +03:00
Klemens Nanni
904bae159d BUILD(client): Enable XInput2 support on OpenBSD by default
The library is readily available in OpenBSD's version of X[0].
Follow suit with Linux in enabling.

Noticed by the warning upon startup:

```
-<W>2022-01-21 02:30:40.548 GlobalShortcutX: No XInput support, falling back to polled input. This wastes a lot of CPU resources, so please enable one of the other methods.
+<W>2022-01-21 02:34:00.159 GlobalShortcutX: Using XI2 2.4
```

0: https://xenocara.org/
2022-01-21 22:06:53 +03:00
Brigzzy
223610b21d DOCS: Updated build instructions to remove duplicated step
There's a duplicated step in the build instructions, which is already covered on line 8. This change removes the unneeded duplicate step.
2022-01-18 13:01:14 -08:00
Felix Singer
7e39ae927d DOCS(build): Clean up leftovers from RELEASE_ID concept
The concept of RELEASE_ID was dropped with PR #5401 in commit 6caa808e6.
Thus, drop its leftovers from the documentation.

Signed-off-by: Felix Singer <felixsinger@posteo.net>
2022-01-18 17:28:32 +01:00
Klemens Nanni
d45318d649 BUILD(client): RNNoise: Support linking against the system library
OS packages (at least on Linux and BSDs) prefer prepackaged libraries to
bundled/statically linked versions where possible.

Introduce `rnnoise` (default `ON`) and make `bundled-rnnoise` default to
it's value;  this retains current behaviour.

This way, `rnnoise=OFF` disables use of RNNoise completely and a simple
`bundled-rnnoise=OFF` requires the system's library.

Tested on OpenBSD 7.0-CURRENT.
2022-01-13 09:57:28 +01:00
Robert Adam
afef15dac4 DOCS: Extend build number docs 2022-01-09 19:54:49 +01:00
Robert Adam
ef045be7fe
Merge PR #5400: BUILD: Remove concept of an RELEASE_ID
Having a separate RELEASE_ID just unnecessarily complicates drafting
releases. Plus, now that we are using different build numbers for every
new build anyway, a separate release ID is really not necessary.
2022-01-02 12:12:46 +01:00
Robert Adam
2a31ed0f34 DOCS: Describe how to find build number 2022-01-01 20:38:40 +01:00
Robert Adam
db57b63241
Merge PR #5396: FEAT(server): Add support for the tracy profiler
Tracy (wolfpld/tracy) is a profiler that is aimed at
having a very low impact on the runtime performance and is thus suitable
to be used in production systems to figure out what is going on and how
the code is performing.

For the time being, this commit instruments only the server code.
Furthermore, the instrumentation is performed in a rather minimalistic
way that should suffice to start profiling audio and control message
processing but is definitely far from being complete. Further
instrumentation will be added on-demand.
2021-12-29 18:52:42 +01:00
Robert Adam
dd56e174f2 FEAT(server): Add support for the tracy profiler
Tracy (https://github.com/wolfpld/tracy) is a profiler that is aimed at
having a very low impact on the runtime performance and is thus suitable
to be used in production systems to figure out what is going on and how
the code is performing.

For the time being, this commit instruments only the server code.
Furthermore, the instrumentation is performed in a rather minimalistic
way that should suffice to start profiling audio and control message
processing but is definitely far from being complete. Further
instrumentation will be added on-demand.
2021-12-29 18:01:28 +01:00
Robert Adam
8d83afb07c BUILD: Enable LTO, if supported
In theory LTO could give us a bit more performance than what we are
currently seeing. Client-side this will probably not be very noticeably
but on the server-side a few drops of extra performance can't hurt.

LTO will be enabled by default in all non-Debug builds. It remains
disabled for Debug builds as this is expected to be the kind of build
that a developer will use when they perform their work and there it is
useful to be able to go through multiple iterations of the program,
without waiting long times on the linker each time.
2021-12-26 19:46:54 +01:00
diftucs
6db667a2a3
DOCS(api): Fix typo 2021-11-26 22:45:24 +00:00
Robert Adam
5c4b49210c DOCS: Add common build errors
Co-authored-by: Davide Beatrici <github@davidebeatrici.dev>
2021-09-23 08:14:38 +02:00