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
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 @@
void LiveSession::onDownloadNext() {
size_t bandwidthIndex = getBandwidthIndex();
+rinse_repeat:
int64_t nowUs = ALooper::GetNowUs();
if (mLastPlaylistFetchTimeUs < 0
@@ -437,6 +438,18 @@
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) {