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

Commit dc293e34 authored by Wei Jia's avatar Wei Jia
Browse files

NuPlayerRenderer: update max media time when audio EOS is reached.

This allows the just scheduled video frame to be rendered when its timestamp
is larger than max audio media time.
Test: media post-submit tests passed
Bug: 67854291
Bug: 65204641

Change-Id: Iadee5690b8895b1d9be3fdefcafe3535837d12e8
parent 92b01549
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -110,6 +110,7 @@ NuPlayer::Renderer::Renderer(
      mAnchorTimeMediaUs(-1),
      mAnchorNumFramesWritten(-1),
      mVideoLateByUs(0ll),
      mNextVideoTimeMediaUs(-1),
      mHasAudio(false),
      mHasVideo(false),
      mNotifyCompleteAudio(false),
@@ -301,6 +302,7 @@ void NuPlayer::Renderer::flush(bool audio, bool notifyComplete) {

        mMediaClock->clearAnchor();
        mVideoLateByUs = 0;
        mNextVideoTimeMediaUs = -1;
        mSyncQueues = false;
    }

@@ -1277,9 +1279,10 @@ void NuPlayer::Renderer::postDrainVideoQueue() {
            mAnchorTimeMediaUs = mediaTimeUs;
        }
    }
    mNextVideoTimeMediaUs = mediaTimeUs + 100000;
    if (!mHasAudio) {
        // smooth out videos >= 10fps
        mMediaClock->updateMaxTimeMedia(mediaTimeUs + 100000);
        mMediaClock->updateMaxTimeMedia(mNextVideoTimeMediaUs);
    }

    if (!mVideoSampleReceived || mediaTimeUs < mAudioFirstAnchorTimeMediaUs) {
@@ -1411,6 +1414,13 @@ void NuPlayer::Renderer::notifyEOS_l(bool audio, status_t finalResult, int64_t d
        // Video might outlive audio. Clear anchor to enable video only case.
        mAnchorTimeMediaUs = -1;
        mHasAudio = false;
        if (mNextVideoTimeMediaUs >= 0) {
            int64_t mediaUs = 0;
            mMediaClock->getMediaTime(ALooper::GetNowUs(), &mediaUs);
            if (mNextVideoTimeMediaUs > mediaUs) {
                mMediaClock->updateMaxTimeMedia(mNextVideoTimeMediaUs);
            }
        }
    }
}

+1 −0
Original line number Diff line number Diff line
@@ -177,6 +177,7 @@ private:
    int64_t mAnchorTimeMediaUs;
    int64_t mAnchorNumFramesWritten;
    int64_t mVideoLateByUs;
    int64_t mNextVideoTimeMediaUs;
    bool mHasAudio;
    bool mHasVideo;