This is a read-only archive of the Mumble forums.

This website archives and makes accessible historical state. It receives no updates or corrections. It is provided only to keep the information accessible as-is, under their old address.

For up-to-date information please refer to the Mumble website and its linked documentation and other resources. For support please refer to one of our other community/support channels.

Jump to content

Mumble error detection and correction


pavelhoral
 Share

Recommended Posts

Hi,

do Mumble implement some error correction or detection? Or is such functionality implemented within Speex and CELT codecs?

Is there (probably on wiki) available some overview of Murmur/Mumble architecture and its protocol?


Just curious as people are talking about voice crackling (and my bachelor thesis was about Reed-Solomon ECC practical application :)).


Thanks

Pavel

Edited by pavelhoral
Link to comment
Share on other sites

  • Administrators

If mumble crashes it asks you to submit a crashdump,

so yes, there is error detection (or "crash detection").


There's no error correction. That would solve all issues?!

Maybe you want to elaborate?


The protocol is documented (kinda) in the repository in the doc folder.

Also, code comments I think.


Architecture Docs? I don't think so…

Link to comment
Share on other sites

  • Administrators

The underlying protocol for voice packets is UDP for less overhead and thus faster parsing/transmission.

TCP is used for the control channel, for "management".

As those underlying protocols already do error detection, or not, there's no use in doing it again in the own protocol again.

What do you have in mind?

Link to comment
Share on other sites

Can Mumble detect when an UDP packet is lost? Probably yes (as it is counting lost packets) - so that is the error detection. The question should be asked more like: "what Mumble does when the voice packet is lost".

I was just curious. I know that this is (or could be) very complex topic. I will read the documentation (and maybe look into source codes).

Link to comment
Share on other sites

  • Administrators

I'm trying to post an answer to this since yesterday evening, let's see of our forums like to take my post today.


@Kissaki: You got him wrong. He was talking about error correction capabilities in our protocol/codecs.


@pavelhoral: Mumble itself does not employ any error correction capabilities on its own and in terms of error detection for voice packets we solely rely on the facilities UDP provides (the checksum). If a packet is lost/corrupted it is up to our codecs packet loss correction to conceal this. If you want to learn about the algorithms used by the Speex/CELT PLC I'd recommend you to visit the speex/celt homepage/mailinglist/irc. The folks there are very competent and know the ins and outs of their codecs.

Link to comment
Share on other sites

  • Administrators

@pavelhoral: Mumble itself does not employ any error correction capabilities on its own and in terms of error detection for voice packets we solely rely on the facilities UDP provides (the checksum).

 

No, we don't ;) Authenticated encryption of voice packets gives us authenticity information, which means any corrupt package fails authenticity and is discarded.

Link to comment
Share on other sites

  • Administrators

:D Ah, right. I forgot about the OCB-AES encryption. Mea culpa. But it boils down to: We don't correct errors, we detect and discard corrupted packets and let the codec try to hide it.

Link to comment
Share on other sites

 Share

×
×
  • Create New...