Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This is the last big step of my drm rework
i opened the PR to show the changes but this is still in WIP,
different code need to be cleanup and some other code need to be reimplemented in some other way,
at the time of writing i have only tested a Dash Widevine on windows, a very basic test to see if it works, everything else obviously needs to be completed and tested.
--- todo to explain most important changes---
To do
[x] Rework drm info on Dash parser
[ ] Rework drm info on HLS parser
[ ] Rework drm info on Smoothstreaming parser
[ ] Reimplement CheckHDCP
[ ] Adapt test project, if needed
[ ] Enable multi-drm support to "drm" property
[ ] Deprecate old properties
[x] Test stream with single drm widevine
[ ] Test stream with single drm playready
[x] Test stream with clearkey
[ ] Test stream with widevine "to" clearkey
[ ] Test multi drm's stream widevine+playready, between windows and android
To study / unsolved
currently drm engine can store sessions over the time, but there is no implementation for possible cleanups
for example in a multiperiod stream, when an old period is expired (and should be removed from memory) then cleanup old drm sessions. in theory drm sessions on multiperiods should be reused, but idk...
fix #1585 about to separate audio/video sessions
Motivation and context
This PR will finish the multi-drm configuration support for
inputstream.adaptive.drm
propertyWhat is auto selection of DRM?
in this case we are talking about manifests (usually HLS/DASH) that support multiple DRMs at same time.
Until now, every python video add-on was forced to manually set the appropriate DRM for the type of operating system in use
by setting appropriate
inputstream.adaptive.license_type
andinputstream.adaptive.license_key
(and all other properties).for example a manifest that support playready and widevine,
on Windows OS is needed that the python addon set the drm configuration for widevine, and on android could be for playready.
This implementation allows a video add-ons to provide all the DRM configurations supported by the provider in a distinct way, so that ISA can automatically select a DRM by finding a match between DRM supported in the operating system in use and the manifest, so a video add-on will no longer have to check if a DRM is compatible with the operating system in use, to configure ISA.
This will be even more useful in the future when a support to new DRMs can be implemented.
How has this been tested?
WIP
Screenshots (if appropriate):
Types of change
Checklist: