roberthendrickx Posted November 20, 2012 Share Posted November 20, 2012 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 ? Quote Link to comment Share on other sites More sharing options...
Administrators kissaki Posted November 21, 2012 Administrators Share Posted November 21, 2012 Yes, there is a chance.The current Mumble.proto includesmessage 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) Quote Link to comment Share on other sites More sharing options...
roberthendrickx Posted November 21, 2012 Author Share Posted November 21, 2012 Indeed, you're right ! Quote Link to comment Share on other sites More sharing options...
roberthendrickx Posted December 1, 2012 Author Share Posted December 1, 2012 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) ... 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 ! 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 Quote Link to comment Share on other sites More sharing options...
Administrators hacst Posted December 1, 2012 Administrators Share Posted December 1, 2012 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): pds >> size; bHasTerminator = size & 0x2000; qlFrames << pds.dataBlock(size & 0x1fff); Quote Link to comment Share on other sites More sharing options...
roberthendrickx Posted December 2, 2012 Author Share Posted December 2, 2012 It's workingthanks Quote Link to comment Share on other sites More sharing options...
Administrators hacst Posted December 2, 2012 Administrators Share Posted December 2, 2012 Good. We do take patches to that documentation btw. ;) It's all easily editable LaTex. :lol: Quote Link to comment Share on other sites More sharing options...
roberthendrickx Posted December 2, 2012 Author Share Posted December 2, 2012 I'll keep that in mind... never used latex, though... I need to check on that ! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.