diff options
Diffstat (limited to 'media/libstagefright')
-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) { |