Loading media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +11 −1 Original line number Diff line number Diff line Loading @@ -110,6 +110,7 @@ NuPlayer::Renderer::Renderer( mAnchorTimeMediaUs(-1), mAnchorNumFramesWritten(-1), mVideoLateByUs(0ll), mNextVideoTimeMediaUs(-1), mHasAudio(false), mHasVideo(false), mNotifyCompleteAudio(false), Loading Loading @@ -301,6 +302,7 @@ void NuPlayer::Renderer::flush(bool audio, bool notifyComplete) { mMediaClock->clearAnchor(); mVideoLateByUs = 0; mNextVideoTimeMediaUs = -1; mSyncQueues = false; } Loading Loading @@ -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) { Loading Loading @@ -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); } } } } Loading media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h +1 −0 Original line number Diff line number Diff line Loading @@ -177,6 +177,7 @@ private: int64_t mAnchorTimeMediaUs; int64_t mAnchorNumFramesWritten; int64_t mVideoLateByUs; int64_t mNextVideoTimeMediaUs; bool mHasAudio; bool mHasVideo; Loading Loading
media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +11 −1 Original line number Diff line number Diff line Loading @@ -110,6 +110,7 @@ NuPlayer::Renderer::Renderer( mAnchorTimeMediaUs(-1), mAnchorNumFramesWritten(-1), mVideoLateByUs(0ll), mNextVideoTimeMediaUs(-1), mHasAudio(false), mHasVideo(false), mNotifyCompleteAudio(false), Loading Loading @@ -301,6 +302,7 @@ void NuPlayer::Renderer::flush(bool audio, bool notifyComplete) { mMediaClock->clearAnchor(); mVideoLateByUs = 0; mNextVideoTimeMediaUs = -1; mSyncQueues = false; } Loading Loading @@ -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) { Loading Loading @@ -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); } } } } Loading
media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h +1 −0 Original line number Diff line number Diff line Loading @@ -177,6 +177,7 @@ private: int64_t mAnchorTimeMediaUs; int64_t mAnchorNumFramesWritten; int64_t mVideoLateByUs; int64_t mNextVideoTimeMediaUs; bool mHasAudio; bool mHasVideo; Loading