99#include < TalcsDevice/AudioDevice.h>
1010#include < TalcsDevice/AudioDriver.h>
1111
12+ #include < audio/internal/DeviceTester.h>
13+
1214namespace 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 ());
0 commit comments