diff options
author | Leena Winterrowd <lenhardw@codeaurora.org> | 2015-01-29 08:31:44 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-01-29 08:31:44 +0000 |
commit | a7a1df0589048a675759ebf44f9794b0c613f3fe (patch) | |
tree | de53852f6a3e0906d8cefc83ccfcf928d4f16cbb /media/libstagefright/httplive | |
parent | c1626c8352d0256baa195e5eb804e37c3fd05560 (diff) | |
parent | 958a54322ea3ff2ad8ed0ac6e229c90c638f8a7f (diff) | |
download | frameworks_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')
-rw-r--r-- | media/libstagefright/httplive/LiveSession.cpp | 16 | ||||
-rw-r--r-- | media/libstagefright/httplive/PlaylistFetcher.h | 3 |
2 files changed, 17 insertions, 2 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; } } diff --git a/media/libstagefright/httplive/PlaylistFetcher.h b/media/libstagefright/httplive/PlaylistFetcher.h index 76cc852..b27881b 100644 --- a/media/libstagefright/httplive/PlaylistFetcher.h +++ b/media/libstagefright/httplive/PlaylistFetcher.h @@ -34,6 +34,8 @@ struct M3UParser; class String8; struct PlaylistFetcher : public AHandler { + static const int64_t kMinBufferedDurationUs; + enum { kWhatStarted, kWhatPaused, @@ -92,7 +94,6 @@ private: kWhatDownloadNext = 'dlnx', }; - static const int64_t kMinBufferedDurationUs; static const int64_t kMaxMonitorDelayUs; static const int32_t kDownloadBlockSize; static const int32_t kNumSkipFrames; |