Add initial support for Opus
[umurmur.git] / src / messagehandler.c
index 2dea8588d6cca8defbf5d0c40e15eaaef0d5a7fc..504c66b0e40b0e258ce8ff4b079f533c403ac2eb 100644 (file)
@@ -47,7 +47,7 @@
 
 extern channel_t *defaultChan;
 extern int iCodecAlpha, iCodecBeta;
-extern bool_t bPreferAlpha;
+extern bool_t bPreferAlpha, bOpus;
 
 static void sendServerReject(client_t *client, const char *reason, MumbleProto__Reject__RejectType type)
 {
@@ -227,8 +227,10 @@ void Mh_handle_message(client_t *client, message_t *msg)
                        Client_codec_add(client, (int32_t)0x8000000a);
                        client->codec_count = 1;
                }
+               if (msg->payload.authenticate->opus)
+                       client->bOpus = true;
                
-               recheckCodecVersions();
+               recheckCodecVersions(client);
                
                sendmsg = Msg_create(CodecVersion);
                sendmsg->payload.codecVersion->alpha = iCodecAlpha;
@@ -815,6 +817,8 @@ void Mh_handle_message(client_t *client, message_t *msg)
                        while (Client_codec_iterate(target, &codec_itr) != NULL)
                                sendmsg->payload.userStats->celt_versions[i++] = codec_itr->codec;
 
+                       sendmsg->payload.userStats->opus = target->bOpus;
+
                        /* Address */
                        sendmsg->payload.userStats->has_address = true;
                        sendmsg->payload.userStats->address.data = malloc(sizeof(uint8_t) * 16);