1. Summary
  2. Files
  3. Support
  4. Report Spam
  5. Create account
  6. Log in

[SOLVED] Updated protocol documentation

Ice/DBus, Web-Interfaces, Management tools

[SOLVED] Updated protocol documentation

Postby roberthendrickx » Tue Nov 20, 2012 10:55 pm

Hello,

I'm working on a python implementation of the protocol, and I have already some success for version 1.2.3 (a client that record the audio available on a channel).

I would like to adapt it for the new 1.2.4 functionalities (opus, ...) but the protocol documentation available in the source is still 2 years old.

Any chance it would be updated with the latest features ?
roberthendrickx
 
Posts: 15
Joined: Thu Mar 10, 2011 1:07 pm

Re: Updated protocol documentation

Postby kissaki » Wed Nov 21, 2012 5:39 pm

Yes, there is a chance.

The current Mumble.proto includes
Code: Select all
message CodecVersion {

   optional bool opus = 4 [default = false];


Is that not enough to get you going?
With codec negotiation given you know the type it should not be a problem?
(not too familiar with the protocol specifics)
MumPI: Your Mumble Web Interface in PHP
User avatar
kissaki
Team member
 
Posts: 963
Joined: Sat Jan 09, 2010 12:15 pm

Re: Updated protocol documentation

Postby roberthendrickx » Wed Nov 21, 2012 7:24 pm

Indeed, you're right !
roberthendrickx
 
Posts: 15
Joined: Thu Mar 10, 2011 1:07 pm

Re: Updated protocol documentation

Postby roberthendrickx » Sat Dec 01, 2012 2:45 pm

Hello again,

Is something changed in the audio packet format when using Opus (chapter 5.2 of the protocol documentation) ?

When I try to decode the repeated audio frame within the packet, the lengths given in the first byte (excluding the terminator bit) don't make any sense... looks like it is random...

2 examples (the hex part start with the type/target byte of the audio packet) ...

Code: Select all
80011aa0 647806e3 79c8c957 c0fec82b 4d467a46 346249fe 3a194c52 ef9ae40c dee4177d d96c81dd
802b0cb1 594ac9ec a3b251c6 10850cf9 b1cd7353 6e13cd61 3776c596 c5935e3e c593709e 6ea3709b
709c1533 fdd667fb df75eebd d6000000 000018a3 84000000 00
2012-12-01 14:48:00,839-PyMumble-DEBUG-audio packet received from 1, sequence 26, type:4, target:0, lenght:105
2012-12-01 14:48:00,841-PyMumble-DEBUG-Audio frame : time:1354369680.840000, last:False, size:32, type:4, target:0, pos:3
2012-12-01 14:48:00,841-PyMumble-DEBUG-Audio frame : time:1354369680.841000, last:False, size:89, type:4, target:0, pos:36


8001834f a0647806 e379c8c9 57c0a212 23faef12 9a51276d 2d839a1d d0729bae 105db1d1 aa72206a
1b07ded4 fc2c305d e1ff6c07 44197d64 dd02d1ee 834e2135 7a5b0881 d17b6dc7 6f3b199d 801923f1
e7067e67 e0000000 0067e67e 67e00000 d716fe62 8e100000 0000
2012-12-01 15:12:36,499-PyMumble-DEBUG-audio packet received from 1, sequence 847, type:4, target:0, lenght:106
2012-12-01 15:12:36,500-PyMumble-DEBUG-Audio frame : time:1354371156.500000, last:False, size:32, type:4, target:0, pos:4
2012-12-01 15:12:36,500-PyMumble-DEBUG-Audio frame : time:1354371156.500000, last:True, size:114, type:4, target:0, pos:37


Doing the same test with OPUS disabled give something that gives complete sense !
Code: Select all
000180d2 b1fffe00 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 0000b1ff fe000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00
2012-12-01 15:03:02,726-PyMumble-DEBUG-audio packet received from 1, sequence 210, type:0, target:0, lenght:105
2012-12-01 15:03:02,727-PyMumble-DEBUG-Audio frame : time:1354370582.728000, last:False, size:49, type:0, target:0, pos:4
2012-12-01 15:03:02,729-PyMumble-DEBUG-Audio frame : time:1354370582.729000, last:False, size:49, type:0, target:0, pos:54


Thanks
roberthendrickx
 
Posts: 15
Joined: Thu Mar 10, 2011 1:07 pm

Re: Updated protocol documentation

Postby dd0t » Sat Dec 01, 2012 6:08 pm

Yeah. The packaging for Opus is different because if you ask for 60ms Mumble no longer packs six ten ms CELT frames but can directly create one 60ms Opus frame. That got to big for the old encoding (<=127 bytes per frame) so now we directly encode the size in bytes in a varint.

So when previously it was [header][frame][header][frame]... it now is [header][frame] for Opus type packets (others are unchanged). Here's the relevant snippet for decoding this part of the packet (AudioOutputSpeech.cpp):
Code: Select all
   pds >> size;

   bHasTerminator = size & 0x2000;
   qlFrames << pds.dataBlock(size & 0x1fff);
User avatar
dd0t
Team member
 
Posts: 129
Joined: Wed Sep 23, 2009 4:28 pm

Re: Updated protocol documentation

Postby roberthendrickx » Sun Dec 02, 2012 12:18 am

It's working

thanks
roberthendrickx
 
Posts: 15
Joined: Thu Mar 10, 2011 1:07 pm

Re: Updated protocol documentation

Postby dd0t » Sun Dec 02, 2012 12:49 am

Good. We do take patches to that documentation btw. ;) It's all easily editable LaTex. :lol:
User avatar
dd0t
Team member
 
Posts: 129
Joined: Wed Sep 23, 2009 4:28 pm

Re: Updated protocol documentation

Postby roberthendrickx » Sun Dec 02, 2012 2:36 pm

I'll keep that in mind... never used latex, though... I need to check on that !
roberthendrickx
 
Posts: 15
Joined: Thu Mar 10, 2011 1:07 pm


Return to Scripting

Who is online

Users browsing this forum: No registered users and 0 guests