diff options
author | Andreas Huber <andih@google.com> | 2010-01-29 13:24:58 -0800 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2010-01-29 13:24:58 -0800 |
commit | 88c030e0e0152791ff74f90249f55fce01371198 (patch) | |
tree | ccdf07c2234d110d8cbbe1dd6be9d0726bbe325b /media/libstagefright/AudioPlayer.cpp | |
parent | 0fc863291096e9818fa83f8edc459f7f9c9cf794 (diff) | |
download | frameworks_av-88c030e0e0152791ff74f90249f55fce01371198.zip frameworks_av-88c030e0e0152791ff74f90249f55fce01371198.tar.gz frameworks_av-88c030e0e0152791ff74f90249f55fce01371198.tar.bz2 |
Properly forward errors returned by AudioTrack up to the player.
related-to-bug: 2300197
Diffstat (limited to 'media/libstagefright/AudioPlayer.cpp')
-rw-r--r-- | media/libstagefright/AudioPlayer.cpp | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/media/libstagefright/AudioPlayer.cpp b/media/libstagefright/AudioPlayer.cpp index 14842c0..efe7ebb 100644 --- a/media/libstagefright/AudioPlayer.cpp +++ b/media/libstagefright/AudioPlayer.cpp @@ -58,12 +58,15 @@ void AudioPlayer::setSource(const sp<MediaSource> &source) { mSource = source; } -void AudioPlayer::start() { +status_t AudioPlayer::start() { CHECK(!mStarted); CHECK(mSource != NULL); status_t err = mSource->start(); - CHECK_EQ(err, OK); + + if (err != OK) { + return err; + } sp<MetaData> format = mSource->getFormat(); const char *mime; @@ -83,7 +86,11 @@ void AudioPlayer::start() { mSampleRate, numChannels, AudioSystem::PCM_16_BIT, DEFAULT_AUDIOSINK_BUFFERCOUNT, &AudioPlayer::AudioSinkCallback, this); - CHECK_EQ(err, OK); + if (err != OK) { + mSource->stop(); + + return err; + } mLatencyUs = (int64_t)mAudioSink->latency() * 1000; mFrameSize = mAudioSink->frameSize(); @@ -97,7 +104,14 @@ void AudioPlayer::start() { : AudioSystem::CHANNEL_OUT_MONO, 8192, 0, &AudioCallback, this, 0); - CHECK_EQ(mAudioTrack->initCheck(), OK); + if (mAudioTrack->initCheck() != OK) { + delete mAudioTrack; + mAudioTrack = NULL; + + mSource->stop(); + + return mAudioTrack->initCheck(); + } mLatencyUs = (int64_t)mAudioTrack->latency() * 1000; mFrameSize = mAudioTrack->frameSize(); @@ -106,6 +120,8 @@ void AudioPlayer::start() { } mStarted = true; + + return OK; } void AudioPlayer::pause() { |