diff options
Diffstat (limited to 'services/audioflinger/AudioFlinger.cpp')
-rw-r--r-- | services/audioflinger/AudioFlinger.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp index 3c60e5a..68be7a7 100644 --- a/services/audioflinger/AudioFlinger.cpp +++ b/services/audioflinger/AudioFlinger.cpp @@ -1804,11 +1804,25 @@ Exit: return track; } +uint32_t AudioFlinger::MixerThread::correctLatency(uint32_t latency) const +{ + if (mFastMixer != NULL) { + MonoPipe *pipe = (MonoPipe *)mPipeSink.get(); + latency += (pipe->getAvgFrames() * 1000) / mSampleRate; + } + return latency; +} + +uint32_t AudioFlinger::PlaybackThread::correctLatency(uint32_t latency) const +{ + return latency; +} + uint32_t AudioFlinger::PlaybackThread::latency() const { Mutex::Autolock _l(mLock); if (initCheck() == NO_ERROR) { - return mOutput->stream->get_latency(mOutput->stream); + return correctLatency(mOutput->stream->get_latency(mOutput->stream)); } else { return 0; } @@ -2020,6 +2034,7 @@ void AudioFlinger::PlaybackThread::readOutputParameters() } } + status_t AudioFlinger::PlaybackThread::getRenderPosition(uint32_t *halFrames, uint32_t *dspFrames) { if (halFrames == NULL || dspFrames == NULL) { |