Loading include/media/stagefright/AudioPlayer.h +3 −3 Original line number Diff line number Diff line Loading @@ -49,11 +49,9 @@ public: status_t start(bool sourceAlreadyStarted = false); void pause(); void pause(bool playPendingSamples = false); void resume(); void stop(); // Returns the timestamp of the last buffer played (in us). int64_t getMediaTimeUs(); Loading Loading @@ -107,6 +105,8 @@ private: int64_t getRealTimeUsLocked() const; void reset(); AudioPlayer(const AudioPlayer &); AudioPlayer &operator=(const AudioPlayer &); }; Loading media/libstagefright/AudioPlayer.cpp +14 −6 Original line number Diff line number Diff line Loading @@ -55,7 +55,7 @@ AudioPlayer::AudioPlayer( AudioPlayer::~AudioPlayer() { if (mStarted) { stop(); reset(); } } Loading Loading @@ -165,14 +165,22 @@ status_t AudioPlayer::start(bool sourceAlreadyStarted) { return OK; } void AudioPlayer::pause() { void AudioPlayer::pause(bool playPendingSamples) { CHECK(mStarted); if (playPendingSamples) { if (mAudioSink.get() != NULL) { mAudioSink->pause(); mAudioSink->stop(); } else { mAudioTrack->stop(); } } else { if (mAudioSink.get() != NULL) { mAudioSink->pause(); } else { mAudioTrack->pause(); } } } void AudioPlayer::resume() { Loading @@ -185,7 +193,7 @@ void AudioPlayer::resume() { } } void AudioPlayer::stop() { void AudioPlayer::reset() { CHECK(mStarted); if (mAudioSink.get() != NULL) { Loading media/libstagefright/AwesomePlayer.cpp +11 −4 Original line number Diff line number Diff line Loading @@ -576,7 +576,7 @@ void AwesomePlayer::onStreamDone() { notifyListener_l( MEDIA_ERROR, MEDIA_ERROR_UNKNOWN, mStreamDoneStatus); pause_l(); pause_l(true /* at eos */); mFlags |= AT_EOS; return; Loading @@ -600,7 +600,7 @@ void AwesomePlayer::onStreamDone() { LOGV("MEDIA_PLAYBACK_COMPLETE"); notifyListener_l(MEDIA_PLAYBACK_COMPLETE); pause_l(); pause_l(true /* at eos */); mFlags |= AT_EOS; } Loading Loading @@ -738,7 +738,7 @@ status_t AwesomePlayer::pause() { return pause_l(); } status_t AwesomePlayer::pause_l() { status_t AwesomePlayer::pause_l(bool at_eos) { if (!(mFlags & PLAYING)) { return OK; } Loading @@ -746,8 +746,15 @@ status_t AwesomePlayer::pause_l() { cancelPlayerEvents(true /* keepBufferingGoing */); if (mAudioPlayer != NULL) { if (at_eos) { // If we played the audio stream to completion we // want to make sure that all samples remaining in the audio // track's queue are played out. mAudioPlayer->pause(true /* playPendingSamples */); } else { mAudioPlayer->pause(); } } mFlags &= ~PLAYING; Loading media/libstagefright/include/AwesomePlayer.h +1 −1 Original line number Diff line number Diff line Loading @@ -221,7 +221,7 @@ private: status_t setDataSource_l(const sp<MediaExtractor> &extractor); void reset_l(); status_t seekTo_l(int64_t timeUs); status_t pause_l(); status_t pause_l(bool at_eos = false); void initRenderer_l(); void seekAudioIfNecessary_l(); Loading services/audioflinger/AudioFlinger.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -1715,7 +1715,7 @@ uint32_t AudioFlinger::MixerThread::prepareTracks_l(const SortedVector< wp<Track // The first time a track is added we wait // for all its buffers to be filled before processing it mAudioMixer->setActiveTrack(track->name()); if (cblk->framesReady() && (track->isReady() || track->isStopped()) && if (cblk->framesReady() && track->isReady() && !track->isPaused() && !track->isTerminated()) { //LOGV("track %d u=%08x, s=%08x [OK] on thread %p", track->name(), cblk->user, cblk->server, this); Loading Loading @@ -2231,7 +2231,7 @@ bool AudioFlinger::DirectOutputThread::threadLoop() // The first time a track is added we wait // for all its buffers to be filled before processing it if (cblk->framesReady() && (track->isReady() || track->isStopped()) && if (cblk->framesReady() && track->isReady() && !track->isPaused() && !track->isTerminated()) { //LOGV("track %d u=%08x, s=%08x [OK]", track->name(), cblk->user, cblk->server); Loading Loading @@ -3039,7 +3039,7 @@ getNextBuffer_exit: } bool AudioFlinger::PlaybackThread::Track::isReady() const { if (mFillingUpStatus != FS_FILLING) return true; if (mFillingUpStatus != FS_FILLING || isStopped() || isPausing()) return true; if (mCblk->framesReady() >= mCblk->frameCount || (mCblk->flags & CBLK_FORCEREADY_MSK)) { Loading Loading
include/media/stagefright/AudioPlayer.h +3 −3 Original line number Diff line number Diff line Loading @@ -49,11 +49,9 @@ public: status_t start(bool sourceAlreadyStarted = false); void pause(); void pause(bool playPendingSamples = false); void resume(); void stop(); // Returns the timestamp of the last buffer played (in us). int64_t getMediaTimeUs(); Loading Loading @@ -107,6 +105,8 @@ private: int64_t getRealTimeUsLocked() const; void reset(); AudioPlayer(const AudioPlayer &); AudioPlayer &operator=(const AudioPlayer &); }; Loading
media/libstagefright/AudioPlayer.cpp +14 −6 Original line number Diff line number Diff line Loading @@ -55,7 +55,7 @@ AudioPlayer::AudioPlayer( AudioPlayer::~AudioPlayer() { if (mStarted) { stop(); reset(); } } Loading Loading @@ -165,14 +165,22 @@ status_t AudioPlayer::start(bool sourceAlreadyStarted) { return OK; } void AudioPlayer::pause() { void AudioPlayer::pause(bool playPendingSamples) { CHECK(mStarted); if (playPendingSamples) { if (mAudioSink.get() != NULL) { mAudioSink->pause(); mAudioSink->stop(); } else { mAudioTrack->stop(); } } else { if (mAudioSink.get() != NULL) { mAudioSink->pause(); } else { mAudioTrack->pause(); } } } void AudioPlayer::resume() { Loading @@ -185,7 +193,7 @@ void AudioPlayer::resume() { } } void AudioPlayer::stop() { void AudioPlayer::reset() { CHECK(mStarted); if (mAudioSink.get() != NULL) { Loading
media/libstagefright/AwesomePlayer.cpp +11 −4 Original line number Diff line number Diff line Loading @@ -576,7 +576,7 @@ void AwesomePlayer::onStreamDone() { notifyListener_l( MEDIA_ERROR, MEDIA_ERROR_UNKNOWN, mStreamDoneStatus); pause_l(); pause_l(true /* at eos */); mFlags |= AT_EOS; return; Loading @@ -600,7 +600,7 @@ void AwesomePlayer::onStreamDone() { LOGV("MEDIA_PLAYBACK_COMPLETE"); notifyListener_l(MEDIA_PLAYBACK_COMPLETE); pause_l(); pause_l(true /* at eos */); mFlags |= AT_EOS; } Loading Loading @@ -738,7 +738,7 @@ status_t AwesomePlayer::pause() { return pause_l(); } status_t AwesomePlayer::pause_l() { status_t AwesomePlayer::pause_l(bool at_eos) { if (!(mFlags & PLAYING)) { return OK; } Loading @@ -746,8 +746,15 @@ status_t AwesomePlayer::pause_l() { cancelPlayerEvents(true /* keepBufferingGoing */); if (mAudioPlayer != NULL) { if (at_eos) { // If we played the audio stream to completion we // want to make sure that all samples remaining in the audio // track's queue are played out. mAudioPlayer->pause(true /* playPendingSamples */); } else { mAudioPlayer->pause(); } } mFlags &= ~PLAYING; Loading
media/libstagefright/include/AwesomePlayer.h +1 −1 Original line number Diff line number Diff line Loading @@ -221,7 +221,7 @@ private: status_t setDataSource_l(const sp<MediaExtractor> &extractor); void reset_l(); status_t seekTo_l(int64_t timeUs); status_t pause_l(); status_t pause_l(bool at_eos = false); void initRenderer_l(); void seekAudioIfNecessary_l(); Loading
services/audioflinger/AudioFlinger.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -1715,7 +1715,7 @@ uint32_t AudioFlinger::MixerThread::prepareTracks_l(const SortedVector< wp<Track // The first time a track is added we wait // for all its buffers to be filled before processing it mAudioMixer->setActiveTrack(track->name()); if (cblk->framesReady() && (track->isReady() || track->isStopped()) && if (cblk->framesReady() && track->isReady() && !track->isPaused() && !track->isTerminated()) { //LOGV("track %d u=%08x, s=%08x [OK] on thread %p", track->name(), cblk->user, cblk->server, this); Loading Loading @@ -2231,7 +2231,7 @@ bool AudioFlinger::DirectOutputThread::threadLoop() // The first time a track is added we wait // for all its buffers to be filled before processing it if (cblk->framesReady() && (track->isReady() || track->isStopped()) && if (cblk->framesReady() && track->isReady() && !track->isPaused() && !track->isTerminated()) { //LOGV("track %d u=%08x, s=%08x [OK]", track->name(), cblk->user, cblk->server); Loading Loading @@ -3039,7 +3039,7 @@ getNextBuffer_exit: } bool AudioFlinger::PlaybackThread::Track::isReady() const { if (mFillingUpStatus != FS_FILLING) return true; if (mFillingUpStatus != FS_FILLING || isStopped() || isPausing()) return true; if (mCblk->framesReady() >= mCblk->frameCount || (mCblk->flags & CBLK_FORCEREADY_MSK)) { Loading