From 313f7f4c88500b4ae7c4dd765e18392bea0a2ba2 Mon Sep 17 00:00:00 2001 From: zeldakatze Date: Thu, 7 Aug 2025 14:10:00 +0200 Subject: make portaudio actually work --- src/audio/portaudioManager.cpp | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) (limited to 'src/audio/portaudioManager.cpp') diff --git a/src/audio/portaudioManager.cpp b/src/audio/portaudioManager.cpp index fda0988..bcd1254 100644 --- a/src/audio/portaudioManager.cpp +++ b/src/audio/portaudioManager.cpp @@ -1,3 +1,4 @@ +#ifdef WITH_VOICE #ifdef USE_PORTAUDIO #include "manager.hpp" @@ -16,14 +17,15 @@ int playCallback(const void *pInput, void *pOutput, void *userData ) { AudioManager *mgr = reinterpret_cast(userData); if (mgr == nullptr) {printf("NULL\n");return paContinue;}; - printf("PlayCallback(): %d\n", frameCount); std::lock_guard _(mgr->m_mutex); - auto *pOutputF32 = static_cast(pOutput); - - for(int i = 0; i(pOutput); + /* clear the output buffer */ + for(int i = 0; im_sources) { double volume = 1.0; if (const auto vol_it = mgr->m_volume_ssrc.find(ssrc); vol_it != mgr->m_volume_ssrc.end()) { @@ -31,9 +33,9 @@ int playCallback(const void *pInput, void *pOutput, } auto &buf = pair.first; const size_t n = std::min(static_cast(buf.size()), static_cast(frameCount * 2ULL)); - printf("Size: %d Buf%d frameCount %d\n", n, buf.size(), frameCount); for (size_t i = 0; i < n; i++) { - pOutputF32[i] += volume * buf[i] / 32768.F; + pOutputF32[i] += (int16_t) (volume * buf[i]); + //pOutputF32[i] += volume * buf[i] / 32768.F; } buf.erase(buf.begin(), buf.begin() + n); } @@ -46,9 +48,9 @@ int recordCallback(const void *pInput, void *pOutput, const PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags statusFlags, void *userData ) { - printf("recordCallback() %d\n", frameCount); auto *mgr = reinterpret_cast(userData); if (mgr == nullptr) return paContinue; + mgr->OnCapturedPCM(static_cast(pInput), frameCount); /* @@ -96,13 +98,13 @@ AudioManager::AudioManager(const Glib::ustring &backends_string) Enumerate(); /* create the configurations for capture and playback */ - m_playback_config.sampleFormat = paFloat32; + m_playback_config.sampleFormat = paInt16; m_playback_config.channelCount = 2; m_playback_config.suggestedLatency = Pa_GetDeviceInfo( m_capture_config.device )->defaultLowInputLatency; m_playback_config.hostApiSpecificStreamInfo = NULL; m_playback_config.device = Pa_GetDefaultOutputDevice(); - m_capture_config.sampleFormat = paFloat32; + m_capture_config.sampleFormat = paInt16; m_capture_config.channelCount = 2; m_capture_config.suggestedLatency = Pa_GetDeviceInfo( m_capture_config.device )->defaultLowInputLatency; m_capture_config.hostApiSpecificStreamInfo = NULL; @@ -175,7 +177,7 @@ void AudioManager::SetOpusBuffer(uint8_t *ptr) { } void AudioManager::FeedMeOpus(uint32_t ssrc, const std::vector &data) { - if (!m_should_playback || Pa_IsStreamActive(&pa_playback_device) != 1) return; + if (!m_should_playback || Pa_IsStreamActive(pa_playback_device) != 1) return; std::lock_guard _(m_mutex); if (m_muted_ssrcs.find(ssrc) != m_muted_ssrcs.end()) return; @@ -596,3 +598,4 @@ AudioManager::type_signal_opus_packet AudioManager::signal_opus_packet() { } #endif /* USE_PORTAUDIO */ +#endif /* WITH_VOICE */ -- cgit v1.2.3