summaryrefslogtreecommitdiff
path: root/src/audio/manager.cpp
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2022-10-18 01:47:43 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2022-10-18 01:47:43 -0400
commit5a3bce7498aea568cb6eb83d04313f8d777e8c94 (patch)
tree10705b9279e50b952a7213421ac7b1b03704beb9 /src/audio/manager.cpp
parent621beb13444eb3ca16a756bfb8fdc6b4f79723f5 (diff)
downloadabaddon-portaudio-5a3bce7498aea568cb6eb83d04313f8d777e8c94.tar.gz
abaddon-portaudio-5a3bce7498aea568cb6eb83d04313f8d777e8c94.zip
basic voice gate
Diffstat (limited to 'src/audio/manager.cpp')
-rw-r--r--src/audio/manager.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/audio/manager.cpp b/src/audio/manager.cpp
index 5bcc3bb..7416ff7 100644
--- a/src/audio/manager.cpp
+++ b/src/audio/manager.cpp
@@ -176,6 +176,10 @@ void AudioManager::SetPlayback(bool playback) {
m_should_playback = playback;
}
+void AudioManager::SetCaptureGate(double gate) {
+ m_capture_gate = gate * 0.01;
+}
+
void AudioManager::SetMuteSSRC(uint32_t ssrc, bool mute) {
std::lock_guard<std::mutex> _(m_mutex);
if (mute) {
@@ -197,6 +201,8 @@ void AudioManager::OnCapturedPCM(const int16_t *pcm, ma_uint32 frames) {
UpdateCaptureVolume(pcm, frames);
+ if (m_capture_peak_meter / 32768.0 < m_capture_gate) return;
+
int payload_len = opus_encode(m_encoder, pcm, 480, static_cast<unsigned char *>(m_opus_buffer), 1275);
if (payload_len < 0) {
printf("encoding error: %d\n", payload_len);