aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Output/wasapi/outputwasapi.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-12-02 19:22:48 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-12-02 19:22:48 +0000
commit3caee8cc0369674d3a60576ef7dee619ae6046e7 (patch)
treeafcd5b05bc7031f92059ac0c2a9c9f16dffea4e5 /src/plugins/Output/wasapi/outputwasapi.cpp
parentfc021513c074d2b916696f9c5cdfae2a40ce3373 (diff)
downloadqmmp-3caee8cc0369674d3a60576ef7dee619ae6046e7.tar.gz
qmmp-3caee8cc0369674d3a60576ef7dee619ae6046e7.tar.bz2
qmmp-3caee8cc0369674d3a60576ef7dee619ae6046e7.zip
wasapi: added exclusive mode support (#903)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@8481 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Output/wasapi/outputwasapi.cpp')
-rw-r--r--src/plugins/Output/wasapi/outputwasapi.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/plugins/Output/wasapi/outputwasapi.cpp b/src/plugins/Output/wasapi/outputwasapi.cpp
index 88abf2780..eaa09cb54 100644
--- a/src/plugins/Output/wasapi/outputwasapi.cpp
+++ b/src/plugins/Output/wasapi/outputwasapi.cpp
@@ -64,6 +64,7 @@ OutputWASAPI::OutputWASAPI() : Output()
instance = this;
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
m_id = settings.value("WASAPI/device", "default").toString();
+ m_exclusive = settings.value("WASAPI/exclusive_mode", false).toBool();
}
OutputWASAPI::~OutputWASAPI()
@@ -162,15 +163,16 @@ bool OutputWASAPI::initialize(quint32 freq, ChannelMap map, Qmmp::AudioFormat fo
wfex.dwChannelMask = mask;
wfex.SubFormat = KSDATAFORMAT_SUBTYPE_PCM;
+ AUDCLNT_SHAREMODE mode = m_exclusive ? AUDCLNT_SHAREMODE_EXCLUSIVE : AUDCLNT_SHAREMODE_SHARED;
DWORD streamFlags = 0;
//enable channel matrixer and a sample rate converter if format is unsupported
- if(m_pAudioClient->IsFormatSupported(AUDCLNT_SHAREMODE_SHARED, (WAVEFORMATEX *)&wfex, 0) != S_OK)
+ if(m_pAudioClient->IsFormatSupported(mode, (WAVEFORMATEX *)&wfex, 0) != S_OK)
{
streamFlags |= AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM;
qDebug("OutputWASAPI: format is not supported, using converter");
}
- if((result = m_pAudioClient->Initialize(AUDCLNT_SHAREMODE_SHARED, streamFlags, WASAPI_BUFSIZE, 0, (WAVEFORMATEX *)&wfex, NULL)) != S_OK)
+ if((result = m_pAudioClient->Initialize(mode, streamFlags, WASAPI_BUFSIZE, 0, (WAVEFORMATEX *)&wfex, NULL)) != S_OK)
{
qWarning("OutputWASAPI: IAudioClient::Initialize failed, error code = 0x%lx", result);
return false;