summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
diff options
context:
space:
mode:
authorWei Jia <wjia@google.com>2015-11-19 10:57:15 -0800
committerSteve Kondik <steve@cyngn.com>2015-11-29 22:47:46 -0800
commit46c4173bc9b415b443f2705675dd5785f0c4c46c (patch)
treea4a597881085a953b83169e219f1db8cf7906215 /media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
parentefc362f8ff71c2b8397951c021737a1ef3211446 (diff)
downloadframeworks_av-46c4173bc9b415b443f2705675dd5785f0c4c46c.zip
frameworks_av-46c4173bc9b415b443f2705675dd5785f0c4c46c.tar.gz
frameworks_av-46c4173bc9b415b443f2705675dd5785f0c4c46c.tar.bz2
NuPlayerRenderer: always display the first video frame without delay.
Bug: 25357751 Change-Id: Iffd9af2ddf7626155d98caf086fe209600141585
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp')
-rw-r--r--media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
index 52f99e4..6b2c072 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
@@ -1060,6 +1060,9 @@ void NuPlayer::Renderer::postDrainVideoQueue() {
mMediaClock->updateAnchor(mediaTimeUs, nowUs, mediaTimeUs);
mAnchorTimeMediaUs = mediaTimeUs;
realTimeUs = nowUs;
+ } else if (!mVideoSampleReceived) {
+ // Always render the first video frame.
+ realTimeUs = nowUs;
} else {
realTimeUs = getRealTimeUs(mediaTimeUs, nowUs);
}
@@ -1125,7 +1128,7 @@ void NuPlayer::Renderer::onDrainVideoQueue() {
return;
}
- int64_t nowUs = -1;
+ int64_t nowUs = ALooper::GetNowUs();
int64_t realTimeUs;
if (mFlags & FLAG_REAL_TIME) {
CHECK(entry->mBuffer->meta()->findInt64("timeUs", &realTimeUs));
@@ -1133,16 +1136,12 @@ void NuPlayer::Renderer::onDrainVideoQueue() {
int64_t mediaTimeUs;
CHECK(entry->mBuffer->meta()->findInt64("timeUs", &mediaTimeUs));
- nowUs = ALooper::GetNowUs();
realTimeUs = getRealTimeUs(mediaTimeUs, nowUs);
}
bool tooLate = false;
if (!mPaused) {
- if (nowUs == -1) {
- nowUs = ALooper::GetNowUs();
- }
setVideoLateByUs(nowUs - realTimeUs);
tooLate = (mVideoLateByUs > 40000);
@@ -1166,6 +1165,12 @@ void NuPlayer::Renderer::onDrainVideoQueue() {
}
}
+ // Always render the first video frame while keeping stats on A/V sync.
+ if (!mVideoSampleReceived) {
+ realTimeUs = nowUs;
+ tooLate = false;
+ }
+
entry->mNotifyConsumed->setInt64("timestampNs", realTimeUs * 1000ll);
entry->mNotifyConsumed->setInt32("render", !tooLate);
entry->mNotifyConsumed->post();