diff options
author | Andreas Huber <andih@google.com> | 2010-09-28 11:56:39 -0700 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2010-09-28 11:56:39 -0700 |
commit | ed54ad0f8619ae416b0968ade6248894cbfc4dba (patch) | |
tree | 87a03bed454558ee3dee7826b9fb7e30fdf707b7 /media/libstagefright/AudioPlayer.cpp | |
parent | db6222212528637d8f2afa7f49fc3c8c915bafbe (diff) | |
download | frameworks_av-ed54ad0f8619ae416b0968ade6248894cbfc4dba.zip frameworks_av-ed54ad0f8619ae416b0968ade6248894cbfc4dba.tar.gz frameworks_av-ed54ad0f8619ae416b0968ade6248894cbfc4dba.tar.bz2 |
Instead of constantly polling the AudioPlayer to see if it reached EOS or finished seeking, initiate the notification from the AudioPlayer when the event happens.
Change-Id: I43875b6adaf96d4e982ef3dfc3d6c8f7034ac51d
related-to-bug: 3036592
Diffstat (limited to 'media/libstagefright/AudioPlayer.cpp')
-rw-r--r-- | media/libstagefright/AudioPlayer.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/media/libstagefright/AudioPlayer.cpp b/media/libstagefright/AudioPlayer.cpp index c27cfc8..47a385d 100644 --- a/media/libstagefright/AudioPlayer.cpp +++ b/media/libstagefright/AudioPlayer.cpp @@ -27,9 +27,13 @@ #include <media/stagefright/MediaSource.h> #include <media/stagefright/MetaData.h> +#include "include/AwesomePlayer.h" + namespace android { -AudioPlayer::AudioPlayer(const sp<MediaPlayerBase::AudioSink> &audioSink) +AudioPlayer::AudioPlayer( + const sp<MediaPlayerBase::AudioSink> &audioSink, + AwesomePlayer *observer) : mAudioTrack(NULL), mInputBuffer(NULL), mSampleRate(0), @@ -45,7 +49,8 @@ AudioPlayer::AudioPlayer(const sp<MediaPlayerBase::AudioSink> &audioSink) mIsFirstBuffer(false), mFirstBufferResult(OK), mFirstBuffer(NULL), - mAudioSink(audioSink) { + mAudioSink(audioSink), + mObserver(observer) { } AudioPlayer::~AudioPlayer() { @@ -301,6 +306,9 @@ size_t AudioPlayer::fillBuffer(void *data, size_t size) { } mSeeking = false; + if (mObserver) { + mObserver->postAudioSeekComplete(); + } } } @@ -323,6 +331,10 @@ size_t AudioPlayer::fillBuffer(void *data, size_t size) { Mutex::Autolock autoLock(mLock); if (err != OK) { + if (mObserver && !mReachedEOS) { + mObserver->postAudioEOS(); + } + mReachedEOS = true; mFinalStatus = err; break; |