You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

69 lines
2.1 KiB

/* Настройки capture/playback, Opus, компрессора, AEC и рации; тест микрофона и динамика.
* loadFromDb заполняет форму, applyAndSave применяет выбранные значения. */
#pragma once
#include <QWidget>
#include <QComboBox>
#include <QProgressBar>
#include <QPushButton>
#include <QCheckBox>
#include <QSlider>
#include <QLabel>
#include <QTimer>
class DbManager;
class AudioRecorder;
class AudioDeviceSettingsPage : public QWidget {
Q_OBJECT
public:
explicit AudioDeviceSettingsPage(DbManager* db, AudioRecorder* recorder, QWidget* parent = nullptr);
~AudioDeviceSettingsPage() override;
void setConfigPath(const QString& path) { m_configPath = path; }
void loadFromDb();
void applyAndSave();
private slots:
void onTestMicToggled();
void onTestSpeaker();
void onLevelTimer();
private:
void stopMicTest();
void buildCompressorUI(class QVBoxLayout* layout);
void updateCompressorLabels();
DbManager* m_db;
AudioRecorder* m_recorder = nullptr;
AudioRecorder* m_testRecorder = nullptr;
QString m_configPath;
QComboBox* m_outputCombo;
QComboBox* m_inputCombo;
QComboBox* m_codecPresetCombo;
QProgressBar* m_micLevelBar;
QPushButton* m_testMicBtn;
QPushButton* m_testSpeakerBtn;
QTimer* m_levelTimer;
bool m_micTestActive = false;
QString m_savedOutputId;
QString m_savedInputId;
int m_savedCodecPreset = 1;
QCheckBox* m_compressorEnabledCb;
QSlider* m_compressorMaxGainSlider;
QSlider* m_compressorRiseRateSlider;
QLabel* m_compressorMaxGainLabel;
QLabel* m_compressorRiseRateLabel;
int m_savedCompressorEnabled = 0;
int m_savedCompressorMaxGainDb = 25;
int m_savedCompressorRiseRate = 10;
class QDoubleSpinBox* m_jitterReserveSpin;
QCheckBox* m_aecEnabledCb;
int m_savedAecEnabled = 1;
QComboBox* m_radioOpusModeCombo;
QComboBox* m_radioOpusBitrateCombo;
QCheckBox* m_radioCaptureStereoCb;
int m_savedRadioOpusMode = 0;
int m_savedRadioOpusBitrate = 32;
int m_savedRadioCaptureStereo = 0;
};