summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
diff options
context:
space:
mode:
authorChong Zhang <chz@google.com>2015-01-16 00:24:48 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-01-16 00:24:48 +0000
commit4d4ea7f7ca04cfe70ecf6f35658389f52ae6d3c1 (patch)
tree65233f48967b2de8c1ce6ac794db49c59f9e6110 /media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
parent21291a420e11ccdf23e955c3dc390304230ddce3 (diff)
parentcec7febc48ff76b293ace0cc12a6288f13f72293 (diff)
downloadframeworks_av-4d4ea7f7ca04cfe70ecf6f35658389f52ae6d3c1.zip
frameworks_av-4d4ea7f7ca04cfe70ecf6f35658389f52ae6d3c1.tar.gz
frameworks_av-4d4ea7f7ca04cfe70ecf6f35658389f52ae6d3c1.tar.bz2
Merge "do not use paused postition if it's not available" into lmp-mr1-dev
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp')
-rw-r--r--media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
index 57fcfe5..80b8493 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
@@ -77,7 +77,7 @@ NuPlayer::Renderer::Renderer(
mNotifyCompleteVideo(false),
mSyncQueues(false),
mPaused(false),
- mPausePositionMediaTimeUs(0),
+ mPausePositionMediaTimeUs(-1),
mVideoSampleReceived(false),
mVideoRenderingStarted(false),
mVideoRenderingStartGeneration(0),
@@ -210,7 +210,7 @@ status_t NuPlayer::Renderer::getCurrentPositionOnLooper(
// Called either with mLock acquired or on renderer's thread.
bool NuPlayer::Renderer::getCurrentPositionIfPaused_l(int64_t *mediaUs) {
- if (!mPaused) {
+ if (!mPaused || mPausePositionMediaTimeUs < 0ll) {
return false;
}
*mediaUs = mPausePositionMediaTimeUs;
@@ -1232,6 +1232,12 @@ void NuPlayer::Renderer::onPause() {
if (getCurrentPositionFromAnchor(
&currentPositionUs, ALooper::GetNowUs()) == OK) {
mPausePositionMediaTimeUs = currentPositionUs;
+ } else {
+ // Set paused position to -1 (unavailabe) if we don't have anchor time
+ // This could happen if client does a seekTo() immediately followed by
+ // pause(). Renderer will be flushed with anchor time cleared. We don't
+ // want to leave stale value in mPausePositionMediaTimeUs.
+ mPausePositionMediaTimeUs = -1;
}
{
Mutex::Autolock autoLock(mLock);