summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/NuCachedSource2.cpp
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2010-11-11 15:37:17 -0800
committerAndreas Huber <andih@google.com>2010-11-11 15:37:17 -0800
commit10b920cd99a0c3eff54768d9798504a022cce4db (patch)
treecf3cb7e1b2c34eaef84dc8861495ef2a06b7063a /media/libstagefright/NuCachedSource2.cpp
parentb38caa5536d3db99f97ef3755ecd42e098cbbf9f (diff)
downloadframeworks_base-10b920cd99a0c3eff54768d9798504a022cce4db.zip
frameworks_base-10b920cd99a0c3eff54768d9798504a022cce4db.tar.gz
frameworks_base-10b920cd99a0c3eff54768d9798504a022cce4db.tar.bz2
Make sure the prefetcher is actively fetching data if we pause playback due to cache underrun.
Change-Id: Id5f4b7a0387137380dcd39995390a8e0d084b4b3 Conflicts: media/libstagefright/AwesomePlayer.cpp
Diffstat (limited to 'media/libstagefright/NuCachedSource2.cpp')
-rw-r--r--media/libstagefright/NuCachedSource2.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/media/libstagefright/NuCachedSource2.cpp b/media/libstagefright/NuCachedSource2.cpp
index a69c396..4a2402b 100644
--- a/media/libstagefright/NuCachedSource2.cpp
+++ b/media/libstagefright/NuCachedSource2.cpp
@@ -325,15 +325,17 @@ void NuCachedSource2::onRead(const sp<AMessage> &msg) {
mCondition.signal();
}
-void NuCachedSource2::restartPrefetcherIfNecessary_l() {
+void NuCachedSource2::restartPrefetcherIfNecessary_l(
+ bool ignoreLowWaterThreshold) {
static const size_t kGrayArea = 256 * 1024;
if (mFetching || mFinalStatus != OK) {
return;
}
- if (mCacheOffset + mCache->totalSize() - mLastAccessPos
- >= kLowWaterThreshold) {
+ if (!ignoreLowWaterThreshold
+ && mCacheOffset + mCache->totalSize() - mLastAccessPos
+ >= kLowWaterThreshold) {
return;
}
@@ -510,6 +512,12 @@ void NuCachedSource2::onSuspend() {
mSuspended = true;
}
+void NuCachedSource2::resumeFetchingIfNecessary() {
+ Mutex::Autolock autoLock(mLock);
+
+ restartPrefetcherIfNecessary_l(true /* ignore low water threshold */);
+}
+
DecryptHandle* NuCachedSource2::DrmInitialization(DrmManagerClient* client) {
return mSource->DrmInitialization(client);
}