{"action":"opened","issue":{"url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/issues/1204","repository_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js","labels_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/issues/1204/labels{/name}","comments_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/issues/1204/comments","events_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/issues/1204/events","html_url":"https://github.com/Dash-Industry-Forum/dash.js/issues/1204","id":135738494,"number":1204,"title":"BOLA Observations","user":{"login":"LloydW93","id":2572695,"avatar_url":"https://avatars.githubusercontent.com/u/2572695?v=3","gravatar_id":"","url":"https://api.github.com/users/LloydW93","html_url":"https://github.com/LloydW93","followers_url":"https://api.github.com/users/LloydW93/followers","following_url":"https://api.github.com/users/LloydW93/following{/other_user}","gists_url":"https://api.github.com/users/LloydW93/gists{/gist_id}","starred_url":"https://api.github.com/users/LloydW93/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LloydW93/subscriptions","organizations_url":"https://api.github.com/users/LloydW93/orgs","repos_url":"https://api.github.com/users/LloydW93/repos","events_url":"https://api.github.com/users/LloydW93/events{/privacy}","received_events_url":"https://api.github.com/users/LloydW93/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2016-02-23T13:34:22Z","updated_at":"2016-02-23T13:34:22Z","closed_at":null,"body":"The following image tracks buffer level, bitrate and \"frame rate\" (as you can tell it's pretty unreliable) during a period of playback using dash.js 2.0:\r\n\r\n![image](https://cloud.githubusercontent.com/assets/2572695/13252611/a39c2dc4-da2f-11e5-9ca2-117f3c3c17a7.png)\r\n\r\nIn our use case, we use the Page Visibility API to lower the `maxAllowedRepresentationRatioFor('video')` when the browser tab or window is not visible, putting it back up if it comes back into focus.\r\n\r\nThe first two switches down in the graph are from tab switching, while the third is from network throttling. When a new, lower, bandwidth ceiling is set, this results in a long period of no media being downloaded before the player decides to scheduled more media, and drains the buffer to a far lower than that at which it later stabilises. In the final case, attempting to keep up until there is not enough buffer is of course in line with what we'd expect from a buffer occupancy-based ruleset.\r\n\r\nWe think it would be better if, as often as possible, the BOLA rule attempted to still maintain the buffer target. I understand if this is not possible (or at least, incredibly complex) in the network throttling case, although we'd still prefer more than 10 seconds as the stabilisation point there.\r\n\r\nIn the case where a ceiling is applied, I don't see why the rules couldn't potentially be adapted to continuing to schedule straight away - if a user opts to tell the play to only load the lowest bandwidth representation because their network connection keeps dropping out and want to maintain a long buffer, for example, this is a case that should be supported."}}