Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8b6c5410 authored by Andreas Huber's avatar Andreas Huber Committed by Android (Google) Code Review
Browse files

Merge "Properly forward errors returned by AudioTrack up to the player."

parents 3b889f52 62eac008
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -47,7 +47,7 @@ public:
    // Return time in us.
    virtual int64_t getRealTimeUs();

    void start();
    status_t start();

    void pause();
    void resume();
+20 −4
Original line number Diff line number Diff line
@@ -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() {
+10 −1
Original line number Diff line number Diff line
@@ -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;