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

Commit a458719b authored by Andreas Huber's avatar Andreas Huber Committed by Android Git Automerger
Browse files

am 56ee1080: am 17bc4f65: Merge "Make sure to call AudioTrack::stop() instead...

am 56ee1080: am 17bc4f65: Merge "Make sure to call AudioTrack::stop() instead of AudioTrack::pause() after submitting all samples to AudioTrack to make sure those remaining samples are actually played out." into gingerbread

Merge commit '56ee1080'

* commit '56ee1080':
  Make sure to call AudioTrack::stop() instead of AudioTrack::pause() after submitting all samples to AudioTrack to make sure those remaining samples are actually played out.
parents c5610a4c 56ee1080
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -49,11 +49,9 @@ public:


    status_t start(bool sourceAlreadyStarted = false);
    status_t start(bool sourceAlreadyStarted = false);


    void pause();
    void pause(bool playPendingSamples = false);
    void resume();
    void resume();


    void stop();

    // Returns the timestamp of the last buffer played (in us).
    // Returns the timestamp of the last buffer played (in us).
    int64_t getMediaTimeUs();
    int64_t getMediaTimeUs();


@@ -107,6 +105,8 @@ private:


    int64_t getRealTimeUsLocked() const;
    int64_t getRealTimeUsLocked() const;


    void reset();

    AudioPlayer(const AudioPlayer &);
    AudioPlayer(const AudioPlayer &);
    AudioPlayer &operator=(const AudioPlayer &);
    AudioPlayer &operator=(const AudioPlayer &);
};
};
+14 −6
Original line number Original line Diff line number Diff line
@@ -55,7 +55,7 @@ AudioPlayer::AudioPlayer(


AudioPlayer::~AudioPlayer() {
AudioPlayer::~AudioPlayer() {
    if (mStarted) {
    if (mStarted) {
        stop();
        reset();
    }
    }
}
}


@@ -165,14 +165,22 @@ status_t AudioPlayer::start(bool sourceAlreadyStarted) {
    return OK;
    return OK;
}
}


void AudioPlayer::pause() {
void AudioPlayer::pause(bool playPendingSamples) {
    CHECK(mStarted);
    CHECK(mStarted);


    if (playPendingSamples) {
        if (mAudioSink.get() != NULL) {
        if (mAudioSink.get() != NULL) {
        mAudioSink->pause();
            mAudioSink->stop();
        } else {
        } else {
            mAudioTrack->stop();
            mAudioTrack->stop();
        }
        }
    } else {
        if (mAudioSink.get() != NULL) {
            mAudioSink->pause();
        } else {
            mAudioTrack->pause();
        }
    }
}
}


void AudioPlayer::resume() {
void AudioPlayer::resume() {
@@ -185,7 +193,7 @@ void AudioPlayer::resume() {
    }
    }
}
}


void AudioPlayer::stop() {
void AudioPlayer::reset() {
    CHECK(mStarted);
    CHECK(mStarted);


    if (mAudioSink.get() != NULL) {
    if (mAudioSink.get() != NULL) {
+11 −4
Original line number Original line Diff line number Diff line
@@ -579,7 +579,7 @@ void AwesomePlayer::onStreamDone() {
        notifyListener_l(
        notifyListener_l(
                MEDIA_ERROR, MEDIA_ERROR_UNKNOWN, mStreamDoneStatus);
                MEDIA_ERROR, MEDIA_ERROR_UNKNOWN, mStreamDoneStatus);


        pause_l();
        pause_l(true /* at eos */);


        mFlags |= AT_EOS;
        mFlags |= AT_EOS;
        return;
        return;
@@ -603,7 +603,7 @@ void AwesomePlayer::onStreamDone() {
        LOGV("MEDIA_PLAYBACK_COMPLETE");
        LOGV("MEDIA_PLAYBACK_COMPLETE");
        notifyListener_l(MEDIA_PLAYBACK_COMPLETE);
        notifyListener_l(MEDIA_PLAYBACK_COMPLETE);


        pause_l();
        pause_l(true /* at eos */);


        mFlags |= AT_EOS;
        mFlags |= AT_EOS;
    }
    }
@@ -752,7 +752,7 @@ status_t AwesomePlayer::pause() {
    return pause_l();
    return pause_l();
}
}


status_t AwesomePlayer::pause_l() {
status_t AwesomePlayer::pause_l(bool at_eos) {
    if (!(mFlags & PLAYING)) {
    if (!(mFlags & PLAYING)) {
        return OK;
        return OK;
    }
    }
@@ -760,8 +760,15 @@ status_t AwesomePlayer::pause_l() {
    cancelPlayerEvents(true /* keepBufferingGoing */);
    cancelPlayerEvents(true /* keepBufferingGoing */);


    if (mAudioPlayer != NULL) {
    if (mAudioPlayer != NULL) {
        if (at_eos) {
            // If we played the audio stream to completion we
            // want to make sure that all samples remaining in the audio
            // track's queue are played out.
            mAudioPlayer->pause(true /* playPendingSamples */);
        } else {
            mAudioPlayer->pause();
            mAudioPlayer->pause();
        }
        }
    }


    mFlags &= ~PLAYING;
    mFlags &= ~PLAYING;


+1 −1
Original line number Original line Diff line number Diff line
@@ -223,7 +223,7 @@ private:
    status_t setDataSource_l(const sp<MediaExtractor> &extractor);
    status_t setDataSource_l(const sp<MediaExtractor> &extractor);
    void reset_l();
    void reset_l();
    status_t seekTo_l(int64_t timeUs);
    status_t seekTo_l(int64_t timeUs);
    status_t pause_l();
    status_t pause_l(bool at_eos = false);
    void initRenderer_l();
    void initRenderer_l();
    void notifyVideoSize_l();
    void notifyVideoSize_l();
    void seekAudioIfNecessary_l();
    void seekAudioIfNecessary_l();