summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2011-11-30 09:53:40 -0800
committerAndreas Huber <andih@google.com>2011-11-30 09:53:40 -0800
commitea9d51bd710e6739077a3700f27a1c37767a2f6d (patch)
treebd2df5e1d9f4f5a95976779aa7f73d7e4989c6c3 /media/libmediaplayerservice
parent37a153f450cb8550fe64a1bf62366cf5e944d6ab (diff)
parent8a1fac32b307cfa096b343f219d471365b657ad8 (diff)
downloadframeworks_av-ea9d51bd710e6739077a3700f27a1c37767a2f6d.zip
frameworks_av-ea9d51bd710e6739077a3700f27a1c37767a2f6d.tar.gz
frameworks_av-ea9d51bd710e6739077a3700f27a1c37767a2f6d.tar.bz2
resolved conflicts for merge of 3d630e86 to master
Change-Id: I9eb7b7c1668b5f0de85ec8b1e9257cf1ec4d8b9e
Diffstat (limited to 'media/libmediaplayerservice')
-rw-r--r--media/libmediaplayerservice/nuplayer/NuPlayer.cpp15
-rw-r--r--media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp7
2 files changed, 20 insertions, 2 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
index 0059dc8..03aa42e 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
@@ -463,11 +463,24 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) {
{
ALOGV("kWhatReset");
+ if (mRenderer != NULL) {
+ // There's an edge case where the renderer owns all output
+ // buffers and is paused, therefore the decoder will not read
+ // more input data and will never encounter the matching
+ // discontinuity. To avoid this, we resume the renderer.
+
+ if (mFlushingAudio == AWAITING_DISCONTINUITY
+ || mFlushingVideo == AWAITING_DISCONTINUITY) {
+ mRenderer->resume();
+ }
+ }
+
if (mFlushingAudio != NONE || mFlushingVideo != NONE) {
// We're currently flushing, postpone the reset until that's
// completed.
- ALOGV("postponing reset");
+ ALOGV("postponing reset mFlushingAudio=%d, mFlushingVideo=%d",
+ mFlushingAudio, mFlushingVideo);
mResetPostponed = true;
break;
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
index 1731728..d0d9ca6 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
@@ -628,11 +628,16 @@ void NuPlayer::Renderer::onPause() {
mAudioSink->pause();
}
+ ALOGV("now paused audio queue has %d entries, video has %d entries",
+ mAudioQueue.size(), mVideoQueue.size());
+
mPaused = true;
}
void NuPlayer::Renderer::onResume() {
- CHECK(mPaused);
+ if (!mPaused) {
+ return;
+ }
if (mHasAudio) {
mAudioSink->start();