Skip to content

Commit f3a892a

Browse files
Eric LaurentAndroid (Google) Code Review
authored andcommitted
Merge "AudioFlinger: mix track only when really ready" into ics-mr1
2 parents 9d6a516 + 19ddf0e commit f3a892a

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

services/audioflinger/AudioFlinger.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2066,7 +2066,16 @@ uint32_t AudioFlinger::MixerThread::prepareTracks_l(const SortedVector< wp<Track
20662066
// The first time a track is added we wait
20672067
// for all its buffers to be filled before processing it
20682068
mAudioMixer->setActiveTrack(track->name());
2069-
if (cblk->framesReady() && track->isReady() &&
2069+
// make sure that we have enough frames to mix one full buffer
2070+
uint32_t minFrames = 1;
2071+
if (!track->isStopped() && !track->isPausing()) {
2072+
if (t->sampleRate() == (int)mSampleRate) {
2073+
minFrames = mFrameCount;
2074+
} else {
2075+
minFrames = (mFrameCount * t->sampleRate()) / mSampleRate + 1;
2076+
}
2077+
}
2078+
if ((cblk->framesReady() >= minFrames) && track->isReady() &&
20702079
!track->isPaused() && !track->isTerminated())
20712080
{
20722081
//LOGV("track %d u=%08x, s=%08x [OK] on thread %p", track->name(), cblk->user, cblk->server, this);

0 commit comments

Comments
 (0)