summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorWei Jia <wjia@google.com>2014-10-10 00:36:16 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-10-10 00:36:16 +0000
commitdc111e8c85dc3e3db4da7a81b0a6cfae2da05c35 (patch)
tree038d6a5b36b622ed4fc62bc39bd01d5cb66e9fce /media
parentf2ec103dc0583c3eef28e9d797ce2d791775b1ae (diff)
parent185a295d4518878d5e2bca7b7c3e51df44492df1 (diff)
downloadframeworks_av-dc111e8c85dc3e3db4da7a81b0a6cfae2da05c35.zip
frameworks_av-dc111e8c85dc3e3db4da7a81b0a6cfae2da05c35.tar.gz
frameworks_av-dc111e8c85dc3e3db4da7a81b0a6cfae2da05c35.tar.bz2
am 185a295d: Merge "NuPlayerRenderer: adjust anchor time correctly for video only case." into lmp-dev
* commit '185a295d4518878d5e2bca7b7c3e51df44492df1': NuPlayerRenderer: adjust anchor time correctly for video only case.
Diffstat (limited to 'media')
-rw-r--r--media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp19
-rw-r--r--media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h1
2 files changed, 19 insertions, 1 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
index d6bf1de..e5c64f6 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
@@ -72,6 +72,7 @@ NuPlayer::Renderer::Renderer(
mHasVideo(false),
mSyncQueues(false),
mPaused(false),
+ mPauseStartedTimeRealUs(-1),
mVideoSampleReceived(false),
mVideoRenderingStarted(false),
mVideoRenderingStartGeneration(0),
@@ -574,7 +575,9 @@ void NuPlayer::Renderer::postDrainVideoQueue() {
if (!mHasAudio) {
mAnchorTimeMediaUs = mediaTimeUs;
mAnchorTimeRealUs = nowUs;
- notifyPosition();
+ if (!mPaused || mVideoSampleReceived) {
+ notifyPosition();
+ }
}
realTimeUs = nowUs;
} else {
@@ -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();
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h
index 4237902..d27c238 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h
@@ -130,6 +130,7 @@ private:
bool mSyncQueues;
bool mPaused;
+ int64_t mPauseStartedTimeRealUs;
bool mVideoSampleReceived;
bool mVideoRenderingStarted;
int32_t mVideoRenderingStartGeneration;