diff options
author | Andreas Huber <andih@google.com> | 2011-01-06 16:32:05 -0800 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2011-01-06 16:32:05 -0800 |
commit | ba572aaea62ba5d220891ff58642ccee3ad20dec (patch) | |
tree | 5e4b127b1993970431021a6b63619547f9f5d416 /media | |
parent | f25410ed9695f3f07ce0302232fa6e1985ffffd7 (diff) | |
download | frameworks_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.cpp | 13 |
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) { |