You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Switch from xhr to fetch to support streaming segment downloads. Use events rather than global overrides and options to modify requests? Tie-in with player-level hooks
Dash Playlist loader should handle the actual MPD xml. This means that we need to separate the logic for choosing a segment into playlist loader and have segment loader call that when it needs a new segment or something. We should push logic from the segment loader to the playlist loader because we HLS and DASH can have different contraints for knowing what the next segment is. This will simplify the segment loader.
Non Breaking
We should download a segment and seek to that and then set seekable. Right now we estimate seekable and download a segment based off of that. If the segment starts before or after where current time is it causes us to stall until playback-watcher kicks in. If we download a segment and then seek to it instead, playback can start much quicker.
Use BigInt and a polyfill for 64 bit numbers in mux.js
add a flag to allow jumping all gaps regardless of size (will then flip to default in a major version)
media group updates: dedupe most of this code and add in video groups, as our mainSegmentLoader just duplicates a lot of media group handling in masterPlaylistController
this requires more research
we probably want to figure out some first steps that are not breaking
but the final piece may require a final breaking change
use navigator.connection if bandwidth is set to default and it is available. This includes listening for navigator.connctionchange events for abr switching.
rename everything that includes blacklist or other similar terms. These will then be removed as part of a breaking change.
Unify our segmentIndex/segmentNumber naming We currently use:
Do a better job determine the type of ts packet we are dealing with, rather than assuming that the first one will be pmt/pat
Parse all of the mpeg ts headers.
Look for the PREFIX_START_CODE (0x00) in the payload to determine if something is pes
parse the pes packet header and payload to determine the content type.
player-level beforeRequest and request hooks
playlist selection hooks
Base class for playlist loaders?
reset the media source and re-create on media source error.
See fix: Use segmentInfo.trackInfo to get segment information. #1162 . Should we even have currentMediaInfo_? Originally this was added to support codec type switching so anything we do will need to be tested to ensure that codec switching still works. Should we still have startingMediaInfo_ this was added so that we always have a trackInfo to look back at, should future segments fail to contain trackinfo, but we should be triggering directly in the muxer at all times. I think this could all use a rework.
Migrate addSidxSegmentsToPlaylist from mpd-parser into vhs.
Can we switch to listening to update instead of updateend on sourceBuffers? Saves use 5-10ms per append/remove. The only caveat is that updateend always fires, even on error. As long as we handle errors (which I think we do) Then we should be able to switch.
Each of these breaking changes and major refactors should come with a corresponding entry in a migration guide.
Breaking
hls-events andhlsproperties fix: remove deprecation hls options, properties, and events #1229smoothQualityChangeblacklistCurrentPlaylistsegmentLoader,playlistLoader, and that gets sent toblacklistCurrentPlaylistmasterPlaylistControllerblacklistCurrentPlaylistcan be used to exclude any playlist... but we still select a new current playlistdisabled... omggetPlaylistById,getPlaylistByUri, andgetPlaylistByIndexstop doing this. Some of the code is here: https://github.com/videojs/http-streaming/pull/1124/files#diff-78a204a1a5c631f08cbea3fee1b2eecb32158191db5e6db9c5c4c1595bd4366cR273setLiveSeekableRangewhen available #855Non Breaking
TIME_FUDGE_FACTORfromPlaylist#getMediaInfoForTimeif possible. See feat: Add experimentalExactManifestTimings which forgoes TIME_FUDGE_FACTOR during segment choice #1165 1165navigator.connectionifbandwidthis set to default and it is available. This includes listening fornavigator.connctionchangeevents for abr switching.blacklistor other similar terms. These will then be removed as part of a breaking change.segmentIndex,mediaIndex,mediaSequencesafeLiveIndexi'm sure there are more.playlist.js,sync-controller, andsegment-loader. (some of this is done in refactor: checkBuffer_/fillBuffer_/generateSegmentInfo #1097)pmt/patpespespacket header and payload to determine the content type.currentMediaInfo_? Originally this was added to support codec type switching so anything we do will need to be tested to ensure that codec switching still works. Should we still havestartingMediaInfo_this was added so that we always have a trackInfo to look back at, should future segments fail to containtrackinfo, but we should be triggering directly in the muxer at all times. I think this could all use a rework.updateinstead ofupdateendon sourceBuffers? Saves use 5-10ms per append/remove. The only caveat is thatupdateendalways fires, even on error. As long as we handle errors (which I think we do) Then we should be able to switch.