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

Commit 85b41b0f authored by Chong Zhang's avatar Chong Zhang Committed by Android Git Automerger
Browse files

am 453d633b: Merge "render one video frame after flush even when we\'re paused" into lmp-dev

* commit '453d633b':
  render one video frame after flush even when we're paused
parents 3d640e0a 453d633b
Loading
Loading
Loading
Loading
+28 −15
Original line number Diff line number Diff line
@@ -58,7 +58,8 @@ NuPlayer::Renderer::Renderer(
      mVideoRenderingStartGeneration(0),
      mAudioRenderingStartGeneration(0),
      mLastPositionUpdateUs(-1ll),
      mVideoLateByUs(0ll) {
      mVideoLateByUs(0ll),
      mVideoSampleReceived(false) {
}

NuPlayer::Renderer::~Renderer() {
@@ -491,7 +492,9 @@ int64_t NuPlayer::Renderer::getAudioPendingPlayoutUs() {
}

void NuPlayer::Renderer::postDrainVideoQueue() {
    if (mDrainVideoQueuePending || mSyncQueues || mPaused) {
    if (mDrainVideoQueuePending
            || mSyncQueues
            || (mPaused && mVideoSampleReceived)) {
        return;
    }

@@ -570,8 +573,11 @@ void NuPlayer::Renderer::onDrainVideoQueue() {
        realTimeUs = mediaTimeUs - mAnchorTimeMediaUs + mAnchorTimeRealUs;
    }

    bool tooLate = false;

    if (!mPaused) {
        mVideoLateByUs = ALooper::GetNowUs() - realTimeUs;
    bool tooLate = (mVideoLateByUs > 40000);
        tooLate = (mVideoLateByUs > 40000);

        if (tooLate) {
            ALOGV("video late by %lld us (%.2f secs)",
@@ -581,18 +587,24 @@ void NuPlayer::Renderer::onDrainVideoQueue() {
                    (mFlags & FLAG_REAL_TIME ? realTimeUs :
                    (realTimeUs + mAnchorTimeMediaUs - mAnchorTimeRealUs)) / 1E6);
        }
    } else {
        mVideoLateByUs = 0ll;
    }

    entry->mNotifyConsumed->setInt32("render", !tooLate);
    entry->mNotifyConsumed->post();
    mVideoQueue.erase(mVideoQueue.begin());
    entry = NULL;

    mVideoSampleReceived = true;

    if (!mPaused) {
        if (!mVideoRenderingStarted) {
            mVideoRenderingStarted = true;
            notifyVideoRenderingStart();
        }

        notifyIfMediaRenderingStarted();
    }

    notifyPosition();
}
@@ -791,6 +803,7 @@ void NuPlayer::Renderer::onFlush(const sp<AMessage> &msg) {
        prepareForMediaRenderingStart();
    }

    mVideoSampleReceived = false;
    notifyFlushComplete(audio);
}

+1 −0
Original line number Diff line number Diff line
@@ -119,6 +119,7 @@ private:
    bool mSyncQueues;

    bool mPaused;
    bool mVideoSampleReceived;
    bool mVideoRenderingStarted;
    int32_t mVideoRenderingStartGeneration;
    int32_t mAudioRenderingStartGeneration;