handle multiple speakers properly

This commit is contained in:
ouwou
2022-09-02 00:38:59 -04:00
parent 1f4070e52f
commit 9c8d9e54fe
3 changed files with 34 additions and 33 deletions

View File

@@ -298,12 +298,16 @@ void DiscordVoiceClient::SelectProtocol(std::string_view ip, uint16_t port) {
void DiscordVoiceClient::OnUDPData(std::vector<uint8_t> data) {
uint8_t *payload = data.data() + 12;
uint32_t ssrc = (data[8] << 24) |
(data[9] << 16) |
(data[10] << 8) |
(data[11] << 0);
static std::array<uint8_t, 24> nonce = {};
std::memcpy(nonce.data(), data.data(), 12);
if (crypto_secretbox_open_easy(payload, payload, data.size() - 12, nonce.data(), m_secret_key.data())) {
puts("decrypt fail");
} else {
Abaddon::Get().GetAudio().FeedMeOpus({ payload, payload + data.size() - 12 - crypto_box_MACBYTES });
Abaddon::Get().GetAudio().FeedMeOpus(ssrc, { payload, payload + data.size() - 12 - crypto_box_MACBYTES });
}
}