summaryrefslogtreecommitdiff
path: root/src/audio
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2023-07-18 02:02:39 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2023-07-18 02:02:39 -0400
commitbe2ab2ef3122dd78cbbce835d056ca59f5042cd4 (patch)
tree10c8d02bcac437ff37b1fc6b7e812c1af165c76f /src/audio
parent7bc6116e213ae128fc403d8f28862513f00a2276 (diff)
downloadabaddon-portaudio-be2ab2ef3122dd78cbbce835d056ca59f5042cd4.tar.gz
abaddon-portaudio-be2ab2ef3122dd78cbbce835d056ca59f5042cd4.zip
support mindeps build without rnnoise
Diffstat (limited to 'src/audio')
-rw-r--r--src/audio/manager.cpp14
-rw-r--r--src/audio/manager.hpp8
2 files changed, 22 insertions, 0 deletions
diff --git a/src/audio/manager.cpp b/src/audio/manager.cpp
index 84e1fcf..75d8f95 100644
--- a/src/audio/manager.cpp
+++ b/src/audio/manager.cpp
@@ -82,7 +82,12 @@ AudioManager::AudioManager() {
spdlog::get("audio")->info("Audio backend: {}", ma_get_backend_name(m_context.backend));
Enumerate();
+
+#ifdef WITH_RNNOISE
SetVADMethod(VADMethod::RNNoise);
+#else
+ SetVADMethod(VADMethod::Gate);
+#endif
m_playback_config = ma_device_config_init(ma_device_type_playback);
m_playback_config.playback.format = ma_format_f32;
@@ -144,7 +149,10 @@ AudioManager::~AudioManager() {
ma_device_uninit(&m_capture_device);
ma_context_uninit(&m_context);
RemoveAllSSRCs();
+
+#ifdef WITH_RNNOISE
RNNoiseUninitialize();
+#endif
}
void AudioManager::AddSSRC(uint32_t ssrc) {
@@ -425,9 +433,11 @@ void AudioManager::OnCapturedPCM(const int16_t *pcm, ma_uint32 frames) {
case VADMethod::Gate:
if (!CheckVADVoiceGate()) return;
break;
+#ifdef WITH_RNNOISE
case VADMethod::RNNoise:
if (!CheckVADRNNoise(pcm)) return;
break;
+#endif
}
m_enc_mutex.lock();
@@ -475,6 +485,7 @@ bool AudioManager::CheckVADVoiceGate() {
return m_capture_peak_meter / 32768.0 > m_capture_gate;
}
+#ifdef WITH_RNNOISE
bool AudioManager::CheckVADRNNoise(const int16_t *pcm) {
static float denoised[480];
static float rnnoise_input[480];
@@ -503,6 +514,7 @@ void AudioManager::RNNoiseUninitialize() {
m_rnnoise = nullptr;
}
}
+#endif
bool AudioManager::OK() const {
return m_ok;
@@ -531,11 +543,13 @@ uint32_t AudioManager::GetRTPTimestamp() const noexcept {
void AudioManager::SetVADMethod(VADMethod method) {
m_vad_method = method;
+#ifdef WITH_RNNOISE
if (method == VADMethod::RNNoise) {
RNNoiseInitialize();
} else {
RNNoiseUninitialize();
}
+#endif
}
AudioManager::type_signal_opus_packet AudioManager::signal_opus_packet() {
diff --git a/src/audio/manager.hpp b/src/audio/manager.hpp
index c3867df..ec62fed 100644
--- a/src/audio/manager.hpp
+++ b/src/audio/manager.hpp
@@ -14,7 +14,10 @@
#include <miniaudio.h>
#include <opus.h>
#include <sigc++/sigc++.h>
+
+#ifdef WITH_RNNOISE
#include <rnnoise.h>
+#endif
#include "devices.hpp"
// clang-format on
@@ -84,10 +87,13 @@ private:
bool DecayVolumeMeters();
bool CheckVADVoiceGate();
+
+#ifdef WITH_RNNOISE
bool CheckVADRNNoise(const int16_t *pcm);
void RNNoiseInitialize();
void RNNoiseUninitialize();
+#endif
friend void data_callback(ma_device *, void *, const void *, ma_uint32);
friend void capture_data_callback(ma_device *, void *, const void *, ma_uint32);
@@ -132,7 +138,9 @@ private:
AudioDevices m_devices;
VADMethod m_vad_method;
+#ifdef WITH_RNNOISE
DenoiseState *m_rnnoise;
+#endif
std::atomic<uint32_t> m_rtp_timestamp = 0;
public: