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

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

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

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 '17bc4f65' into gingerbread-plus-aosp

* commit '17bc4f65':
  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 cfc80bd5 17bc4f65
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -49,11 +49,9 @@ public:

    status_t start(bool sourceAlreadyStarted = false);

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

    void stop();

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

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

    int64_t getRealTimeUsLocked() const;

    void reset();

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

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

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

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

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

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

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

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

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

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

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

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

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

    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();
        }
    }

    mFlags &= ~PLAYING;

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