summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/httplive/LiveSession.cpp
diff options
context:
space:
mode:
authorLeena Winterrowd <lenhardw@codeaurora.org>2015-01-29 08:31:44 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-01-29 08:31:44 +0000
commita7a1df0589048a675759ebf44f9794b0c613f3fe (patch)
treede53852f6a3e0906d8cefc83ccfcf928d4f16cbb /media/libstagefright/httplive/LiveSession.cpp
parentc1626c8352d0256baa195e5eb804e37c3fd05560 (diff)
parent958a54322ea3ff2ad8ed0ac6e229c90c638f8a7f (diff)
downloadframeworks_av-a7a1df0589048a675759ebf44f9794b0c613f3fe.zip
frameworks_av-a7a1df0589048a675759ebf44f9794b0c613f3fe.tar.gz
frameworks_av-a7a1df0589048a675759ebf44f9794b0c613f3fe.tar.bz2
am 958a5432: am 17460976: stagefright: httplive: Fix deadlock for low duration clips
* commit '958a54322ea3ff2ad8ed0ac6e229c90c638f8a7f': stagefright: httplive: Fix deadlock for low duration clips
Diffstat (limited to 'media/libstagefright/httplive/LiveSession.cpp')
-rw-r--r--media/libstagefright/httplive/LiveSession.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/media/libstagefright/httplive/LiveSession.cpp b/media/libstagefright/httplive/LiveSession.cpp
index 04005bd..4369ac3 100644
--- a/media/libstagefright/httplive/LiveSession.cpp
+++ b/media/libstagefright/httplive/LiveSession.cpp
@@ -145,10 +145,24 @@ status_t LiveSession::dequeueAccessUnit(
}
}
+ int32_t targetDuration = 0;
+ sp<AMessage> meta = packetSource->getLatestEnqueuedMeta();
+ if (meta != NULL) {
+ meta->findInt32("targetDuration", &targetDuration);
+ }
+
+ int64_t targetDurationUs = targetDuration * 1000000ll;
+ if (targetDurationUs == 0 ||
+ targetDurationUs > PlaylistFetcher::kMinBufferedDurationUs) {
+ // Fetchers limit buffering to
+ // min(3 * targetDuration, kMinBufferedDurationUs)
+ targetDurationUs = PlaylistFetcher::kMinBufferedDurationUs;
+ }
+
if (mBuffering[idx]) {
if (mSwitchInProgress
|| packetSource->isFinished(0)
- || packetSource->getEstimatedDurationUs() > 10000000ll) {
+ || packetSource->getEstimatedDurationUs() > targetDurationUs) {
mBuffering[idx] = false;
}
}