{"action":"created","issue":{"url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/issues/533","labels_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/issues/533/labels{/name}","comments_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/issues/533/comments","events_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/issues/533/events","html_url":"https://github.com/Dash-Industry-Forum/dash.js/pull/533","id":73178282,"number":533,"title":"Added two new steps to live edge detection","user":{"login":"AkamaiDASH","id":7864462,"avatar_url":"https://avatars.githubusercontent.com/u/7864462?v=3","gravatar_id":"","url":"https://api.github.com/users/AkamaiDASH","html_url":"https://github.com/AkamaiDASH","followers_url":"https://api.github.com/users/AkamaiDASH/followers","following_url":"https://api.github.com/users/AkamaiDASH/following{/other_user}","gists_url":"https://api.github.com/users/AkamaiDASH/gists{/gist_id}","starred_url":"https://api.github.com/users/AkamaiDASH/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AkamaiDASH/subscriptions","organizations_url":"https://api.github.com/users/AkamaiDASH/orgs","repos_url":"https://api.github.com/users/AkamaiDASH/repos","events_url":"https://api.github.com/users/AkamaiDASH/events{/privacy}","received_events_url":"https://api.github.com/users/AkamaiDASH/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":3,"created_at":"2015-05-05T02:05:41Z","updated_at":"2015-05-05T10:33:23Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/pulls/533","html_url":"https://github.com/Dash-Industry-Forum/dash.js/pull/533","diff_url":"https://github.com/Dash-Industry-Forum/dash.js/pull/533.diff","patch_url":"https://github.com/Dash-Industry-Forum/dash.js/pull/533.patch"},"body":"Added two new steps to live edge detection before binary search kicks in\r\n\r\n1. If UTCTiming is not defined in the manifest not there is a default time scheme and time server defined. There is an API to add more time servers, to remove time servers and to clear all time servers.  \r\n\r\n2. If you clear all time servers AND have exposed the Date header that value will be used instead of calling a time server, if non of the above exist, the binary search will be used."},"comment":{"url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/issues/comments/99026875","html_url":"https://github.com/Dash-Industry-Forum/dash.js/pull/533#issuecomment-99026875","issue_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/issues/533","id":99026875,"user":{"login":"bbcrddave","id":5390145,"avatar_url":"https://avatars.githubusercontent.com/u/5390145?v=3","gravatar_id":"","url":"https://api.github.com/users/bbcrddave","html_url":"https://github.com/bbcrddave","followers_url":"https://api.github.com/users/bbcrddave/followers","following_url":"https://api.github.com/users/bbcrddave/following{/other_user}","gists_url":"https://api.github.com/users/bbcrddave/gists{/gist_id}","starred_url":"https://api.github.com/users/bbcrddave/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bbcrddave/subscriptions","organizations_url":"https://api.github.com/users/bbcrddave/orgs","repos_url":"https://api.github.com/users/bbcrddave/repos","events_url":"https://api.github.com/users/bbcrddave/events{/privacy}","received_events_url":"https://api.github.com/users/bbcrddave/received_events","type":"User","site_admin":false},"created_at":"2015-05-05T10:33:23Z","updated_at":"2015-05-05T10:33:23Z","body":"@AkamaiDASH code looks great and, on the whole, I like the direction this is going in - the binary search algorithm should be avoided at all costs.\r\n\r\nThe only change I would make would be that if there are UTCTiming entries in the manifest, the default should not be added. This would keep the external API would remain consistent (not require a non-intuitive call to remove default sources) and not surprise those service providers offering a compliant service, whilst still providing help to those who are not.\r\n\r\nOn the whole however, as I have mentioned before, this sort of stuff feels a bit hacky. The DASHIF IOP spec is clear about what to do in the presence (or lack of) UTCTiming and other potential synchronisation isses, and, in my opinion, the player ought to be aiming to be spec-compliant. This would preclude checking the date header (unless it was an included time source).\r\n\r\nRegarding live edge detection, I agree with Mikhail that the rules should return the correct live edge. The live edge is calculated and should be correct with respect to the manifest - it is application specific how cautious the player chooses to be. One segment seems sensible for a low latency mode. Of course, if the manifest does not reflect the true state of the stream then all bets are off.\r\n\r\nFinally, I'm fairly certain ```suggestedPresentationDelay``` should be used only to delay playback of segments, not the download of them. Will adjusting the live edge by this amount to vary the playback time affect the download of segments (and is this an issue)?"}}