66dcf32b56
* 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>
57 lines
2.0 KiB
Swift
57 lines
2.0 KiB
Swift
struct VideoSource {
|
|
let type: String?
|
|
let uri: String?
|
|
let isNetwork: Bool
|
|
let isAsset: Bool
|
|
let shouldCache: Bool
|
|
let requestHeaders: [String: Any]?
|
|
let startPosition: Float64?
|
|
let cropStart: Int64?
|
|
let cropEnd: Int64?
|
|
let customMetadata: CustomMetadata?
|
|
/* DRM */
|
|
let drm: DRMParams?
|
|
|
|
let json: NSDictionary?
|
|
|
|
init(_ json: NSDictionary!) {
|
|
guard json != nil else {
|
|
self.json = nil
|
|
self.type = nil
|
|
self.uri = nil
|
|
self.isNetwork = false
|
|
self.isAsset = false
|
|
self.shouldCache = false
|
|
self.requestHeaders = nil
|
|
self.startPosition = nil
|
|
self.cropStart = nil
|
|
self.cropEnd = nil
|
|
self.customMetadata = nil
|
|
self.drm = nil
|
|
return
|
|
}
|
|
self.json = json
|
|
self.type = json["type"] as? String
|
|
self.uri = json["uri"] as? String
|
|
self.isNetwork = json["isNetwork"] as? Bool ?? false
|
|
self.isAsset = json["isAsset"] as? Bool ?? false
|
|
self.shouldCache = json["shouldCache"] as? Bool ?? false
|
|
if let requestHeaders = json["requestHeaders"] as? [[String: Any]] {
|
|
var _requestHeaders: [String: Any] = [:]
|
|
for requestHeader in requestHeaders {
|
|
if let key = requestHeader["key"] as? String, let value = requestHeader["value"] {
|
|
_requestHeaders[key] = value
|
|
}
|
|
}
|
|
self.requestHeaders = _requestHeaders
|
|
} else {
|
|
self.requestHeaders = nil
|
|
}
|
|
self.startPosition = json["startPosition"] as? Float64
|
|
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)
|
|
}
|
|
}
|