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-21 01:40:00 +0300
committerAlex Marsev <alex.marsev@gmail.com>2016-01-24 08:08:10 +0300
commit6927511f3610bdc889959f17739ba760029989de (patch)
treec95df2e9fe8b00bbec1bc1be3da8e77c5dd42f21
parent5f2752a3f7652a289f48211cd15b967632506621 (diff)
Sleep to minimize clock slaving jitter
Before starting audio device, if it makes sense to.
-rw-r--r--src/AudioRenderer.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/AudioRenderer.cpp b/src/AudioRenderer.cpp
index 5df133a..04ba0c9 100644
--- a/src/AudioRenderer.cpp
+++ b/src/AudioRenderer.cpp
@@ -457,6 +457,23 @@ namespace SaneAudioRenderer
if (m_device)
{
+ // Try to minimize clock slaving initial jitter.
+ {
+ REFERENCE_TIME clockTime;
+ m_myClock.GetImmediateTime(&clockTime);
+
+ if (!m_device->IsExclusive())
+ clockTime += m_device->GetStreamLatency();
+
+ int64_t sleepTime = llMulDiv(m_startTime + m_startClockOffset - clockTime, 1000, OneSecond, 0);
+
+ if (sleepTime > 0 && sleepTime < 200)
+ {
+ TimePeriodHelper timePeriodHelper(1);
+ Sleep((DWORD)sleepTime);
+ }
+ }
+
m_guidedReclockOffset = 0;
m_myClock.SlaveClockToAudio(m_device->GetClock(), m_startTime + m_startClockOffset);
m_clockCorrection = 0;