* Add support for description audio tracks (marked with CHARACTERISTICS of 'public.accessibility.describes-video')
* Update m3u8-parser to 2.1.0
* Add test for correctly setting alternative audio kinds
* Support for multiple alternate audio tracks
* Separated segment loading logic into a reusable piece of functionality so that we can have more than one segment loader and they can manage the segment fetch behavior unique to each playlist they are loading from
* Introduced the MasterPlaylistController to coordinate the loading of the master playlist and separate the behavior of the player from videojs-contrib-hls.js leaving the latter to be the glue between HLS and the video element's events
* Added the SourceUpdater to manage the asynchronous bahavior of SourceBuffers and MediaSource objects so that we can treat it as a non-blocking work queue
* Added parsing for MediaGroups in master playlists
* Added support for AudioTrackList objects and events
* Add support for every HLS mime type possible (#684)
* Flash live fixes (#682)
Capture the number of elementary streams in a transport stream program and map those to mp4 tracks in the init segment. Fix up some examples and update MSE documentation.
Create example binary data that is a valid Media Segment and does not produce decode errors when coupled with an appropriate media segment. Add some free-form notes from media source extensions research so far. Update the testing sandbox player.
It would probably be helpful to have some graphical quick references for anyone looking to hack on the transmuxing code. Start off with a logical picture of mp2t segments and h264 "packets".
Used an adaptive, encrypted m3u8 on the example page and included hex dump utilities. Fixed formatting issues with the hex dump utility. Passed a 16-byte IV to the decrypter in drainBuffer(). Swapped byte order for the keys so they are not misintrepreted as little-endian. Added fields to the muxer test page to mux encrypted segments. Updated tests. Fixed docs on using openssl to test encryption and decryption.
Don't re-request playlists that have already been fully loaded. If the loader is in the middle of requesting a new playlist and is asked to switch back to a loaded one, abort the outstanding request. Update playlist loader state diagram.
Add a new state, SWITCHING_MEDIA, that manages requests to change the active media playlist. Track media playlists by-URI on the master playlist so they can be looked up more easily.