1、mSleepTimeUs
表示要sleep的时间,一般是等于mIdleSleepTimeUs,而
mIdleSleepTimeUs是idleSleepTimeUs()的返回。
uint32_t AudioFlinger::MixerThread::idleSleepTimeUs() const
{
return (uint32_t)(((mNormalFrameCount * 1000) / mSampleRate) * 1000) / 2;
}
大概就是等于out_write一次数据的时间的一半。比如mNormalFrameCount = 1920, mSampleRate = 48000, 那idleSleepTimeUs = 1920/4800/2 = 20ms,但是mNormalFrameCount还不一定
等于hal层返回的framecount,mNormalFrameCount = multiplier * mFrameCount;
mFrameCount 才是hal层返回的framecount,mFrameCount = mBufferSize / mFrameSize;
2、mActiveSleepTimeUs
mActiveSleepTimeUs = activeSleepTimeUs();
uint32_t AudioFlinger::PlaybackThread::activeSleepTimeUs() const
{
return (uint32_t)((uint32_t)((mNormalFrameCount * 1000) / mSampleRate) * 1000);
}
所以mActiveSleepTimeUs会等于idleSleepTimeUs的2倍,大概是40ms。
3、sleepTimeShift
一个移位参数,主要用于计算实际mSleepTimeUs的值, mSleepTimeUs 不超过kMaxThreadSleepTimeShift(即static const uint32_t kMaxThreadSleepTimeShift = 2;)