summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/AudioPlayer.cpp
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2010-01-29 13:24:58 -0800
committerAndreas Huber <andih@google.com>2010-01-29 13:24:58 -0800
commit88c030e0e0152791ff74f90249f55fce01371198 (patch)
treeccdf07c2234d110d8cbbe1dd6be9d0726bbe325b /media/libstagefright/AudioPlayer.cpp
parent0fc863291096e9818fa83f8edc459f7f9c9cf794 (diff)
downloadframeworks_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.cpp24
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() {