diff options
author | Alex Marsev <alex.marsev@gmail.com> | 2015-10-18 22:14:54 +0300 |
---|---|---|
committer | Alex Marsev <alex.marsev@gmail.com> | 2015-10-18 22:14:54 +0300 |
commit | f7b10f7d9e58f80e44968ae02cf74c37d7513bcc (patch) | |
tree | 481910835d137e6c42b47ec1e602cc7fb99b46dc /src/MyClock.cpp | |
parent | b6c69006040b4f119a297286f4290aae28c99877 (diff) |
Reject guided reclock when it makes sense to
Diffstat (limited to 'src/MyClock.cpp')
-rw-r--r-- | src/MyClock.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/MyClock.cpp b/src/MyClock.cpp index b10c971..e5ed900 100644 --- a/src/MyClock.cpp +++ b/src/MyClock.cpp @@ -24,6 +24,9 @@ namespace SaneAudioRenderer {
CAutoLock lock(this);
+ if (m_guidedReclockSlaving && !CanDoGuidedReclock())
+ UnslaveClock();
+
if (m_guidedReclockSlaving)
{
auto getGuidedReclockTime = [this](int64_t counterTime)
@@ -132,6 +135,9 @@ namespace SaneAudioRenderer {
CAutoLock lock(this);
+ if (!CanDoGuidedReclock())
+ return E_FAIL;
+
int64_t time;
ReturnIfFailed(GetTime(&time));
@@ -147,6 +153,9 @@ namespace SaneAudioRenderer {
CAutoLock lock(this);
+ if (!m_guidedReclockSlaving)
+ return S_FALSE;
+
GetPrivateTime();
m_guidedReclockSlaving = false;
@@ -157,6 +166,9 @@ namespace SaneAudioRenderer {
CAutoLock lock(this);
+ if (!CanDoGuidedReclock())
+ return E_FAIL;
+
m_audioOffset += offset;
m_counterOffset += offset;
m_guidedReclockStartClock += offset;
@@ -174,4 +186,11 @@ namespace SaneAudioRenderer return S_OK;
}
+
+ bool MyClock::CanDoGuidedReclock()
+ {
+ return !m_renderer->IsBitstreaming() &&
+ !m_renderer->OnExternalClock() &&
+ !m_renderer->IsLive();
+ }
}
|