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/unsupported security levels #4562

Open
wants to merge 38 commits into
base: development
Choose a base branch
from

Conversation

dsilhavy
Copy link
Collaborator

@dsilhavy dsilhavy commented Sep 5, 2024

This PR adds various features around DRM related functionality, period transitioning and track/quality changes:

Features

  • Adds handling of keystatuseschange events. If a key is not usable (internal-error or output-restricted) the player switches to a different track. In case of AdaptationSet Switching (urn:mpeg:dash:adaptation-set-switching:2016) the unsupported Representations are removed from the list of possible options. Note: We are not automatically switching back to the previous track if a key becomes usable again. Addresses Handling of unsupported DRM security levels #4313
  • Only apply changeType() if the codec family has not changed. For instance, if we are switching between avc1 and avc3 we dont need to call changeType(). This fixes Win10Edge HEVC multiperiod test gives "error: creating source buffer of type: audio" #4304

Improvements

  • Adds a function once to the EventBus to listen only once for a certain event
  • Updates the list of Representations and tracks in the controlbar when the key status changes or a new track is selected.
  • Update JSDoc version
  • Add Karma Edge launcher for functional tests on Windows Edge
  • Add functional test config for Windows machines
  • Add excludedPlatforms attribute to functional test configuration to exclude platforms for specific tests e.g. not running a DRM Widevine/Playready test on Safari
  • Refactoring of classes like StreamProcessor and BufferController. Includes running operations in parallel and not waiting for promises to resolve.

Fixes

  • Fix a race condition that lead to decode errors because of invalid codec string after changeType
  • Removes scheduled CircleCI jobs as the jobs fail due to timeouts

Known Limitations

  • When selecting a track with an unusable key at playback start dash.js will now switch to a different track and start downloading the corresponding segments. Replacing the old segments (of the unsupprted track) required a seek to transition to the playing state again in our tests.
…ationSets with unusable key ids in the Controlbar
…ed immediately to avoid inconsistency with the ABR selection. Also reset BOLA utility values when a track is changed.
@dsilhavy dsilhavy added this to the 5.0.0 milestone Sep 5, 2024
…ortedSecurityLevels

# Conflicts:
#	src/streaming/utils/Capabilities.js
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
1 participant