Skip to content

Commit 040f3f0

Browse files
committed
Update audio settings
1 parent f824d3a commit 040f3f0

File tree

7 files changed

+441
-131
lines changed

7 files changed

+441
-131
lines changed

src/plugins/audio/internal/subsystems/OutputSystem.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@
99
#include <TalcsDevice/AudioDevice.h>
1010
#include <TalcsDevice/AudioDriver.h>
1111

12+
#include <audio/internal/DeviceTester.h>
13+
1214
namespace Audio::Internal {
1315

1416
Q_LOGGING_CATEGORY(audioOutputSystem, "diffscope.audio.outputSystem")
1517

16-
OutputSystem::OutputSystem(QObject *parent) : QObject(parent), m_outputContext(new talcs::OutputContext) {
18+
OutputSystem::OutputSystem(QObject *parent) : QObject(parent), m_outputContext(new talcs::OutputContext), m_deviceTester(new DeviceTester) {
1719
}
1820

1921
OutputSystem::~OutputSystem() = default;
@@ -28,6 +30,8 @@ namespace Audio::Internal {
2830
m_outputContext->setHotPlugNotificationMode(m_hotPlugNotificationMode);
2931
// setFileBufferingReadAheadSize(AudioSettings::fileBufferingReadAheadSize());
3032

33+
m_outputContext->preMixer()->addSource(m_deviceTester.get());
34+
3135
if (m_outputContext->initialize(m_driverName, m_deviceName)) {
3236
qCInfo(audioOutputSystem) << "Audio device initialized";
3337
logOutputInfo();
@@ -42,7 +46,7 @@ namespace Audio::Internal {
4246
return m_outputContext.get();
4347
}
4448
bool OutputSystem::setDriver(const QString &driverName) {
45-
if (m_outputContext->setDriver(driverName)) {
49+
if (m_outputContext->setDriver(driverName, talcs::OutputContext::DO_UsePreferredSpec)) {
4650
postSetDevice();
4751
qCInfo(audioOutputSystem) << "Audio driver changed";
4852
logOutputInfo();
@@ -54,7 +58,7 @@ namespace Audio::Internal {
5458
}
5559
}
5660
bool OutputSystem::setDevice(const QString &deviceName) {
57-
if (m_outputContext->setDevice(deviceName)) {
61+
if (m_outputContext->setDevice(deviceName, talcs::OutputContext::DO_UsePreferredSpec)) {
5862
postSetDevice();
5963
qCInfo(audioOutputSystem) << "Device changed";
6064
logOutputInfo();
@@ -107,6 +111,10 @@ namespace Audio::Internal {
107111
return m_outputContext->device() && m_outputContext->device()->isOpen();
108112
}
109113

114+
void OutputSystem::playTestSound() {
115+
m_deviceTester->playTestSound();
116+
}
117+
110118
void OutputSystem::load() {
111119
auto settings = Core::RuntimeInterface::settings();
112120
settings->beginGroup(staticMetaObject.className());

src/plugins/audio/internal/subsystems/OutputSystem.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
namespace Audio::Internal {
1111

12+
class DeviceTester;
13+
1214
class OutputSystem : public QObject {
1315
Q_OBJECT
1416
public:
@@ -27,6 +29,8 @@ namespace Audio::Internal {
2729

2830
bool isReady() const;
2931

32+
void playTestSound();
33+
3034
private:
3135
void load();
3236
void save() const;
@@ -36,6 +40,7 @@ namespace Audio::Internal {
3640
void logOutputInfo() const;
3741

3842
std::unique_ptr<talcs::OutputContext> m_outputContext;
43+
std::unique_ptr<DeviceTester> m_deviceTester;
3944

4045
qint64 m_adoptedBufferSize{};
4146
double m_adoptedSampleRate{};

0 commit comments

Comments
 (0)