summaryrefslogtreecommitdiff
path: root/src/audio/manager.cpp
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2022-09-29 21:46:15 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2022-09-29 21:46:15 -0400
commitdc127d15fb49c108450e691c44ed930a11bb7e59 (patch)
tree197e6e70138de54694bebb116148cd70b41f78a8 /src/audio/manager.cpp
parenta96d96b3aa883c5ee5892e4ff94e3c539989c66a (diff)
downloadabaddon-portaudio-dc127d15fb49c108450e691c44ed930a11bb7e59.tar.gz
abaddon-portaudio-dc127d15fb49c108450e691c44ed930a11bb7e59.zip
display user list, client side mute
Diffstat (limited to 'src/audio/manager.cpp')
-rw-r--r--src/audio/manager.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/audio/manager.cpp b/src/audio/manager.cpp
index 35a9c76..e025390 100644
--- a/src/audio/manager.cpp
+++ b/src/audio/manager.cpp
@@ -1,5 +1,6 @@
#ifdef WITH_VOICE
- // clang-format off
+// clang-format off
+
#ifdef _WIN32
#include <winsock2.h>
#endif
@@ -138,6 +139,10 @@ void AudioManager::SetOpusBuffer(uint8_t *ptr) {
void AudioManager::FeedMeOpus(uint32_t ssrc, const std::vector<uint8_t> &data) {
if (!m_should_playback) return;
+ {
+ std::lock_guard<std::mutex> _(m_muted_ssrc_mutex);
+ if (m_muted_ssrcs.find(ssrc) != m_muted_ssrcs.end()) return;
+ }
size_t payload_size = 0;
const auto *opus_encoded = StripRTPExtensionHeader(data.data(), static_cast<int>(data.size()), payload_size);
@@ -162,6 +167,15 @@ void AudioManager::SetPlayback(bool playback) {
m_should_playback = playback;
}
+void AudioManager::SetMuteSSRC(uint32_t ssrc, bool mute) {
+ std::lock_guard<std::mutex> _(m_muted_ssrc_mutex);
+ if (mute) {
+ m_muted_ssrcs.insert(ssrc);
+ } else {
+ m_muted_ssrcs.erase(ssrc);
+ }
+}
+
void AudioManager::OnCapturedPCM(const int16_t *pcm, ma_uint32 frames) {
if (m_opus_buffer == nullptr || !m_should_capture) return;