- 14 Mar, 2014 1 commit
-
-
- 07 Mar, 2014 1 commit
-
-
`downloadPlaylist` was quite complicated so try to tease apart some of the cases that were being managed there. Stopped playlists from refreshing when they're not currently active.
David LaPalomento committed
-
- 04 Mar, 2014 1 commit
-
-
Create a helper method for creating XMLHttpRequests and migrate downloadPlaylist to using it.
David LaPalomento committed
-
- 01 Mar, 2014 1 commit
-
-
The original test was invoking the playlist reload callback which tested whether the media index was updating correctly after a refresh. Now, the test correctly triggers the a variant switch after downloading a segment. Consolidated media index update code and ensured state is properly updated after a switch.
David LaPalomento committed
-
- 28 Feb, 2014 1 commit
-
-
When refreshing a playlist, determine the new media index by comparing segment URIs. Consolidate playlist update logic. "Sliding window" live streams are now working.
David LaPalomento committed
-
- 27 Feb, 2014 1 commit
-
-
Unless an explicit total duration tag is present in the playlist, set the duration to Infinity for live HLS. Document iOS behavior for live streams.
David LaPalomento committed
-
- 26 Feb, 2014 1 commit
-
-
When a media playlist was loaded directly, the URI wasn't being set on the implicit master playlist created by the plugin. That meant that playlist reloads weren't being correctly associated with the old playlist version and merges weren't happening. Now, live media playlists loaded directly should be updated properly after being refreshed and segment URLs are resolved directly against the media playlists when the master playlist is only inferred.
David LaPalomento committed
-
- 25 Feb, 2014 1 commit
-
-
Modify the parser to include an attribute when the endlist tag shows up in a media playlist. Update test playlist parses to add the attribute where appropriate. Trigger a playlist reload and merge if endlist isn't present in the parse. Clean up some formatting.
David LaPalomento committed
-
- 23 Feb, 2014 1 commit
-
-
When an ENDLIST tag is not present, media playlists should be continually re-requested to check for updates. The updated versions of the playlist must be reconciled with the client's metadata to continue playback. Added a single function to manage this process for media playlists with and without media sequence information, using URIs and byterange information to match segments. Removed parser code that defaulted the playlist type to VOD if no type was specified. The spec allows live streams to omit the playlist type if the server intends to remove segments from the playlist. None of the runtime code actually referenced playlist type so it may have been a bit premature to parse it at all.
David LaPalomento committed
-
- 19 Feb, 2014 1 commit
-
-
Start a doc to track some popular HLS live streams and the manifest features they utilize. Fill out info for Unicorn Media streams.
David LaPalomento committed
-
- 13 Feb, 2014 4 commits
-
-
Call play as soon as the media source has been set if autoplay is present in the player options.
David LaPalomento committed -
When the final item in the queue is processed, no additional callbacks should be scheduled to run.
David LaPalomento committed
- 12 Feb, 2014 1 commit
-
-
Pushing an entire segment worth of FLV tags into the source buffer at once caused noticeable delays with high-bitrate segments. Instead, wrap each call to appendBuffer in a setTimeout of zero so that the browser has a chance to render frames while the segment is being transferred to the SWF. Make sure that appends-in-progress are cleared if a seek is initiated.
David LaPalomento committed
-
- 10 Feb, 2014 5 commits
-
-
-
Make sure that if the segment parser produces tags with ascending pts values, the plugin filters out tags with pts < currentTime before appending to the media source.
David LaPalomento committed -
The segment parser allows fragmentary input to the muxing process so it's not always clear when a tag should be finalized at the end of the input. By calling segmentParser.flushTags(), the parser is instructed to wrap up whatever input it currently has buffered into an FLV tag. Before this change, the last tag of the video stream would be buffered in the parser, waiting for additional input (i.e. another segment download) to flush it out. When you seeked within a segment, that last tag would have a timestamp greater than your seek point and we were assuming that timestamp values were sorted in ascending order. We would see the timestamp value greater than the desired seek location and start feeding tags into the media source, which resulted in the segment appearing to restart. Now, we close off any tags that are buffered at the end of a segment so the inter-segment seeking routine can assume that tags are delivered in the order of playback.
David LaPalomento committed
-
- 09 Feb, 2014 2 commits
-
-
Get rid of leftovers from the previous iteration of managing manifest and stream downloading. That logic has been consolidated into the main plugin file.
David LaPalomento committed
- 06 Feb, 2014 1 commit
- 05 Feb, 2014 2 commits
-
- 04 Feb, 2014 2 commits
-
-
We were assuming that the program_info_descriptors field in the program mapping table was always of zero length and would end up misaligned reading the table entries if that metadata was present. Also added helper functions for testing to generate mp2t packets.
David LaPalomento committed
- 31 Jan, 2014 2 commits
-
-
Instead of only supporting the src attribute, check options.sources for HLS on init. This means re-implementing something that looks a lot like video.js's source selection algorithm. That's another reason to consider converting this plugin into a tech but I'm deferring that for now.
David LaPalomento committed
- 29 Jan, 2014 3 commits
-
-
When parsing a media playlist, if a URI is encountered without a corresponding #EXTINF with valid duration, default its value to the last encountered #EXT-X-TARGETDURATION tag.
David LaPalomento committed -
In the long run, we'd like to switch variants if we encounter a missing segment but for now just dive ahead. Player errors are reserved for fatal conditions, so it doesn't make sense to trigger an error now that we have some error handling. For the moment, an error is exposed on the hls plugin but no player-level event is triggered.
David LaPalomento committed
-
- 28 Jan, 2014 4 commits
-
-
Fixes #110. Fixes #116. If timeupdates were being firing without a media playlist available yet, fillBuffer would dereference a property on undefined and blow up. Timeupdates occur manually on a fixed interval when using the Flash tech so this was guaranteed to happen whenever the media playlist was unretrievable. To avoid this, wait to register buffer checks until a media playlist has been successfully downloaded. As it turns out, this is the same moment we normally trigger loadedmetadata so it was possible to transform a loadedmetadata handler into a direct call to fillBuffer.
David LaPalomento committed -
- 27 Jan, 2014 3 commits
-
-
Check if HTML video is available before trying to call canPlayType for HLS mime types.
David LaPalomento committed -
When CORS headers aren't enabled on a server, XHRs fail with status 0. Handle this case when downloading playlists and abort further processing. Ideally, we would ignore this for variant playlists if we have alternatives but I'm not tackling that yet.
David LaPalomento committed
- 26 Jan, 2014 1 commit
-
-
Bipbop is great for testing because it displays so much information about the current state of the video. Use a standard "src" attribute to initialize the plugin in the example.
David LaPalomento committed
-