summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2011-01-06 16:32:05 -0800
committerAndreas Huber <andih@google.com>2011-01-06 16:32:05 -0800
commitba572aaea62ba5d220891ff58642ccee3ad20dec (patch)
tree5e4b127b1993970431021a6b63619547f9f5d416 /media
parentf25410ed9695f3f07ce0302232fa6e1985ffffd7 (diff)
downloadframeworks_base-ba572aaea62ba5d220891ff58642ccee3ad20dec.zip
frameworks_base-ba572aaea62ba5d220891ff58642ccee3ad20dec.tar.gz
frameworks_base-ba572aaea62ba5d220891ff58642ccee3ad20dec.tar.bz2
If the stream for the new bandwidth doesn't have the segment we're looking for...
go back to the previous bandwidth' stream. Change-Id: I3477cb6932102883509a7cbe9fb2b3bb02dac8c6
Diffstat (limited to 'media')
-rw-r--r--media/libstagefright/httplive/LiveSession.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/media/libstagefright/httplive/LiveSession.cpp b/media/libstagefright/httplive/LiveSession.cpp
index a3e7fc7..9e63c41 100644
--- a/media/libstagefright/httplive/LiveSession.cpp
+++ b/media/libstagefright/httplive/LiveSession.cpp
@@ -340,6 +340,7 @@ size_t LiveSession::getBandwidthIndex() {
void LiveSession::onDownloadNext() {
size_t bandwidthIndex = getBandwidthIndex();
+rinse_repeat:
int64_t nowUs = ALooper::GetNowUs();
if (mLastPlaylistFetchTimeUs < 0
@@ -437,6 +438,18 @@ void LiveSession::onDownloadNext() {
if (mSeqNumber < firstSeqNumberInPlaylist
|| mSeqNumber > lastSeqNumberInPlaylist) {
+ if (mSeqNumber < firstSeqNumberInPlaylist
+ && mPrevBandwidthIndex != (ssize_t)bandwidthIndex) {
+ // Go back to the previous bandwidth.
+
+ LOGI("new bandwidth does not have the sequence number "
+ "we're looking for, switching back to previous bandwidth");
+
+ mLastPlaylistFetchTimeUs = -1;
+ bandwidthIndex = mPrevBandwidthIndex;
+ goto rinse_repeat;
+ }
+
if (!mPlaylist->isComplete()
&& mSeqNumber > lastSeqNumberInPlaylist
&& mNumRetries < kMaxNumRetries) {