Project Andio

This commit is contained in:
Kelebek1
2022-07-16 23:48:45 +01:00
parent 6e36f4d230
commit 458da8a948
270 changed files with 33712 additions and 8445 deletions

View File

@ -372,8 +372,9 @@ void Config::ReadAudioValues() {
qt_config->beginGroup(QStringLiteral("Audio"));
if (global) {
ReadBasicSetting(Settings::values.audio_device_id);
ReadBasicSetting(Settings::values.sink_id);
ReadBasicSetting(Settings::values.audio_output_device_id);
ReadBasicSetting(Settings::values.audio_input_device_id);
}
ReadGlobalSetting(Settings::values.volume);
@ -1027,7 +1028,8 @@ void Config::SaveAudioValues() {
if (global) {
WriteBasicSetting(Settings::values.sink_id);
WriteBasicSetting(Settings::values.audio_device_id);
WriteBasicSetting(Settings::values.audio_output_device_id);
WriteBasicSetting(Settings::values.audio_input_device_id);
}
WriteGlobalSetting(Settings::values.volume);

View File

@ -3,8 +3,8 @@
#include <memory>
#include "audio_core/sink.h"
#include "audio_core/sink_details.h"
#include "audio_core/sink/sink.h"
#include "audio_core/sink/sink_details.h"
#include "common/settings.h"
#include "core/core.h"
#include "ui_configure_audio.h"
@ -15,11 +15,11 @@ ConfigureAudio::ConfigureAudio(const Core::System& system_, QWidget* parent)
: QWidget(parent), ui(std::make_unique<Ui::ConfigureAudio>()), system{system_} {
ui->setupUi(this);
InitializeAudioOutputSinkComboBox();
InitializeAudioSinkComboBox();
connect(ui->volume_slider, &QSlider::valueChanged, this,
&ConfigureAudio::SetVolumeIndicatorText);
connect(ui->output_sink_combo_box, qOverload<int>(&QComboBox::currentIndexChanged), this,
connect(ui->sink_combo_box, qOverload<int>(&QComboBox::currentIndexChanged), this,
&ConfigureAudio::UpdateAudioDevices);
ui->volume_label->setVisible(Settings::IsConfiguringGlobal());
@ -30,8 +30,9 @@ ConfigureAudio::ConfigureAudio(const Core::System& system_, QWidget* parent)
SetConfiguration();
const bool is_powered_on = system_.IsPoweredOn();
ui->output_sink_combo_box->setEnabled(!is_powered_on);
ui->audio_device_combo_box->setEnabled(!is_powered_on);
ui->sink_combo_box->setEnabled(!is_powered_on);
ui->output_combo_box->setEnabled(!is_powered_on);
ui->input_combo_box->setEnabled(!is_powered_on);
}
ConfigureAudio::~ConfigureAudio() = default;
@ -40,9 +41,9 @@ void ConfigureAudio::SetConfiguration() {
SetOutputSinkFromSinkID();
// The device list cannot be pre-populated (nor listed) until the output sink is known.
UpdateAudioDevices(ui->output_sink_combo_box->currentIndex());
UpdateAudioDevices(ui->sink_combo_box->currentIndex());
SetAudioDeviceFromDeviceID();
SetAudioDevicesFromDeviceID();
const auto volume_value = static_cast<int>(Settings::values.volume.GetValue());
ui->volume_slider->setValue(volume_value);
@ -62,32 +63,45 @@ void ConfigureAudio::SetConfiguration() {
}
void ConfigureAudio::SetOutputSinkFromSinkID() {
[[maybe_unused]] const QSignalBlocker blocker(ui->output_sink_combo_box);
[[maybe_unused]] const QSignalBlocker blocker(ui->sink_combo_box);
int new_sink_index = 0;
const QString sink_id = QString::fromStdString(Settings::values.sink_id.GetValue());
for (int index = 0; index < ui->output_sink_combo_box->count(); index++) {
if (ui->output_sink_combo_box->itemText(index) == sink_id) {
for (int index = 0; index < ui->sink_combo_box->count(); index++) {
if (ui->sink_combo_box->itemText(index) == sink_id) {
new_sink_index = index;
break;
}
}
ui->output_sink_combo_box->setCurrentIndex(new_sink_index);
ui->sink_combo_box->setCurrentIndex(new_sink_index);
}
void ConfigureAudio::SetAudioDeviceFromDeviceID() {
void ConfigureAudio::SetAudioDevicesFromDeviceID() {
int new_device_index = -1;
const QString device_id = QString::fromStdString(Settings::values.audio_device_id.GetValue());
for (int index = 0; index < ui->audio_device_combo_box->count(); index++) {
if (ui->audio_device_combo_box->itemText(index) == device_id) {
const QString output_device_id =
QString::fromStdString(Settings::values.audio_output_device_id.GetValue());
for (int index = 0; index < ui->output_combo_box->count(); index++) {
if (ui->output_combo_box->itemText(index) == output_device_id) {
new_device_index = index;
break;
}
}
ui->audio_device_combo_box->setCurrentIndex(new_device_index);
ui->output_combo_box->setCurrentIndex(new_device_index);
new_device_index = -1;
const QString input_device_id =
QString::fromStdString(Settings::values.audio_input_device_id.GetValue());
for (int index = 0; index < ui->input_combo_box->count(); index++) {
if (ui->input_combo_box->itemText(index) == input_device_id) {
new_device_index = index;
break;
}
}
ui->input_combo_box->setCurrentIndex(new_device_index);
}
void ConfigureAudio::SetVolumeIndicatorText(int percentage) {
@ -95,14 +109,13 @@ void ConfigureAudio::SetVolumeIndicatorText(int percentage) {
}
void ConfigureAudio::ApplyConfiguration() {
if (Settings::IsConfiguringGlobal()) {
Settings::values.sink_id =
ui->output_sink_combo_box->itemText(ui->output_sink_combo_box->currentIndex())
.toStdString();
Settings::values.audio_device_id.SetValue(
ui->audio_device_combo_box->itemText(ui->audio_device_combo_box->currentIndex())
.toStdString());
ui->sink_combo_box->itemText(ui->sink_combo_box->currentIndex()).toStdString();
Settings::values.audio_output_device_id.SetValue(
ui->output_combo_box->itemText(ui->output_combo_box->currentIndex()).toStdString());
Settings::values.audio_input_device_id.SetValue(
ui->input_combo_box->itemText(ui->input_combo_box->currentIndex()).toStdString());
// Guard if during game and set to game-specific value
if (Settings::values.volume.UsingGlobal()) {
@ -129,21 +142,27 @@ void ConfigureAudio::changeEvent(QEvent* event) {
}
void ConfigureAudio::UpdateAudioDevices(int sink_index) {
ui->audio_device_combo_box->clear();
ui->audio_device_combo_box->addItem(QString::fromUtf8(AudioCore::auto_device_name));
ui->output_combo_box->clear();
ui->output_combo_box->addItem(QString::fromUtf8(AudioCore::Sink::auto_device_name));
const std::string sink_id = ui->output_sink_combo_box->itemText(sink_index).toStdString();
for (const auto& device : AudioCore::GetDeviceListForSink(sink_id)) {
ui->audio_device_combo_box->addItem(QString::fromStdString(device));
const std::string sink_id = ui->sink_combo_box->itemText(sink_index).toStdString();
for (const auto& device : AudioCore::Sink::GetDeviceListForSink(sink_id, false)) {
ui->output_combo_box->addItem(QString::fromStdString(device));
}
ui->input_combo_box->clear();
ui->input_combo_box->addItem(QString::fromUtf8(AudioCore::Sink::auto_device_name));
for (const auto& device : AudioCore::Sink::GetDeviceListForSink(sink_id, true)) {
ui->input_combo_box->addItem(QString::fromStdString(device));
}
}
void ConfigureAudio::InitializeAudioOutputSinkComboBox() {
ui->output_sink_combo_box->clear();
ui->output_sink_combo_box->addItem(QString::fromUtf8(AudioCore::auto_device_name));
void ConfigureAudio::InitializeAudioSinkComboBox() {
ui->sink_combo_box->clear();
ui->sink_combo_box->addItem(QString::fromUtf8(AudioCore::Sink::auto_device_name));
for (const char* id : AudioCore::GetSinkIDs()) {
ui->output_sink_combo_box->addItem(QString::fromUtf8(id));
for (const char* id : AudioCore::Sink::GetSinkIDs()) {
ui->sink_combo_box->addItem(QString::fromUtf8(id));
}
}
@ -164,8 +183,10 @@ void ConfigureAudio::SetupPerGameUI() {
ConfigurationShared::SetHighlight(ui->volume_layout, index == 1);
});
ui->output_sink_combo_box->setVisible(false);
ui->output_sink_label->setVisible(false);
ui->audio_device_combo_box->setVisible(false);
ui->audio_device_label->setVisible(false);
ui->sink_combo_box->setVisible(false);
ui->sink_label->setVisible(false);
ui->output_combo_box->setVisible(false);
ui->output_label->setVisible(false);
ui->input_combo_box->setVisible(false);
ui->input_label->setVisible(false);
}

View File

@ -31,14 +31,14 @@ public:
private:
void changeEvent(QEvent* event) override;
void InitializeAudioOutputSinkComboBox();
void InitializeAudioSinkComboBox();
void RetranslateUI();
void UpdateAudioDevices(int sink_index);
void SetOutputSinkFromSinkID();
void SetAudioDeviceFromDeviceID();
void SetAudioDevicesFromDeviceID();
void SetVolumeIndicatorText(int percentage);
void SetupPerGameUI();

View File

@ -21,30 +21,44 @@
</property>
<layout class="QVBoxLayout">
<item>
<layout class="QHBoxLayout" name="_3">
<layout class="QHBoxLayout" name="engine_layout">
<item>
<widget class="QLabel" name="output_sink_label">
<widget class="QLabel" name="sink_label">
<property name="text">
<string>Output Engine:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="output_sink_combo_box"/>
<widget class="QComboBox" name="sink_combo_box"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="_2">
<layout class="QHBoxLayout" name="output_layout">
<item>
<widget class="QLabel" name="audio_device_label">
<widget class="QLabel" name="output_label">
<property name="text">
<string>Audio Device:</string>
<string>Output Device</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="audio_device_combo_box"/>
<widget class="QComboBox" name="output_combo_box"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="input_layout">
<item>
<widget class="QLabel" name="input_label">
<property name="text">
<string>Input Device</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="input_combo_box"/>
</item>
</layout>
</item>

View File

@ -44,6 +44,7 @@ void ConfigureDebug::SetConfiguration() {
ui->fs_access_log->setEnabled(runtime_lock);
ui->fs_access_log->setChecked(Settings::values.enable_fs_access_log.GetValue());
ui->reporting_services->setChecked(Settings::values.reporting_services.GetValue());
ui->dump_audio_commands->setChecked(Settings::values.dump_audio_commands.GetValue());
ui->quest_flag->setChecked(Settings::values.quest_flag.GetValue());
ui->use_debug_asserts->setChecked(Settings::values.use_debug_asserts.GetValue());
ui->use_auto_stub->setChecked(Settings::values.use_auto_stub.GetValue());
@ -83,6 +84,7 @@ void ConfigureDebug::ApplyConfiguration() {
Settings::values.program_args = ui->homebrew_args_edit->text().toStdString();
Settings::values.enable_fs_access_log = ui->fs_access_log->isChecked();
Settings::values.reporting_services = ui->reporting_services->isChecked();
Settings::values.dump_audio_commands = ui->dump_audio_commands->isChecked();
Settings::values.quest_flag = ui->quest_flag->isChecked();
Settings::values.use_debug_asserts = ui->use_debug_asserts->isChecked();
Settings::values.use_auto_stub = ui->use_auto_stub->isChecked();

View File

@ -235,6 +235,16 @@
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="dump_audio_commands">
<property name="text">
<string>Dump Audio Commands To Console**</string>
</property>
<property name="toolTip">
<string>Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer.</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="reporting_services">
<property name="text">
<string>Enable Verbose Reporting Services**</string>
@ -325,6 +335,7 @@
<tabstop>disable_loop_safety_checks</tabstop>
<tabstop>fs_access_log</tabstop>
<tabstop>reporting_services</tabstop>
<tabstop>dump_audio_commands</tabstop>
<tabstop>quest_flag</tabstop>
<tabstop>enable_cpu_debugging</tabstop>
<tabstop>use_debug_asserts</tabstop>