diff options
Diffstat (limited to 'media/libstagefright/AudioPlayer.cpp')
-rw-r--r-- | media/libstagefright/AudioPlayer.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/media/libstagefright/AudioPlayer.cpp b/media/libstagefright/AudioPlayer.cpp index d7e3f66..4280683 100644 --- a/media/libstagefright/AudioPlayer.cpp +++ b/media/libstagefright/AudioPlayer.cpp @@ -47,6 +47,12 @@ AudioPlayer::~AudioPlayer() { } } +void AudioPlayer::setListenerCallback( + void (*notify)(void *cookie, int what), void *cookie) { + mListenerCallback = notify; + mListenerCookie = cookie; +} + void AudioPlayer::setSource(const sp<MediaSource> &source) { CHECK_EQ(mSource, NULL); mSource = source; @@ -195,7 +201,6 @@ void AudioPlayer::fillBuffer(void *data, size_t size) { mInputBuffer->release(); mInputBuffer = NULL; } - mSeeking = false; } } @@ -205,7 +210,19 @@ void AudioPlayer::fillBuffer(void *data, size_t size) { CHECK((err == OK && mInputBuffer != NULL) || (err != OK && mInputBuffer == NULL)); + if (mSeeking) { + mSeeking = false; + + if (mListenerCallback) { + (*mListenerCallback)(mListenerCookie, SEEK_COMPLETE); + } + } + if (err != OK) { + if (mListenerCallback) { + (*mListenerCallback)(mListenerCookie, REACHED_EOS); + } + memset((char *)data + size_done, 0, size_remaining); break; } |