Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/v5 adaptation set switching #4276

Merged
merged 34 commits into from
Nov 9, 2023
Merged

Conversation

dsilhavy
Copy link
Collaborator

@dsilhavy dsilhavy commented Sep 6, 2023

This PR adds support for the SupplementalProperty urn:mpeg:adaptation-set-switching:2016. It implements the feature request described in #3908. For that reason, the main ABR handling in dash.js was changed to use Representation IDs instead of an index based approach. Representation@id is a mandatory field and is unique within a period. The main changes of this PR include

Main changes

  • Remove getBitrateInfoListFor and instead return available representations in MediaPlayer. getRepresentationsByType
  • ABR Rules now expose a method getSwitchRequest instead of getMaxIndex
  • Include a list of compatible AdaptationSets in MediaInfo.adaptationSetSwitchingCompatibleIds
  • Export Constants in DashConstants directly instead of using a class syntax
  • Refactor update logic in RepresentationController
  • Remove RepresentationInfo and add missing fields to Representation
  • MediaPlayernow exposed functions getCurrentRepresentationForType, setRepresentationForTypeById, setRepresentationForTypeByIndex
  • Use Representation class in Stream, StreamProcessor
  • Adjust logic in StreamProcessor. selectMediaInfo to distinguish between switching to a new AS as part of a quality switch or after manual selection
  • AbrController now works with Representation instances instead of BitrateList
  • MediaController filters AdaptationSets by possible bitrates and the portal size to start with a correct quality based on the settings

Limitations / Follow ups

  • This PR changes 105 files and possibly introduces some regression. Functional tests looked good so far. We will do more extensive testing running these changes in v5 alpha against our ABR testbed
  • We currently do not cover DRM issues such as unsupported L1 playback. This will be addressed in another issue.

@dsilhavy dsilhavy added this to the 5.0.0 milestone Sep 6, 2023
@dsilhavy dsilhavy self-assigned this Sep 6, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Development

Successfully merging this pull request may close these issues.

1 participant