summaryrefslogtreecommitdiffstats
path: root/services/audioflinger/BufferProviders.cpp
diff options
context:
space:
mode:
authorRicardo Garcia <rago@google.com>2015-04-30 18:39:16 -0700
committerRicardo Garcia <rago@google.com>2015-06-22 16:08:40 -0700
commit6c7f062d3149d6890daaee64828959ad6f61ea54 (patch)
treedcab2e17178bf6d01ead75fad5df883961a6e195 /services/audioflinger/BufferProviders.cpp
parentfa907d4ee326c7bb9cbb4882ab7c0ec42bbceee3 (diff)
downloadframeworks_av-6c7f062d3149d6890daaee64828959ad6f61ea54.zip
frameworks_av-6c7f062d3149d6890daaee64828959ad6f61ea54.tar.gz
frameworks_av-6c7f062d3149d6890daaee64828959ad6f61ea54.tar.bz2
Using centralized isAudioPlaybackRateValid to validate parameters
Centralized validation code bug: 20701446 Change-Id: I9d9941c7639c05b2afe069ff4f858c693c910bfe
Diffstat (limited to 'services/audioflinger/BufferProviders.cpp')
-rw-r--r--services/audioflinger/BufferProviders.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/services/audioflinger/BufferProviders.cpp b/services/audioflinger/BufferProviders.cpp
index 8a580e8..3566ee2 100644
--- a/services/audioflinger/BufferProviders.cpp
+++ b/services/audioflinger/BufferProviders.cpp
@@ -332,7 +332,8 @@ TimestretchBufferProvider::TimestretchBufferProvider(int32_t channelCount,
mLocalBufferData(NULL),
mRemaining(0),
mSonicStream(sonicCreateStream(sampleRate, mChannelCount)),
- mFallbackFailErrorShown(false)
+ mFallbackFailErrorShown(false),
+ mAudioPlaybackRateValid(false)
{
LOG_ALWAYS_FATAL_IF(mSonicStream == NULL,
"TimestretchBufferProvider can't allocate Sonic stream");
@@ -460,6 +461,8 @@ status_t TimestretchBufferProvider::setPlaybackRate(const AudioPlaybackRate &pla
sonicSetSpeed(mSonicStream, mPlaybackRate.mSpeed);
//TODO: pitch is ignored for now
//TODO: optimize: if parameters are the same, don't do any extra computation.
+
+ mAudioPlaybackRateValid = isAudioPlaybackRateValid(mPlaybackRate);
return OK;
}
@@ -479,8 +482,7 @@ void TimestretchBufferProvider::processFrames(void *dstBuffer, size_t *dstFrames
*srcFrames = targetSrc + 1;
}
- if (mPlaybackRate.mSpeed< TIMESTRETCH_SONIC_SPEED_MIN ||
- mPlaybackRate.mSpeed > TIMESTRETCH_SONIC_SPEED_MAX ) {
+ if (!mAudioPlaybackRateValid) {
//fallback mode
if (*dstFrames > 0) {
switch(mPlaybackRate.mFallbackMode) {