Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/sanear.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Marsev <alex.marsev@gmail.com>2015-10-12 11:38:47 +0300
committerAlex Marsev <alex.marsev@gmail.com>2015-10-12 17:28:25 +0300
commit608aebaf8385c5caf83e2a0bf166c5d732b763fc (patch)
treeec3cce2e36ac0834510d6e2fe4ae3b3b90f46e3a
parenta99014d6bbadcfcc8a5b640e832371d47b9e825b (diff)
Remember WASAPI mix format
-rw-r--r--src/AudioDevice.cpp14
-rw-r--r--src/AudioDevice.h6
-rw-r--r--src/AudioDeviceManager.cpp2
-rw-r--r--src/AudioRenderer.cpp7
4 files changed, 9 insertions, 20 deletions
diff --git a/src/AudioDevice.cpp b/src/AudioDevice.cpp
index dfe2508..2987b2c 100644
--- a/src/AudioDevice.cpp
+++ b/src/AudioDevice.cpp
@@ -175,20 +175,6 @@ namespace SaneAudioRenderer
}
}
- SaneAudioRenderer::SharedWaveFormat AudioDevice::GetNewMixFormat()
- {
- try
- {
- WAVEFORMATEX* pFormat;
- ThrowIfFailed(m_backend->audioClient->GetMixFormat(&pFormat));
- return SharedWaveFormat(pFormat, CoTaskMemFreeDeleter());
- }
- catch (HRESULT)
- {
- return nullptr;
- }
- }
-
void AudioDevice::RealtimeFeed()
{
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);
diff --git a/src/AudioDevice.h b/src/AudioDevice.h
index f2f2273..86a30d9 100644
--- a/src/AudioDevice.h
+++ b/src/AudioDevice.h
@@ -16,6 +16,8 @@ namespace SaneAudioRenderer
IAudioRenderClientPtr audioRenderClient;
IAudioClockPtr audioClock;
+ SharedWaveFormat mixFormat;
+
SharedWaveFormat waveFormat;
DspFormat dspFormat;
uint32_t bufferDuration;
@@ -53,13 +55,13 @@ namespace SaneAudioRenderer
IAudioClockPtr GetClock() { return m_backend->audioClock; }
+ SharedWaveFormat GetMixFormat() const { return m_backend->mixFormat; }
+
SharedWaveFormat GetWaveFormat() const { return m_backend->waveFormat; }
DspFormat GetDspFormat() const { return m_backend->dspFormat; }
uint32_t GetBufferDuration() const { return m_backend->bufferDuration; }
REFERENCE_TIME GetStreamLatency() const { return m_backend->latency; }
- SharedWaveFormat GetNewMixFormat();
-
bool IsExclusive() const { return m_backend->exclusive; }
bool IsBitstream() const { return m_backend->bitstream; }
bool IsRealtime() const { return m_backend->realtime; }
diff --git a/src/AudioDeviceManager.cpp b/src/AudioDeviceManager.cpp
index f05f907..7b4cbf1 100644
--- a/src/AudioDeviceManager.cpp
+++ b/src/AudioDeviceManager.cpp
@@ -202,6 +202,8 @@ namespace SaneAudioRenderer
ThrowIfFailed(backend->audioClient->GetMixFormat(&pFormat));
SharedWaveFormat mixFormat(pFormat, CoTaskMemFreeDeleter());
+ backend->mixFormat = mixFormat;
+
backend->bitstream = (DspFormatFromWaveFormat(*format) == DspFormat::Unknown);
backend->ignoredSystemChannelMixer = false;
diff --git a/src/AudioRenderer.cpp b/src/AudioRenderer.cpp
index eb3ae82..e2a0204 100644
--- a/src/AudioRenderer.cpp
+++ b/src/AudioRenderer.cpp
@@ -397,11 +397,10 @@ namespace SaneAudioRenderer
BOOL crossfeedEnabled = m_settings->GetCrossfeedEnabled();
BOOL ignoreSystemChannelMixer = m_settings->GetIgnoreSystemChannelMixer();
- SharedWaveFormat newMixFormat = m_device->GetNewMixFormat();
- if (!newMixFormat)
- return;
+ SharedWaveFormat mixFormat = m_device->GetMixFormat();
+ assert(mixFormat);
- bool mixFormatIsStereo = DspMatrix::IsStereoFormat(*newMixFormat);
+ bool mixFormatIsStereo = DspMatrix::IsStereoFormat(*mixFormat);
bool inputIsStereo = DspMatrix::IsStereoFormat(*m_inputFormat);
bool outputIsStereo = DspMatrix::IsStereoFormat(*m_device->GetWaveFormat());