UI: Enable audio monitoring on linux if pulse available

Closes jp9000/obs-studio#940
master
Shaolin 2017-09-12 03:28:29 -07:00 committed by jp9000
parent b6042d91ea
commit 1bae6f3c18
3 changed files with 17 additions and 21 deletions

View File

@ -32,7 +32,7 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *layout, obs_source_t *source_)
volume = new QSpinBox(); volume = new QSpinBox();
forceMono = new QCheckBox(); forceMono = new QCheckBox();
panning = new QSlider(Qt::Horizontal); panning = new QSlider(Qt::Horizontal);
#if defined(_WIN32) || defined(__APPLE__) #if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO
monitoringType = new QComboBox(); monitoringType = new QComboBox();
#endif #endif
syncOffset = new QSpinBox(); syncOffset = new QSpinBox();
@ -93,7 +93,7 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *layout, obs_source_t *source_)
syncOffset->setValue(int(cur_sync / NSEC_PER_MSEC)); syncOffset->setValue(int(cur_sync / NSEC_PER_MSEC));
int idx; int idx;
#if defined(_WIN32) || defined(__APPLE__) #if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO
monitoringType->addItem(QTStr("Basic.AdvAudio.Monitoring.None"), monitoringType->addItem(QTStr("Basic.AdvAudio.Monitoring.None"),
(int)OBS_MONITORING_TYPE_NONE); (int)OBS_MONITORING_TYPE_NONE);
monitoringType->addItem(QTStr("Basic.AdvAudio.Monitoring.MonitorOnly"), monitoringType->addItem(QTStr("Basic.AdvAudio.Monitoring.MonitorOnly"),
@ -138,7 +138,7 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *layout, obs_source_t *source_)
this, SLOT(panningChanged(int))); this, SLOT(panningChanged(int)));
QWidget::connect(syncOffset, SIGNAL(valueChanged(int)), QWidget::connect(syncOffset, SIGNAL(valueChanged(int)),
this, SLOT(syncOffsetChanged(int))); this, SLOT(syncOffsetChanged(int)));
#if defined(_WIN32) || defined(__APPLE__) #if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO
QWidget::connect(monitoringType, SIGNAL(currentIndexChanged(int)), QWidget::connect(monitoringType, SIGNAL(currentIndexChanged(int)),
this, SLOT(monitoringTypeChanged(int))); this, SLOT(monitoringTypeChanged(int)));
#endif #endif
@ -163,7 +163,7 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *layout, obs_source_t *source_)
layout->addWidget(forceMonoContainer, lastRow, idx++); layout->addWidget(forceMonoContainer, lastRow, idx++);
layout->addWidget(panningContainer, lastRow, idx++); layout->addWidget(panningContainer, lastRow, idx++);
layout->addWidget(syncOffset, lastRow, idx++); layout->addWidget(syncOffset, lastRow, idx++);
#if defined(_WIN32) || defined(__APPLE__) #if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO
layout->addWidget(monitoringType, lastRow, idx++); layout->addWidget(monitoringType, lastRow, idx++);
#endif #endif
layout->addWidget(mixerContainer, lastRow, idx++); layout->addWidget(mixerContainer, lastRow, idx++);
@ -178,7 +178,7 @@ OBSAdvAudioCtrl::~OBSAdvAudioCtrl()
forceMonoContainer->deleteLater(); forceMonoContainer->deleteLater();
panningContainer->deleteLater(); panningContainer->deleteLater();
syncOffset->deleteLater(); syncOffset->deleteLater();
#if defined(_WIN32) || defined(__APPLE__) #if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO
monitoringType->deleteLater(); monitoringType->deleteLater();
#endif #endif
mixerContainer->deleteLater(); mixerContainer->deleteLater();

View File

@ -42,7 +42,7 @@ OBSBasicAdvAudio::OBSBasicAdvAudio(QWidget *parent)
label = new QLabel(QTStr("Basic.AdvAudio.SyncOffset")); label = new QLabel(QTStr("Basic.AdvAudio.SyncOffset"));
label->setAlignment(Qt::AlignHCenter); label->setAlignment(Qt::AlignHCenter);
mainLayout->addWidget(label, 0, idx++); mainLayout->addWidget(label, 0, idx++);
#if defined(_WIN32) || defined(__APPLE__) #if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO
label = new QLabel(QTStr("Basic.AdvAudio.Monitoring")); label = new QLabel(QTStr("Basic.AdvAudio.Monitoring"));
label->setAlignment(Qt::AlignHCenter); label->setAlignment(Qt::AlignHCenter);
mainLayout->addWidget(label, 0, idx++); mainLayout->addWidget(label, 0, idx++);

View File

@ -410,7 +410,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
HookWidget(ui->colorRange, COMBO_CHANGED, ADV_CHANGED); HookWidget(ui->colorRange, COMBO_CHANGED, ADV_CHANGED);
HookWidget(ui->disableOSXVSync, CHECK_CHANGED, ADV_CHANGED); HookWidget(ui->disableOSXVSync, CHECK_CHANGED, ADV_CHANGED);
HookWidget(ui->resetOSXVSync, CHECK_CHANGED, ADV_CHANGED); HookWidget(ui->resetOSXVSync, CHECK_CHANGED, ADV_CHANGED);
#if defined(_WIN32) || defined(__APPLE__) #if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO
HookWidget(ui->monitoringDevice, COMBO_CHANGED, ADV_CHANGED); HookWidget(ui->monitoringDevice, COMBO_CHANGED, ADV_CHANGED);
#endif #endif
#ifdef _WIN32 #ifdef _WIN32
@ -431,15 +431,11 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
HookWidget(ui->enableNewSocketLoop, CHECK_CHANGED, ADV_CHANGED); HookWidget(ui->enableNewSocketLoop, CHECK_CHANGED, ADV_CHANGED);
HookWidget(ui->enableLowLatencyMode, CHECK_CHANGED, ADV_CHANGED); HookWidget(ui->enableLowLatencyMode, CHECK_CHANGED, ADV_CHANGED);
#if !defined(_WIN32) && !defined(__APPLE__) #if !defined(_WIN32) && !defined(__APPLE__) && !HAVE_PULSEAUDIO
delete ui->monitoringDevice;
delete ui->monitoringDeviceLabel;
delete ui->advAudioGroupBox;
delete ui->enableAutoUpdates; delete ui->enableAutoUpdates;
ui->monitoringDevice = nullptr; delete ui->advAudioGroupBox;
ui->monitoringDeviceLabel = nullptr;
ui->advAudioGroupBox = nullptr;
ui->enableAutoUpdates = nullptr; ui->enableAutoUpdates = nullptr;
ui->advAudioGroupBox = nullptr;
#endif #endif
#ifdef _WIN32 #ifdef _WIN32
@ -485,7 +481,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
delete ui->advancedGeneralGroupBox; delete ui->advancedGeneralGroupBox;
delete ui->enableNewSocketLoop; delete ui->enableNewSocketLoop;
delete ui->enableLowLatencyMode; delete ui->enableLowLatencyMode;
#ifdef __APPLE__ #if defined(__APPLE__) || HAVE_PULSEAUDIO
delete ui->disableAudioDucking; delete ui->disableAudioDucking;
#endif #endif
ui->rendererLabel = nullptr; ui->rendererLabel = nullptr;
@ -497,7 +493,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
ui->advancedGeneralGroupBox = nullptr; ui->advancedGeneralGroupBox = nullptr;
ui->enableNewSocketLoop = nullptr; ui->enableNewSocketLoop = nullptr;
ui->enableLowLatencyMode = nullptr; ui->enableLowLatencyMode = nullptr;
#ifdef __APPLE__ #if defined(__APPLE__) || HAVE_PULSEAUDIO
ui->disableAudioDucking = nullptr; ui->disableAudioDucking = nullptr;
#endif #endif
#endif #endif
@ -584,7 +580,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
FillSimpleRecordingValues(); FillSimpleRecordingValues();
FillSimpleStreamingValues(); FillSimpleStreamingValues();
#if defined(_WIN32) || defined(__APPLE__) #if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO
FillAudioMonitoringDevices(); FillAudioMonitoringDevices();
#endif #endif
@ -2026,7 +2022,7 @@ void OBSBasicSettings::LoadAdvancedSettings()
"Video", "ColorSpace"); "Video", "ColorSpace");
const char *videoColorRange = config_get_string(main->Config(), const char *videoColorRange = config_get_string(main->Config(),
"Video", "ColorRange"); "Video", "ColorRange");
#if defined(_WIN32) || defined(__APPLE__) #if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO
const char *monDevName = config_get_string(main->Config(), "Audio", const char *monDevName = config_get_string(main->Config(), "Audio",
"MonitoringDeviceName"); "MonitoringDeviceName");
const char *monDevId = config_get_string(main->Config(), "Audio", const char *monDevId = config_get_string(main->Config(), "Audio",
@ -2058,7 +2054,7 @@ void OBSBasicSettings::LoadAdvancedSettings()
LoadRendererList(); LoadRendererList();
#if defined(_WIN32) || defined(__APPLE__) #if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO
if (!SetComboByValue(ui->monitoringDevice, monDevId)) if (!SetComboByValue(ui->monitoringDevice, monDevId))
SetInvalidValue(ui->monitoringDevice, monDevName, monDevId); SetInvalidValue(ui->monitoringDevice, monDevName, monDevId);
#endif #endif
@ -2622,7 +2618,7 @@ void OBSBasicSettings::SaveAdvancedSettings()
SaveCombo(ui->colorFormat, "Video", "ColorFormat"); SaveCombo(ui->colorFormat, "Video", "ColorFormat");
SaveCombo(ui->colorSpace, "Video", "ColorSpace"); SaveCombo(ui->colorSpace, "Video", "ColorSpace");
SaveComboData(ui->colorRange, "Video", "ColorRange"); SaveComboData(ui->colorRange, "Video", "ColorRange");
#if defined(_WIN32) || defined(__APPLE__) #if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO
SaveCombo(ui->monitoringDevice, "Audio", "MonitoringDeviceName"); SaveCombo(ui->monitoringDevice, "Audio", "MonitoringDeviceName");
SaveComboData(ui->monitoringDevice, "Audio", "MonitoringDeviceId"); SaveComboData(ui->monitoringDevice, "Audio", "MonitoringDeviceId");
#endif #endif
@ -2648,7 +2644,7 @@ void OBSBasicSettings::SaveAdvancedSettings()
SaveSpinBox(ui->reconnectMaxRetries, "Output", "MaxRetries"); SaveSpinBox(ui->reconnectMaxRetries, "Output", "MaxRetries");
SaveComboData(ui->bindToIP, "Output", "BindIP"); SaveComboData(ui->bindToIP, "Output", "BindIP");
#if defined(_WIN32) || defined(__APPLE__) #if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO
QString newDevice = ui->monitoringDevice->currentData().toString(); QString newDevice = ui->monitoringDevice->currentData().toString();
if (lastMonitoringDevice != newDevice) { if (lastMonitoringDevice != newDevice) {