Loading include/media/AudioTrack.h +1 −0 Original line number Diff line number Diff line Loading @@ -746,6 +746,7 @@ protected: bool mInUnderrun; // whether track is currently in underrun state String8 mName; // server's name for this IAudioTrack uint32_t mPausedPosition; private: class DeathNotifier : public IBinder::DeathRecipient { Loading media/libmedia/AudioTrack.cpp +22 −3 Original line number Diff line number Diff line Loading @@ -99,7 +99,8 @@ AudioTrack::AudioTrack() : mStatus(NO_INIT), mIsTimed(false), mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(SP_DEFAULT) mPreviousSchedulingGroup(SP_DEFAULT), mPausedPosition(0) { } Loading @@ -121,7 +122,8 @@ AudioTrack::AudioTrack( : mStatus(NO_INIT), mIsTimed(false), mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(SP_DEFAULT) mPreviousSchedulingGroup(SP_DEFAULT), mPausedPosition(0) { mStatus = set(streamType, sampleRate, format, channelMask, frameCount, flags, cbf, user, notificationFrames, Loading @@ -147,7 +149,8 @@ AudioTrack::AudioTrack( : mStatus(NO_INIT), mIsTimed(false), mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(SP_DEFAULT) mPreviousSchedulingGroup(SP_DEFAULT), mPausedPosition(0) { mStatus = set(streamType, sampleRate, format, channelMask, 0 /*frameCount*/, flags, cbf, user, notificationFrames, Loading Loading @@ -551,6 +554,16 @@ void AudioTrack::pause() } mProxy->interrupt(); mAudioTrack->pause(); if (isOffloaded()) { if (mOutput != 0) { uint32_t halFrames; // OffloadThread sends HAL pause in its threadLoop.. time saved // here can be slightly off AudioSystem::getRenderPosition(mOutput, &halFrames, &mPausedPosition); ALOGV("AudioTrack::pause for offload, cache current position %u", mPausedPosition); } } } status_t AudioTrack::setVolume(float left, float right) Loading Loading @@ -770,6 +783,12 @@ status_t AudioTrack::getPosition(uint32_t *position) const if (isOffloaded_l()) { uint32_t dspFrames = 0; if ((mState == STATE_PAUSED) || (mState == STATE_PAUSED_STOPPING)) { ALOGV("getPosition called in paused state, return cached position %u", mPausedPosition); *position = mPausedPosition; return NO_ERROR; } if (mOutput != 0) { uint32_t halFrames; AudioSystem::getRenderPosition(mOutput, &halFrames, &dspFrames); Loading Loading
include/media/AudioTrack.h +1 −0 Original line number Diff line number Diff line Loading @@ -746,6 +746,7 @@ protected: bool mInUnderrun; // whether track is currently in underrun state String8 mName; // server's name for this IAudioTrack uint32_t mPausedPosition; private: class DeathNotifier : public IBinder::DeathRecipient { Loading
media/libmedia/AudioTrack.cpp +22 −3 Original line number Diff line number Diff line Loading @@ -99,7 +99,8 @@ AudioTrack::AudioTrack() : mStatus(NO_INIT), mIsTimed(false), mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(SP_DEFAULT) mPreviousSchedulingGroup(SP_DEFAULT), mPausedPosition(0) { } Loading @@ -121,7 +122,8 @@ AudioTrack::AudioTrack( : mStatus(NO_INIT), mIsTimed(false), mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(SP_DEFAULT) mPreviousSchedulingGroup(SP_DEFAULT), mPausedPosition(0) { mStatus = set(streamType, sampleRate, format, channelMask, frameCount, flags, cbf, user, notificationFrames, Loading @@ -147,7 +149,8 @@ AudioTrack::AudioTrack( : mStatus(NO_INIT), mIsTimed(false), mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(SP_DEFAULT) mPreviousSchedulingGroup(SP_DEFAULT), mPausedPosition(0) { mStatus = set(streamType, sampleRate, format, channelMask, 0 /*frameCount*/, flags, cbf, user, notificationFrames, Loading Loading @@ -551,6 +554,16 @@ void AudioTrack::pause() } mProxy->interrupt(); mAudioTrack->pause(); if (isOffloaded()) { if (mOutput != 0) { uint32_t halFrames; // OffloadThread sends HAL pause in its threadLoop.. time saved // here can be slightly off AudioSystem::getRenderPosition(mOutput, &halFrames, &mPausedPosition); ALOGV("AudioTrack::pause for offload, cache current position %u", mPausedPosition); } } } status_t AudioTrack::setVolume(float left, float right) Loading Loading @@ -770,6 +783,12 @@ status_t AudioTrack::getPosition(uint32_t *position) const if (isOffloaded_l()) { uint32_t dspFrames = 0; if ((mState == STATE_PAUSED) || (mState == STATE_PAUSED_STOPPING)) { ALOGV("getPosition called in paused state, return cached position %u", mPausedPosition); *position = mPausedPosition; return NO_ERROR; } if (mOutput != 0) { uint32_t halFrames; AudioSystem::getRenderPosition(mOutput, &halFrames, &dspFrames); Loading