diff options
Diffstat (limited to 'media')
| -rw-r--r-- | media/libmedia/AudioTrack.cpp | 5 | ||||
| -rw-r--r-- | media/libstagefright/AudioPlayer.cpp | 2 | 
2 files changed, 6 insertions, 1 deletions
diff --git a/media/libmedia/AudioTrack.cpp b/media/libmedia/AudioTrack.cpp index 3949c39..cecedb5 100644 --- a/media/libmedia/AudioTrack.cpp +++ b/media/libmedia/AudioTrack.cpp @@ -259,6 +259,7 @@ status_t AudioTrack::set(      mMarkerReached = false;      mNewPosition = 0;      mUpdatePeriod = 0; +    mFlushed = false;      mFlags = flags;      AudioSystem::acquireAudioSessionId(mSessionId); @@ -337,6 +338,7 @@ void AudioTrack::start()      audio_track_cblk_t* cblk = mCblk;      if (mActive == 0) { +        mFlushed = false;          mActive = 1;          mNewPosition = cblk->server + mUpdatePeriod;          cblk->lock.lock(); @@ -437,6 +439,7 @@ void AudioTrack::flush_l()      mUpdatePeriod = 0;      if (!mActive) { +        mFlushed = true;          mAudioTrack->flush();          // Release AudioTrack callback thread in case it was waiting for new buffers          // in AudioTrack::obtainBuffer() @@ -655,7 +658,7 @@ status_t AudioTrack::getPosition(uint32_t *position)  {      if (position == 0) return BAD_VALUE;      AutoMutex lock(mLock); -    *position = mCblk->server; +    *position = mFlushed ? 0 : mCblk->server;      return NO_ERROR;  } diff --git a/media/libstagefright/AudioPlayer.cpp b/media/libstagefright/AudioPlayer.cpp index dd69e6b..d41ab1b 100644 --- a/media/libstagefright/AudioPlayer.cpp +++ b/media/libstagefright/AudioPlayer.cpp @@ -180,6 +180,8 @@ void AudioPlayer::pause(bool playPendingSamples) {          } else {              mAudioTrack->stop();          } + +        mNumFramesPlayed = 0;      } else {          if (mAudioSink.get() != NULL) {              mAudioSink->pause();  | 
