Merge "Properly forward errors returned by AudioTrack up to the player."
This commit is contained in:
committed by
Android (Google) Code Review
commit
8b6c541097
@@ -47,7 +47,7 @@ public:
|
||||
// Return time in us.
|
||||
virtual int64_t getRealTimeUs();
|
||||
|
||||
void start();
|
||||
status_t start();
|
||||
|
||||
void pause();
|
||||
void resume();
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -378,7 +378,16 @@ status_t AwesomePlayer::play() {
|
||||
&AwesomePlayer::AudioNotify, this);
|
||||
|
||||
mAudioPlayer->setSource(mAudioSource);
|
||||
mAudioPlayer->start();
|
||||
status_t err = mAudioPlayer->start();
|
||||
|
||||
if (err != OK) {
|
||||
delete mAudioPlayer;
|
||||
mAudioPlayer = NULL;
|
||||
|
||||
mFlags &= ~(PLAYING | FIRST_FRAME);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
delete mTimeSource;
|
||||
mTimeSource = mAudioPlayer;
|
||||
|
||||
Reference in New Issue
Block a user