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

Commit bbe1ed45 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 1846096f 88c030e0
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;