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

Commit 185a295d authored by Wei Jia's avatar Wei Jia Committed by Android (Google) Code Review
Browse files

Merge "NuPlayerRenderer: adjust anchor time correctly for video only case." into lmp-dev

parents af238382 49966fff
Loading
Loading
Loading
Loading
+18 −1
Original line number Diff line number Diff line
@@ -72,6 +72,7 @@ NuPlayer::Renderer::Renderer(
      mHasVideo(false),
      mSyncQueues(false),
      mPaused(false),
      mPauseStartedTimeRealUs(-1),
      mVideoSampleReceived(false),
      mVideoRenderingStarted(false),
      mVideoRenderingStartGeneration(0),
@@ -574,8 +575,10 @@ void NuPlayer::Renderer::postDrainVideoQueue() {
            if (!mHasAudio) {
                mAnchorTimeMediaUs = mediaTimeUs;
                mAnchorTimeRealUs = nowUs;
                if (!mPaused || mVideoSampleReceived) {
                    notifyPosition();
                }
            }
            realTimeUs = nowUs;
        } else {
            realTimeUs =
@@ -645,6 +648,10 @@ void NuPlayer::Renderer::onDrainVideoQueue() {
        }
    } else {
        mVideoLateByUs = 0ll;
        if (!mHasAudio && !mVideoSampleReceived) {
            mAnchorTimeMediaUs = -1;
            mAnchorTimeRealUs = -1;
        }
    }

    entry->mNotifyConsumed->setInt64("timestampNs", realTimeUs * 1000ll);
@@ -830,6 +837,9 @@ void NuPlayer::Renderer::onFlush(const sp<AMessage> &msg) {
    {
         Mutex::Autolock autoLock(mLock);
         syncQueuesDone_l();
         if (!mHasAudio) {
             mPauseStartedTimeRealUs = -1;
         }
    }

    ALOGV("flushing %s", audio ? "audio" : "video");
@@ -980,6 +990,9 @@ void NuPlayer::Renderer::onPause() {
        ++mVideoQueueGeneration;
        prepareForMediaRenderingStart();
        mPaused = true;
        if (!mHasAudio) {
            mPauseStartedTimeRealUs = ALooper::GetNowUs();
        }
    }

    mDrainAudioQueuePending = false;
@@ -1008,6 +1021,10 @@ void NuPlayer::Renderer::onResume() {

    Mutex::Autolock autoLock(mLock);
    mPaused = false;
    if (!mHasAudio && mPauseStartedTimeRealUs != -1) {
        mAnchorTimeRealUs += ALooper::GetNowUs() - mPauseStartedTimeRealUs;
        mPauseStartedTimeRealUs = -1;
    }

    if (!mAudioQueue.empty()) {
        postDrainAudioQueue_l();
+1 −0
Original line number Diff line number Diff line
@@ -130,6 +130,7 @@ private:
    bool mSyncQueues;

    bool mPaused;
    int64_t mPauseStartedTimeRealUs;
    bool mVideoSampleReceived;
    bool mVideoRenderingStarted;
    int32_t mVideoRenderingStartGeneration;