refactor: move view type and drm in source (#3867)
* perf: ensure we do not provide callback to native if no callback provided from app * chore: rework bufferConfig to make it more generic and reduce ReactExoplayerView code size * chore: improve issue template * fix(android): avoid video view flickering at playback startup * chore(android): refactor DRM props into a dedicated class * Update android/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java * chore: fix linter * fix: ensure drm prop is correctly cleaned * feat(android): move viewType (secure texture) & drm inside the source The origianl behavior has been kept for interoperability, but marked as deprecated in doc * chore: fix linter * chore(ios): move drm prop in source like on android * chore: fix linter * chore: clean log * fix: allow to disable secure View * chore: fix viewType resolution (source value was not handled) * chore: use contentDeepEquals instead of manual checks * chore: fix linter * fix: ensure player doesn't start when view is unmounted * Fix/ensure view drop stop playback startup (#3875) * fix: ensure player doesn't start when view is unmounted * chore: revert change * chore: add warning in case of invalid Surface configuration * chore: code clean * fix: simplify surface management * chore: restore previous code * chore: fix typo * chore: code cleanup * feat(android): add multiDrm flag support * docs: update docs * chore: fix ios build * chore: fix deprecated declaration --------- Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
This commit is contained in:
@@ -9,6 +9,8 @@ struct VideoSource {
|
||||
let cropStart: Int64?
|
||||
let cropEnd: Int64?
|
||||
let customMetadata: CustomMetadata?
|
||||
/* DRM */
|
||||
let drm: DRMParams?
|
||||
|
||||
let json: NSDictionary?
|
||||
|
||||
@@ -25,6 +27,7 @@ struct VideoSource {
|
||||
self.cropStart = nil
|
||||
self.cropEnd = nil
|
||||
self.customMetadata = nil
|
||||
self.drm = nil
|
||||
return
|
||||
}
|
||||
self.json = json
|
||||
@@ -48,5 +51,6 @@ struct VideoSource {
|
||||
self.cropStart = (json["cropStart"] as? Float64).flatMap { Int64(round($0)) }
|
||||
self.cropEnd = (json["cropEnd"] as? Float64).flatMap { Int64(round($0)) }
|
||||
self.customMetadata = CustomMetadata(json["metadata"] as? NSDictionary)
|
||||
self.drm = DRMParams(json["drm"] as? NSDictionary)
|
||||
}
|
||||
}
|
||||
|
@@ -17,10 +17,6 @@ class RCTVideo: UIView, RCTVideoPlayerViewControllerDelegate, RCTPlayerObserverH
|
||||
|
||||
private var _playerViewController: RCTVideoPlayerViewController?
|
||||
private var _videoURL: NSURL?
|
||||
|
||||
/* DRM */
|
||||
private var _drm: DRMParams?
|
||||
|
||||
private var _localSourceEncryptionKeyScheme: String?
|
||||
|
||||
/* Required to publish events */
|
||||
@@ -406,7 +402,7 @@ class RCTVideo: UIView, RCTVideoPlayerViewControllerDelegate, RCTPlayerObserverH
|
||||
"type": _source?.type ?? NSNull(),
|
||||
"isNetwork": NSNumber(value: _source?.isNetwork ?? false),
|
||||
],
|
||||
"drm": _drm?.json ?? NSNull(),
|
||||
"drm": source.drm?.json ?? NSNull(),
|
||||
"target": reactTag,
|
||||
])
|
||||
|
||||
@@ -443,10 +439,10 @@ class RCTVideo: UIView, RCTVideoPlayerViewControllerDelegate, RCTPlayerObserverH
|
||||
}
|
||||
#endif
|
||||
|
||||
if _drm != nil || _localSourceEncryptionKeyScheme != nil {
|
||||
if source.drm != nil || _localSourceEncryptionKeyScheme != nil {
|
||||
_resouceLoaderDelegate = RCTResourceLoaderDelegate(
|
||||
asset: asset,
|
||||
drm: _drm,
|
||||
drm: source.drm,
|
||||
localSourceEncryptionKeyScheme: _localSourceEncryptionKeyScheme,
|
||||
onVideoError: onVideoError,
|
||||
onGetLicense: onGetLicense,
|
||||
@@ -568,11 +564,6 @@ class RCTVideo: UIView, RCTVideoPlayerViewControllerDelegate, RCTPlayerObserverH
|
||||
DispatchQueue.global(qos: .default).async(execute: initializeSource)
|
||||
}
|
||||
|
||||
@objc
|
||||
func setDrm(_ drm: NSDictionary) {
|
||||
_drm = DRMParams(drm)
|
||||
}
|
||||
|
||||
@objc
|
||||
func setLocalSourceEncryptionKeyScheme(_ keyScheme: String) {
|
||||
_localSourceEncryptionKeyScheme = keyScheme
|
||||
@@ -1271,7 +1262,6 @@ class RCTVideo: UIView, RCTVideoPlayerViewControllerDelegate, RCTPlayerObserverH
|
||||
_playerItem = nil
|
||||
_source = nil
|
||||
_chapters = nil
|
||||
_drm = nil
|
||||
_textTracks = nil
|
||||
_selectedTextTrackCriteria = nil
|
||||
_selectedAudioTrackCriteria = nil
|
||||
|
Reference in New Issue
Block a user