-
Notifications
You must be signed in to change notification settings - Fork 1.7k
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
Allow immediate switching when top quality index changes #1667
Allow immediate switching when top quality index changes #1667
Conversation
I would not image this is needed if you just enable Fast Switching. Then you will fall into the isReplacement if there is a higher quality and you will see the higher quality render in 1 to 2 segments lengths regardless of the buffer level. Am I missing something? |
If you enable fast switching, certainly it's not needed, but neither is the Without fast switching though this is very important to us, we have portal Another improvement in the area is changing the buffer target at top On Tue, Nov 15, 2016 at 6:09 PM, Dan Sparacio notifications@github.com
|
@JibberJim Was this tested with Fast Switching enabled? |
Not as in depth as without - since we don't use fast switching, but yes did
a basic test to validate it didn't cause anything odd.
Cheers,
…On Tue, Nov 29, 2016 at 7:07 PM, Dan Sparacio ***@***.***> wrote:
@JibberJim <https://github.com/JibberJim> Was this tested with Fast
Switching enabled?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#1667 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AFLujhy_IlcANKJZ3_q_ox-QqLMtNVdjks5rDHfsgaJpZM4KyXgU>
.
|
Sounds good ill pull it in and we can all test during the test phase. Thanks @JontyUsborne and @JibberJim |
function hasTopQualityChanged(type, id) { | ||
|
||
topQualityIndex[id] = topQualityIndex[id] || {}; | ||
let newTopQualityIndex = abrController.getTopQualityIndexFor(type,id); |
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.
we should use const here since we do not reassign newTopQualityIndex.
const isReplacement = replaceRequestArray.length > 0; | ||
const readyToLoad = bufferLevelRule.execute(streamProcessor, type, streamController.isVideoTrackPresent()); | ||
const topQualityChanged = hasTopQualityChanged(currentRepresentationInfo.mediaInfo.type, streamProcessor.getStreamInfo().id); | ||
let isReplacement, topQualityChanged, readyToLoad; |
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.
This i hard to read. Are you assigning the var in the if statement. We should keep code standards. We do not list vars in one line. Use const if not reassigned. Used keyword per var being assigned for break point access etc.
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.
Please format code to be consistent with other ES6 code line. Ignore code standards when old ES5 code is used.
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.
Thank you very much. Ill merge right away.
When the max representation available to ABR changes because of updateQuality or Portal Bitrate change, the Buffer Level rule prevents switching because the buffer is larger than the stable bitrate buffer target (12 or 20s). The previous "top quality" target buffer size of 60s means that any appending to the buffer is suppressed for 48s so the user sees their buffer collapse.
Any change in getTopQualityIndexFor() now allows an immediate update of the rules. This should prevent the buffer near exhausting when quality changes and therefore reduce risk, especially as this happens whenever a user goes fullscreen.
Expensive bufferLevelRule is also not called now if getNextFragment is already triggered by isReplacement or topQualityChanged.