diff options
Diffstat (limited to 'media/libstagefright/AudioSource.cpp')
-rw-r--r-- | media/libstagefright/AudioSource.cpp | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/media/libstagefright/AudioSource.cpp b/media/libstagefright/AudioSource.cpp index 8e3811b..bb2d415 100644 --- a/media/libstagefright/AudioSource.cpp +++ b/media/libstagefright/AudioSource.cpp @@ -83,6 +83,17 @@ AudioSource::AudioSource( this, frameCount); mInitCheck = mRecord->initCheck(); + + //configure the auto ramp start duration + mAutoRampStartUs = kAutoRampStartUs; + uint32_t playbackLatencyMs = 0; + if (AudioSystem::getOutputLatency(&playbackLatencyMs, + AUDIO_STREAM_DEFAULT) == OK) { + if (2*playbackLatencyMs*1000LL > kAutoRampStartUs) { + mAutoRampStartUs = 2*playbackLatencyMs*1000LL; + } + } + ALOGD("Start autoramp from %lld", mAutoRampStartUs); } else { mInitCheck = status; } @@ -238,14 +249,14 @@ status_t AudioSource::read( int64_t timeUs; CHECK(buffer->meta_data()->findInt64(kKeyTime, &timeUs)); int64_t elapsedTimeUs = timeUs - mStartTimeUs; - if (elapsedTimeUs < kAutoRampStartUs) { + if (elapsedTimeUs < mAutoRampStartUs) { memset((uint8_t *) buffer->data(), 0, buffer->range_length()); - } else if (elapsedTimeUs < kAutoRampStartUs + kAutoRampDurationUs) { + } else if (elapsedTimeUs < mAutoRampStartUs + kAutoRampDurationUs) { int32_t autoRampDurationFrames = (kAutoRampDurationUs * mSampleRate + 500000LL) / 1000000LL; int32_t autoRampStartFrames = - (kAutoRampStartUs * mSampleRate + 500000LL) / 1000000LL; + (mAutoRampStartUs * mSampleRate + 500000LL) / 1000000LL; int32_t nFrames = mNumFramesReceived - autoRampStartFrames; rampVolume(nFrames, autoRampDurationFrames, |