diff options
author | Andreas Huber <andih@google.com> | 2010-02-09 16:59:18 -0800 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2010-02-10 10:20:34 -0800 |
commit | 7d5b8a70c28c0d5746a600467b2887822dbff88e (patch) | |
tree | 886d7439311c8d76f00694123c06d3e21edb54b1 /media/libstagefright/AudioPlayer.cpp | |
parent | 316f8352846a1470b0ffd1b94ac1ec535922a9f6 (diff) | |
download | frameworks_av-7d5b8a70c28c0d5746a600467b2887822dbff88e.zip frameworks_av-7d5b8a70c28c0d5746a600467b2887822dbff88e.tar.gz frameworks_av-7d5b8a70c28c0d5746a600467b2887822dbff88e.tar.bz2 |
Implementation of stagefright-enabled MediaPlayerService::decode functionality
related-to-bug: 2359268
Diffstat (limited to 'media/libstagefright/AudioPlayer.cpp')
-rw-r--r-- | media/libstagefright/AudioPlayer.cpp | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/media/libstagefright/AudioPlayer.cpp b/media/libstagefright/AudioPlayer.cpp index 4926920..12d7ee2 100644 --- a/media/libstagefright/AudioPlayer.cpp +++ b/media/libstagefright/AudioPlayer.cpp @@ -187,12 +187,12 @@ bool AudioPlayer::reachedEOS() { } // static -void AudioPlayer::AudioSinkCallback( +size_t AudioPlayer::AudioSinkCallback( MediaPlayerBase::AudioSink *audioSink, void *buffer, size_t size, void *cookie) { AudioPlayer *me = (AudioPlayer *)cookie; - me->fillBuffer(buffer, size); + return me->fillBuffer(buffer, size); } void AudioPlayer::AudioCallback(int event, void *info) { @@ -201,17 +201,18 @@ void AudioPlayer::AudioCallback(int event, void *info) { } AudioTrack::Buffer *buffer = (AudioTrack::Buffer *)info; - fillBuffer(buffer->raw, buffer->size); + size_t numBytesWritten = fillBuffer(buffer->raw, buffer->size); + + buffer->size = numBytesWritten; } -void AudioPlayer::fillBuffer(void *data, size_t size) { +size_t AudioPlayer::fillBuffer(void *data, size_t size) { if (mNumFramesPlayed == 0) { LOGV("AudioCallback"); } if (mReachedEOS) { - memset(data, 0, size); - return; + return 0; } size_t size_done = 0; @@ -244,7 +245,6 @@ void AudioPlayer::fillBuffer(void *data, size_t size) { if (err != OK) { mReachedEOS = true; - memset((char *)data + size_done, 0, size_remaining); break; } @@ -285,7 +285,9 @@ void AudioPlayer::fillBuffer(void *data, size_t size) { } Mutex::Autolock autoLock(mLock); - mNumFramesPlayed += size / mFrameSize; + mNumFramesPlayed += size_done / mFrameSize; + + return size_done; } int64_t AudioPlayer::getRealTimeUs() { |