mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-03-05 15:16:13 -05:00
UI: Add audio monitoring to settings/adv audio props.
Adds audio monitoring selection to advanced audio properties, and adds the ability to select the device in advanced settings.
This commit is contained in:
@@ -387,6 +387,9 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
|
||||
HookWidget(ui->colorRange, COMBO_CHANGED, ADV_CHANGED);
|
||||
HookWidget(ui->disableOSXVSync, CHECK_CHANGED, ADV_CHANGED);
|
||||
HookWidget(ui->resetOSXVSync, CHECK_CHANGED, ADV_CHANGED);
|
||||
#if defined(_WIN32) || defined(__APPLE__)
|
||||
HookWidget(ui->monitoringDevice, COMBO_CHANGED, ADV_CHANGED);
|
||||
#endif
|
||||
HookWidget(ui->filenameFormatting, EDIT_CHANGED, ADV_CHANGED);
|
||||
HookWidget(ui->overwriteIfExists, CHECK_CHANGED, ADV_CHANGED);
|
||||
HookWidget(ui->simpleRBPrefix, EDIT_CHANGED, ADV_CHANGED);
|
||||
@@ -400,6 +403,15 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
|
||||
HookWidget(ui->processPriority, COMBO_CHANGED, ADV_CHANGED);
|
||||
HookWidget(ui->bindToIP, COMBO_CHANGED, ADV_CHANGED);
|
||||
|
||||
#if !defined(_WIN32) && !defined(__APPLE__)
|
||||
delete ui->monitoringDevice;
|
||||
delete ui->monitoringDeviceLabel;
|
||||
delete ui->advAudioGroupBox;
|
||||
ui->monitoringDevice = nullptr;
|
||||
ui->monitoringDeviceLabel = nullptr;
|
||||
ui->advAudioGroupBox = nullptr;
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
uint32_t winVer = GetWindowsVersion();
|
||||
if (winVer > 0 && winVer < 0x602) {
|
||||
@@ -531,6 +543,9 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
|
||||
|
||||
FillSimpleRecordingValues();
|
||||
FillSimpleStreamingValues();
|
||||
#if defined(_WIN32) || defined(__APPLE__)
|
||||
FillAudioMonitoringDevices();
|
||||
#endif
|
||||
|
||||
connect(ui->simpleOutRecQuality, SIGNAL(currentIndexChanged(int)),
|
||||
this, SLOT(SimpleRecordingQualityChanged()));
|
||||
@@ -1918,6 +1933,12 @@ void OBSBasicSettings::LoadAdvancedSettings()
|
||||
"Video", "ColorSpace");
|
||||
const char *videoColorRange = config_get_string(main->Config(),
|
||||
"Video", "ColorRange");
|
||||
#if defined(_WIN32) || defined(__APPLE__)
|
||||
const char *monDevName = config_get_string(main->Config(), "Audio",
|
||||
"MonitoringDeviceName");
|
||||
const char *monDevId = config_get_string(main->Config(), "Audio",
|
||||
"MonitoringDeviceId");
|
||||
#endif
|
||||
bool enableDelay = config_get_bool(main->Config(), "Output",
|
||||
"DelayEnable");
|
||||
int delaySec = config_get_int(main->Config(), "Output",
|
||||
@@ -1940,11 +1961,31 @@ void OBSBasicSettings::LoadAdvancedSettings()
|
||||
"RecRBPrefix");
|
||||
const char *rbSuffix = config_get_string(main->Config(), "SimpleOutput",
|
||||
"RecRBSuffix");
|
||||
int idx;
|
||||
|
||||
loading = true;
|
||||
|
||||
LoadRendererList();
|
||||
|
||||
#if defined(_WIN32) || defined(__APPLE__)
|
||||
QComboBox *cb = ui->monitoringDevice;
|
||||
idx = cb->findData(monDevId);
|
||||
if (idx == -1) {
|
||||
cb->insertItem(0, monDevName, monDevId);
|
||||
|
||||
QStandardItemModel *model =
|
||||
dynamic_cast<QStandardItemModel*>(cb->model());
|
||||
if (!model)
|
||||
return;
|
||||
|
||||
QStandardItem *item = model->item(0);
|
||||
item->setFlags(Qt::NoItemFlags);
|
||||
|
||||
idx = 0;
|
||||
}
|
||||
cb->setCurrentIndex(idx);
|
||||
#endif
|
||||
|
||||
ui->filenameFormatting->setText(filename);
|
||||
ui->overwriteIfExists->setChecked(overwriteIfExists);
|
||||
ui->simpleRBPrefix->setText(rbPrefix);
|
||||
@@ -1979,7 +2020,7 @@ void OBSBasicSettings::LoadAdvancedSettings()
|
||||
#elif _WIN32
|
||||
const char *processPriority = config_get_string(App()->GlobalConfig(),
|
||||
"General", "ProcessPriority");
|
||||
int idx = ui->processPriority->findData(processPriority);
|
||||
idx = ui->processPriority->findData(processPriority);
|
||||
if (idx == -1)
|
||||
idx = ui->processPriority->findData("Normal");
|
||||
ui->processPriority->setCurrentIndex(idx);
|
||||
@@ -2473,6 +2514,10 @@ void OBSBasicSettings::SaveAdvancedSettings()
|
||||
SaveCombo(ui->colorFormat, "Video", "ColorFormat");
|
||||
SaveCombo(ui->colorSpace, "Video", "ColorSpace");
|
||||
SaveComboData(ui->colorRange, "Video", "ColorRange");
|
||||
#if defined(_WIN32) || defined(__APPLE__)
|
||||
SaveCombo(ui->monitoringDevice, "Audio", "MonitoringDeviceName");
|
||||
SaveComboData(ui->monitoringDevice, "Audio", "MonitoringDeviceId");
|
||||
#endif
|
||||
SaveEdit(ui->filenameFormatting, "Output", "FilenameFormatting");
|
||||
SaveEdit(ui->simpleRBPrefix, "SimpleOutput", "RecRBPrefix");
|
||||
SaveEdit(ui->simpleRBSuffix, "SimpleOutput", "RecRBSuffix");
|
||||
@@ -2484,6 +2529,13 @@ void OBSBasicSettings::SaveAdvancedSettings()
|
||||
SaveSpinBox(ui->reconnectRetryDelay, "Output", "RetryDelay");
|
||||
SaveSpinBox(ui->reconnectMaxRetries, "Output", "MaxRetries");
|
||||
SaveComboData(ui->bindToIP, "Output", "BindIP");
|
||||
|
||||
#if defined(_WIN32) || defined(__APPLE__)
|
||||
obs_set_audio_monitoring_device(
|
||||
QT_TO_UTF8(ui->monitoringDevice->currentText()),
|
||||
QT_TO_UTF8(ui->monitoringDevice->currentData()
|
||||
.toString()));
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline const char *OutputModeFromIdx(int idx)
|
||||
@@ -3429,6 +3481,23 @@ void OBSBasicSettings::FillSimpleStreamingValues()
|
||||
#undef ENCODER_STR
|
||||
}
|
||||
|
||||
void OBSBasicSettings::FillAudioMonitoringDevices()
|
||||
{
|
||||
QComboBox *cb = ui->monitoringDevice;
|
||||
|
||||
auto enum_devices = [] (void *param, const char *name, const char *id)
|
||||
{
|
||||
QComboBox *cb = (QComboBox*)param;
|
||||
cb->addItem(name, id);
|
||||
return true;
|
||||
};
|
||||
|
||||
cb->addItem(QTStr("Basic.Settings.Advanced.Audio.MonitoringDevice"
|
||||
".Default"), "default");
|
||||
|
||||
obs_enum_audio_monitoring_devices(enum_devices, cb);
|
||||
}
|
||||
|
||||
void OBSBasicSettings::SimpleRecordingQualityChanged()
|
||||
{
|
||||
QString qual = ui->simpleOutRecQuality->currentData().toString();
|
||||
|
||||
Reference in New Issue
Block a user