audioflinger: refine latency latency calculation.
There is an audio pipe between the normal mixer output and the fast
mixer to cope for scheduling delays and buffer size difference.
This pipe depth was not taken into account in latency calculation.
Adding the pipe contribution to the latency significantly improves A/V sync.
Bug 6520569.
Change-Id: I5584908e8aa8a02170eb38b22b4370eea800a235
diff --git a/services/audioflinger/AudioFlinger.h b/services/audioflinger/AudioFlinger.h
index 1ae5414..51cbae7 100644
--- a/services/audioflinger/AudioFlinger.h
+++ b/services/audioflinger/AudioFlinger.h
@@ -1048,6 +1048,8 @@
// Cache various calculated values, at threadLoop() entry and after a parameter change
virtual void cacheParameters_l();
+ virtual uint32_t correctLatency(uint32_t latency) const;
+
private:
friend class AudioFlinger; // for numerous
@@ -1154,6 +1156,7 @@
virtual void threadLoop_mix();
virtual void threadLoop_sleepTime();
virtual void threadLoop_removeTracks(const Vector< sp<Track> >& tracksToRemove);
+ virtual uint32_t correctLatency(uint32_t latency) const;
AudioMixer* mAudioMixer; // normal mixer
private: