summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPraveen Chavan <pchavan@codeaurora.org>2015-03-19 01:47:20 -0700
committerLinux Build Service Account <lnxbuild@localhost>2015-10-06 03:24:10 -0600
commitcd422ac2630e5b0170326dcb4bafe248be1075b2 (patch)
tree1c37d049f52342f278126560050745ac1d4f8bfc
parentce35c5f29d910d4bee3209639132b5c11a8db297 (diff)
downloadframeworks_av-cd422ac2630e5b0170326dcb4bafe248be1075b2.zip
frameworks_av-cd422ac2630e5b0170326dcb4bafe248be1075b2.tar.gz
frameworks_av-cd422ac2630e5b0170326dcb4bafe248be1075b2.tar.bz2
NuPlayerRenderer: Update position of AV stream even after audio EOS
For AV streams with shorter audio, anchorTime does not update beyond audio EOS causing MediaPlayer.getCurrentPosition to return the same fixed value (progress bar does not update). Allow updating the current position in renderer beyond the anchorTime to update the player's position if audio stream is present. CRs-Fixed: 808073 Change-Id: I75625d24a6c155ff12f27fd0848503657e9219aa
-rw-r--r--media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp7
-rw-r--r--media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h1
2 files changed, 7 insertions, 1 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
index 2314d39..9a33eb5 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
@@ -102,6 +102,7 @@ NuPlayer::Renderer::Renderer(
mVideoLateByUs(0ll),
mHasAudio(false),
mHasVideo(false),
+ mFoundAudioEOS(false),
mNotifyCompleteAudio(false),
mNotifyCompleteVideo(false),
mSyncQueues(false),
@@ -311,7 +312,8 @@ void NuPlayer::Renderer::setVideoFrameRate(float fps) {
// Called on any threads.
status_t NuPlayer::Renderer::getCurrentPosition(int64_t *mediaUs) {
- return mMediaClock->getMediaTime(ALooper::GetNowUs(), mediaUs);
+ return mMediaClock->getMediaTime(
+ ALooper::GetNowUs(), mediaUs, (mHasAudio && mFoundAudioEOS));
}
void NuPlayer::Renderer::clearAudioFirstAnchorTime_l() {
@@ -1145,6 +1147,9 @@ void NuPlayer::Renderer::notifyVideoRenderingStart() {
}
void NuPlayer::Renderer::notifyEOS(bool audio, status_t finalResult, int64_t delayUs) {
+ if (audio) {
+ mFoundAudioEOS = true;
+ }
sp<AMessage> notify = mNotify->dup();
notify->setInt32("what", kWhatEOS);
notify->setInt32("audio", static_cast<int32_t>(audio));
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h
index 3e65649..c83185e 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h
@@ -162,6 +162,7 @@ private:
int64_t mVideoLateByUs;
bool mHasAudio;
bool mHasVideo;
+ bool mFoundAudioEOS;
bool mNotifyCompleteAudio;
bool mNotifyCompleteVideo;