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

Commit 5dac87b0 authored by Andreas Huber's avatar Andreas Huber
Browse files

Make sure we post a video event when seeking after seeing video EOS before.

Change-Id: I513bf94c0732a85324160977ea5723d8aafd6aba
related-to-bug: 3316960
parent 75ae0de8
Loading
Loading
Loading
Loading
+17 −2
Original line number Diff line number Diff line
@@ -575,7 +575,7 @@ void AwesomePlayer::onVideoLagUpdate() {
    int64_t audioTimeUs = mAudioPlayer->getMediaTimeUs();
    int64_t videoLateByUs = audioTimeUs - mVideoTimeUs;

    if (videoLateByUs > 300000ll) {
    if (!(mFlags & VIDEO_AT_EOS) && videoLateByUs > 300000ll) {
        LOGV("video late by %lld ms.", videoLateByUs / 1000ll);

        notifyListener_l(
@@ -1052,7 +1052,8 @@ status_t AwesomePlayer::getPosition(int64_t *positionUs) {
    }
    else if (mSeeking != NO_SEEK) {
        *positionUs = mSeekTimeUs;
    } else if (mVideoSource != NULL) {
    } else if (mVideoSource != NULL
            && (mAudioPlayer == NULL || !(mFlags & VIDEO_AT_EOS))) {
        Mutex::Autolock autoLock(mMiscStateLock);
        *positionUs = mVideoTimeUs;
    } else if (mAudioPlayer != NULL) {
@@ -1094,6 +1095,14 @@ status_t AwesomePlayer::seekTo_l(int64_t timeUs) {
        play_l();
    }

    if ((mFlags & PLAYING) && mVideoSource != NULL && (mFlags & VIDEO_AT_EOS)) {
        // Video playback completed before, there's no pending
        // video event right now. In order for this new seek
        // to be honored, we need to post one.

        postVideoEvent_l();
    }

    mSeeking = SEEK;
    mSeekNotificationSent = false;
    mSeekTimeUs = timeUs;
@@ -1277,6 +1286,7 @@ void AwesomePlayer::finishSeekIfNecessary(int64_t videoTimeUs) {

        mAudioPlayer->seekTo(videoTimeUs < 0 ? mSeekTimeUs : videoTimeUs);
        mWatchForAudioSeekComplete = true;
        mWatchForAudioEOS = true;
    } else if (!mSeekNotificationSent) {
        // If we're playing video only, report seek complete now,
        // otherwise audio player will notify us later.
@@ -1367,6 +1377,11 @@ void AwesomePlayer::onVideoEvent() {
                }
                finishSeekIfNecessary(-1);

                if (mAudioPlayer != NULL
                        && !(mFlags & (AUDIO_RUNNING | SEEK_PREVIEW))) {
                    startAudioPlayer_l();
                }

                mFlags |= VIDEO_AT_EOS;
                postStreamDoneEvent_l(err);
                return;