Buffered will not be present in segment info when a segment processing is aborted due to seeking. Make sure bufferedAdditions_ does not error or add incorrect timeline information to the segment in that case.
Media sources implicitly track expired time by retaining the mapping between presentation timestamp values and the media timeline in the buffer. That allows us to simplify a good deal of code by not tracking it ourselves. Finish updating tests to work against the new timeline start and end annotations on segments instead of the old PTS values. Remove metadata cue translation because that is now handled by contrib-media-sources. Update key fetching in HLSe to occur concurrently with the segment download. All tests are now passing.
If the old and new buffered ranges have a shared start or end point, that edge should not be interpreted as a new buffered boundary. Fix up a number of the tests. Some tests are still failing.
When playlists are not segment-aligned or began at different times, we could make bad decisions about which segment to load by just incrementing the media index. Instead, annotate segments in the playlist with timeline information as they are downloaded. When a decision about what segment to fetch is required, simply try to fetch the segment that lines up with the latest edge of the buffered time range that contains the current time. Add a utility to stringify TextRanges for debugging. This is a checkpoint commit; 35 tests are currently failing in Chrome.
For #400. Flash doesn't currently fire "loadstart" in data generation mode. Triggering that event should probably happen in video.js itself but fire it once the source handler is selected to make things behave somewhat sanely for now.
When switching renditions or dealing with a live stream with unaligned variant playlists, we may discover that the segment we buffered isn't associated with the time range we expected it to be. In that case, adjust our information about timeline positioning and try buffering again.
Live streams in particular may have variant playlists with content windows that are out of sync. Keep playback rolling in the simplest way possible by seeking into the new buffered region whenever this occurs. This is not an ideal user-experience.
When a browser could support HTML or Flash based playback modes, allow video.js's techOrder to have precedence. It's very handy to be able to override the mode selection for debugging purposes, for instance.
Add a default timeout of 45 seconds for all requests
Create a boolean `timedout` property on request in response to the ETIMEOUT error
Create an error code for non-200 responses
player.tech was renamed to player.tech_
the videojs.xhr must be replaced with sinon differently now since videojs.xhr holds onto a reference to window.XMLHttpRequest
With the HTML5 tech buffered can return more than one region. We need to find the region that we are currently playing inside of and use the extent of that region's end-point to determine whether or not we need to buffer more segments
If a codecs attribute is present on a variant stream, use it when adding a source buffer. Wait to create the source buffer until the variant playlist is downloaded and the media source is open.