-
Notifications
You must be signed in to change notification settings - Fork 428
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: resume loading on segment timeout for experimentalBufferBasedABR
#1333
fix: resume loading on segment timeout for experimentalBufferBasedABR
#1333
Conversation
Previously, if there was a segment timeout and `experimentalBufferBasedABR` was set to `true`, then the main segment loader would stay in a `READY` state and never resume loading segments. This is because the buffer based ABR path doesn't follow the same flow as non buffer based ABR, where a new playlist would be loaded immediately and it would trigger a load. Buffer based ABR may determine that no rendition change should be made, despite the timeout, leading to nothing happening. This change makes the call to load explicit, but only for buffer based ABR on timeouts.
}); | ||
this.mainSegmentLoader_.on('timeout', () => { | ||
if (this.experimentalBufferBasedABR) { | ||
// If a rendition change is needed, then it would've be done on `bandwidthupdate`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"would've been done"
Codecov Report
@@ Coverage Diff @@
## main #1333 +/- ##
==========================================
+ Coverage 86.33% 86.34% +0.01%
==========================================
Files 39 39
Lines 9857 9859 +2
Branches 2298 2299 +1
==========================================
+ Hits 8510 8513 +3
+ Misses 1347 1346 -1
📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As discussed on collaborators call, we should ship this since it makes things better.
Previously, if there was a segment timeout and `experimentalBufferBasedABR` was set to `true`, then the main segment loader would stay in a `READY` state and never resume loading segments. This is because the buffer based ABR path doesn't follow the same flow as non buffer based ABR, where a new playlist would be loaded immediately and it would trigger a load. Buffer based ABR may determine that no rendition change should be made, despite the timeout, leading to nothing happening. This change makes the call to load explicit, but only for buffer based ABR on timeouts.
Previously, if there was a segment timeout and `experimentalBufferBasedABR` was set to `true`, then the main segment loader would stay in a `READY` state and never resume loading segments. This is because the buffer based ABR path doesn't follow the same flow as non buffer based ABR, where a new playlist would be loaded immediately and it would trigger a load. Buffer based ABR may determine that no rendition change should be made, despite the timeout, leading to nothing happening. This change makes the call to load explicit, but only for buffer based ABR on timeouts.
Previously, if there was a segment timeout and `experimentalBufferBasedABR` was set to `true`, then the main segment loader would stay in a `READY` state and never resume loading segments. This is because the buffer based ABR path doesn't follow the same flow as non buffer based ABR, where a new playlist would be loaded immediately and it would trigger a load. Buffer based ABR may determine that no rendition change should be made, despite the timeout, leading to nothing happening. This change makes the call to load explicit, but only for buffer based ABR on timeouts.
Previously, if there was a segment timeout and
experimentalBufferBasedABR
was set totrue
, then the main segment loader would stay in aREADY
state and never resume loading segments. This is because the buffer based ABR path doesn't follow the same flow as non buffer based ABR, where a new playlist would be loaded immediately and it would trigger a load. Buffer based ABR may determine that no rendition change should be made, despite the timeout, leading to nothing happening. This change makes the call to load explicit, but only for buffer based ABR on timeouts.This addresses #1287
Test Changes
Changed
experimentalBufferBasedABR
does make a playlist selection onbandwidthupdate
bandwidthupdate
when there's only one playlist. This warning doesn't always make sense, as a timeout that causes abandwidthupdate
would be a connection issue, rather than a stream issue.Added
timeout
event on timeouttimeout
if experimentalBufferBasedABRTesting
[EXPERIMENTAL] Use Buffer Level for ABR (reloads player)
and setpreload
tonone
.Requirements Checklist