From d5b97ff104d8f1cbe676665f6d0ff6d93d44018b Mon Sep 17 00:00:00 2001 From: Evgeny Date: Mon, 27 Jul 2026 12:11:50 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20immediate=20compressor=20apply=20+=20dea?= =?UTF-8?q?d=20code=20removal=20+=20qDebug=E2=86=92DEBUG=5F*=20conversion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/chatgui/src/audiocompressor.cpp | 1 - tools/chatgui/src/audiodevicesettingspage.cpp | 26 +++++++++++++++---- tools/chatgui/src/audiodevicesettingspage.h | 3 ++- tools/chatgui/src/mainwindow.cpp | 8 +++--- tools/chatgui/src/settingsdialog.cpp | 5 ++-- tools/chatgui/src/settingsdialog.h | 4 ++- 6 files changed, 33 insertions(+), 14 deletions(-) diff --git a/tools/chatgui/src/audiocompressor.cpp b/tools/chatgui/src/audiocompressor.cpp index 906579f4..f663bdb6 100644 --- a/tools/chatgui/src/audiocompressor.cpp +++ b/tools/chatgui/src/audiocompressor.cpp @@ -100,7 +100,6 @@ void AudioCompressor::processPendingBlock() { m_gainSmoothed = std::min(m_gainSmoothed, m_maxGain); - static int dbgCounter = 0; float gainDb = 20.0f * log10f(m_gainSmoothed); float prevDb = 20.0f * log10f(G_prev > 0.0001f ? G_prev : 0.0001f); if (m_dbgCounter % 25 == 0 || fabsf(gainDb - prevDb) > 3.0f) { diff --git a/tools/chatgui/src/audiodevicesettingspage.cpp b/tools/chatgui/src/audiodevicesettingspage.cpp index 278ffb12..407aed42 100644 --- a/tools/chatgui/src/audiodevicesettingspage.cpp +++ b/tools/chatgui/src/audiodevicesettingspage.cpp @@ -3,6 +3,7 @@ #include "audiorecorder.h" #include "audiocompressor.h" #include "voicemessageencoder.h" +#include "../../lib/debug_config.h" #include "../db/db_manager.h" #include "../transport/gui_bridge.h" #include "../../lib/mem.h" @@ -17,8 +18,8 @@ extern "C" { #include #include -AudioDeviceSettingsPage::AudioDeviceSettingsPage(DbManager* db, QWidget* parent) - : QWidget(parent), m_db(db) +AudioDeviceSettingsPage::AudioDeviceSettingsPage(DbManager* db, AudioRecorder* recorder, QWidget* parent) + : QWidget(parent), m_db(db), m_recorder(recorder) { auto* layout = new QVBoxLayout(this); layout->setContentsMargins(0, 12, 0, 0); @@ -232,9 +233,24 @@ void AudioDeviceSettingsPage::applyAndSave() { m_savedCompressorLookaheadMs = compLookahead; m_savedCompressorRiseRateTenths = compRiseRateTenths; m_savedCompressorTargetLevelDb = compTargetLevel; - qDebug("AudioDeviceSettings: saved output=%d input=%d codec=%d compressor=%d gain=%ddB lookback=%d lookahead=%d rise=%.1fx target=%ddB", - outIdx, inIdx, codecPreset, compEnabled, compMaxGain, compLookback, compLookahead, - (float)compRiseRateTenths / 10.0f, compTargetLevel); + DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "saved output=%d input=%d codec=%d compressor=%d gain=%ddB lookback=%d lookahead=%d rise=%.1fx target=%ddB", + outIdx, inIdx, codecPreset, compEnabled, compMaxGain, compLookback, compLookahead, + (float)compRiseRateTenths / 10.0f, compTargetLevel); + + if (m_recorder) { + m_recorder->setCompressorEnabled(compEnabled != 0); + if (m_recorder->compressor() && compEnabled) { + AudioCompressor::Config compCfg; + compCfg.sampleRate = 48000; + compCfg.channels = 1; + compCfg.maxGainDb = (float)compMaxGain; + compCfg.lookbackMs = compLookback; + compCfg.lookaheadMs = compLookahead; + compCfg.riseRatePer500ms = (float)compRiseRateTenths / 10.0f; + compCfg.targetLevel = powf(10.0f, (float)compTargetLevel / 20.0f); + m_recorder->compressor()->configure(compCfg); + } + } } void AudioDeviceSettingsPage::onTestMicToggled() { diff --git a/tools/chatgui/src/audiodevicesettingspage.h b/tools/chatgui/src/audiodevicesettingspage.h index 296144e0..13f0dfb9 100644 --- a/tools/chatgui/src/audiodevicesettingspage.h +++ b/tools/chatgui/src/audiodevicesettingspage.h @@ -14,7 +14,7 @@ class AudioCompressor; class AudioDeviceSettingsPage : public QWidget { Q_OBJECT public: - explicit AudioDeviceSettingsPage(DbManager* db, QWidget* parent = nullptr); + explicit AudioDeviceSettingsPage(DbManager* db, AudioRecorder* recorder, QWidget* parent = nullptr); ~AudioDeviceSettingsPage() override; void loadFromDb(); void applyAndSave(); @@ -30,6 +30,7 @@ private: void updateCompressorLabels(); DbManager* m_db; + AudioRecorder* m_recorder = nullptr; AudioRecorder* m_testRecorder = nullptr; QComboBox* m_outputCombo; QComboBox* m_inputCombo; diff --git a/tools/chatgui/src/mainwindow.cpp b/tools/chatgui/src/mainwindow.cpp index 2906118e..b4064fc1 100644 --- a/tools/chatgui/src/mainwindow.cpp +++ b/tools/chatgui/src/mainwindow.cpp @@ -222,9 +222,9 @@ void MainWindow::setupSoundFromConfig() { m_recorder->compressor()->configure(compCfg); } } - qDebug("MainWindow: AudioRecorder initialized (captureDevice=%d, opusPreset=%d, compressor=%d)", - m_recorder->captureDeviceIndex(), VoiceEncoder::preset(), - m_recorder->isCompressorEnabled() ? 1 : 0); + DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "AudioRecorder initialized (captureDevice=%d, opusPreset=%d, compressor=%d)", + m_recorder->captureDeviceIndex(), VoiceEncoder::preset(), + m_recorder->isCompressorEnabled() ? 1 : 0); } } @@ -371,7 +371,7 @@ void MainWindow::showJoinDialog() { } void MainWindow::showSettings() { - SettingsDialog dlg(m_cfgPath, m_db, m_node, this); + SettingsDialog dlg(m_cfgPath, m_db, m_node, m_recorder, this); dlg.exec(); reloadChannels(); } diff --git a/tools/chatgui/src/settingsdialog.cpp b/tools/chatgui/src/settingsdialog.cpp index 8b4930ed..86d54c38 100644 --- a/tools/chatgui/src/settingsdialog.cpp +++ b/tools/chatgui/src/settingsdialog.cpp @@ -23,7 +23,8 @@ extern "C" { #include #include -SettingsDialog::SettingsDialog(const QString& configPath, DbManager* db, UtunNode* node, QWidget* parent) +SettingsDialog::SettingsDialog(const QString& configPath, DbManager* db, UtunNode* node, + AudioRecorder* recorder, QWidget* parent) : QDialog(parent) , m_configPath(configPath) { @@ -102,7 +103,7 @@ SettingsDialog::SettingsDialog(const QString& configPath, DbManager* db, UtunNod m_soundPage = new SoundSettingsPage(db, m_pages); m_pages->addWidget(m_soundPage); - m_audioDevicePage = new AudioDeviceSettingsPage(db, m_pages); + m_audioDevicePage = new AudioDeviceSettingsPage(db, recorder, m_pages); m_pages->addWidget(m_audioDevicePage); rightLayout->addWidget(m_pages, 1); diff --git a/tools/chatgui/src/settingsdialog.h b/tools/chatgui/src/settingsdialog.h index 9b0f5f57..6dc75671 100644 --- a/tools/chatgui/src/settingsdialog.h +++ b/tools/chatgui/src/settingsdialog.h @@ -17,11 +17,13 @@ class SoundSettingsPage; class AudioDeviceSettingsPage; class DbManager; class UtunNode; +class AudioRecorder; class SettingsDialog : public QDialog { Q_OBJECT public: - explicit SettingsDialog(const QString& configPath, DbManager* db, UtunNode* node, QWidget* parent = nullptr); + explicit SettingsDialog(const QString& configPath, DbManager* db, UtunNode* node, + AudioRecorder* recorder, QWidget* parent = nullptr); private slots: void onCategoryChanged(int row);