summaryrefslogtreecommitdiffstats
path: root/services/audioflinger/Threads.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'services/audioflinger/Threads.cpp')
-rw-r--r--services/audioflinger/Threads.cpp20
1 files changed, 6 insertions, 14 deletions
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp
index c360051..3057d9d 100644
--- a/services/audioflinger/Threads.cpp
+++ b/services/audioflinger/Threads.cpp
@@ -125,10 +125,15 @@ static const uint32_t kMinThreadSleepTimeUs = 5000;
static const uint32_t kMaxThreadSleepTimeShift = 2;
// minimum normal sink buffer size, expressed in milliseconds rather than frames
+// FIXME This should be based on experimentally observed scheduling jitter
static const uint32_t kMinNormalSinkBufferSizeMs = 20;
// maximum normal sink buffer size
static const uint32_t kMaxNormalSinkBufferSizeMs = 24;
+// minimum capture buffer size in milliseconds to _not_ need a fast capture thread
+// FIXME This should be based on experimentally observed scheduling jitter
+static const uint32_t kMinNormalCaptureBufferSizeMs = 12;
+
// Offloaded output thread standby delay: allows track transition without going to standby
static const nsecs_t kOffloadStandbyDelayNs = seconds(1);
@@ -5490,20 +5495,7 @@ AudioFlinger::RecordThread::RecordThread(const sp<AudioFlinger>& audioFlinger,
initFastCapture = true;
break;
case FastCapture_Static:
- uint32_t primaryOutputSampleRate;
- {
- AutoMutex _l(audioFlinger->mHardwareLock);
- primaryOutputSampleRate = audioFlinger->mPrimaryOutputSampleRate;
- }
- initFastCapture =
- // either capture sample rate is same as (a reasonable) primary output sample rate
- ((isMusicRate(primaryOutputSampleRate) &&
- (mSampleRate == primaryOutputSampleRate)) ||
- // or primary output sample rate is unknown, and capture sample rate is reasonable
- ((primaryOutputSampleRate == 0) &&
- isMusicRate(mSampleRate))) &&
- // and the buffer size is < 12 ms
- (mFrameCount * 1000) / mSampleRate < 12;
+ initFastCapture = (mFrameCount * 1000) / mSampleRate < kMinNormalCaptureBufferSizeMs;
break;
// case FastCapture_Dynamic:
}