react-native-theoplayer 2.5.0 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/android/src/main/java/com/theoplayer/PlayerEventEmitter.kt +9 -15
- package/android/src/main/java/com/theoplayer/util/PayloadBuilder.kt +2 -1
- package/android/src/main/java/com/theoplayer/util/ViewResolver.kt +9 -1
- package/ios/THEOplayerRCTDebug.swift +3 -3
- package/ios/THEOplayerRCTMainEventHandler.swift +59 -59
- package/ios/THEOplayerRCTMediaTrackEventHandler.swift +18 -18
- package/ios/THEOplayerRCTNetworkUtils.swift +1 -1
- package/ios/THEOplayerRCTPlayerAPI.swift +14 -14
- package/ios/THEOplayerRCTPrintUtils.swift +16 -0
- package/ios/THEOplayerRCTSourceDescriptionBuilder.swift +6 -6
- package/ios/THEOplayerRCTTextTrackEventHandler.swift +21 -21
- package/ios/THEOplayerRCTView.swift +29 -29
- package/ios/ads/THEOplayerRCTAdsAPI+DAI.swift +6 -6
- package/ios/ads/THEOplayerRCTAdsAPI.swift +13 -13
- package/ios/ads/THEOplayerRCTAdsEventHandler.swift +27 -27
- package/ios/ads/THEOplayerRCTSourceDescriptionBuilder+Ads.swift +5 -5
- package/ios/backgroundAudio/THEOplayerRCTNowPlayingManager.swift +63 -37
- package/ios/backgroundAudio/THEOplayerRCTRemoteCommandsManager.swift +16 -16
- package/ios/casting/THEOplayerRCTCastAPI+Airplay.swift +6 -6
- package/ios/casting/THEOplayerRCTCastAPI+Chromecast.swift +10 -10
- package/ios/casting/THEOplayerRCTCastAPI.swift +1 -1
- package/ios/casting/THEOplayerRCTCastEventHandler.swift +11 -11
- package/ios/contentprotection/THEOplayerRCTContentProtectionAPI.swift +1 -1
- package/ios/pip/THEOplayerRCTPipControlsManager.swift +1 -1
- package/lib/commonjs/api/abr/ABRConfiguration.js +25 -0
- package/lib/commonjs/api/abr/ABRConfiguration.js.map +1 -1
- package/lib/commonjs/api/track/Track.js +5 -1
- package/lib/commonjs/api/track/Track.js.map +1 -1
- package/lib/commonjs/internal/THEOplayerView.web.js +2 -6
- package/lib/commonjs/internal/THEOplayerView.web.js.map +1 -1
- package/lib/commonjs/internal/adapter/THEOplayerAdapter.js +41 -10
- package/lib/commonjs/internal/adapter/THEOplayerAdapter.js.map +1 -1
- package/lib/commonjs/internal/adapter/THEOplayerWebAdapter.js +105 -52
- package/lib/commonjs/internal/adapter/THEOplayerWebAdapter.js.map +1 -1
- package/lib/module/api/abr/ABRConfiguration.js +19 -0
- package/lib/module/api/abr/ABRConfiguration.js.map +1 -1
- package/lib/module/api/track/Track.js +4 -1
- package/lib/module/api/track/Track.js.map +1 -1
- package/lib/module/internal/THEOplayerView.web.js +2 -6
- package/lib/module/internal/THEOplayerView.web.js.map +1 -1
- package/lib/module/internal/adapter/THEOplayerAdapter.js +41 -10
- package/lib/module/internal/adapter/THEOplayerAdapter.js.map +1 -1
- package/lib/module/internal/adapter/THEOplayerWebAdapter.js +106 -53
- package/lib/module/internal/adapter/THEOplayerWebAdapter.js.map +1 -1
- package/lib/typescript/api/abr/ABRConfiguration.d.ts +5 -1
- package/lib/typescript/api/track/Track.d.ts +1 -0
- package/lib/typescript/internal/adapter/THEOplayerAdapter.d.ts +2 -0
- package/lib/typescript/internal/adapter/THEOplayerWebAdapter.d.ts +3 -3
- package/package.json +1 -1
- package/react-native-theoplayer.podspec +1 -1
- package/src/api/abr/ABRConfiguration.ts +5 -1
- package/src/api/track/Track.ts +5 -1
- package/src/internal/THEOplayerView.web.tsx +2 -6
- package/src/internal/adapter/THEOplayerAdapter.ts +44 -10
- package/src/internal/adapter/THEOplayerWebAdapter.ts +97 -50
|
@@ -49,7 +49,7 @@ class THEOplayerRCTMediaTrackEventHandler {
|
|
|
49
49
|
guard let welf = self else { return }
|
|
50
50
|
if let forwardedMediaTrackListEvent = welf.onNativeMediaTrackListEvent,
|
|
51
51
|
let audioTrack = event.track as? AudioTrack {
|
|
52
|
-
if DEBUG_THEOPLAYER_EVENTS {
|
|
52
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received ADD_TRACK event from THEOplayer audioTrack list: trackUid = \(audioTrack.uid)") }
|
|
53
53
|
// trigger tracklist event
|
|
54
54
|
forwardedMediaTrackListEvent([
|
|
55
55
|
"track" : THEOplayerRCTTrackMetadataAggregator.aggregatedAudioTrackInfo(audioTrack: audioTrack),
|
|
@@ -58,14 +58,14 @@ class THEOplayerRCTMediaTrackEventHandler {
|
|
|
58
58
|
])
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
-
if DEBUG_EVENTHANDLER {
|
|
61
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AddTrack listener attached to THEOplayer audioTrack list") }
|
|
62
62
|
|
|
63
63
|
// AUDIO REMOVE_TRACK
|
|
64
64
|
self.audioRemoveTrackListener = player.audioTracks.addEventListener(type: AudioTrackListEventTypes.REMOVE_TRACK) { [weak self] event in
|
|
65
65
|
guard let welf = self else { return }
|
|
66
66
|
if let forwardedMediaTrackListEvent = welf.onNativeMediaTrackListEvent,
|
|
67
67
|
let audioTrack = event.track as? AudioTrack {
|
|
68
|
-
if DEBUG_THEOPLAYER_EVENTS {
|
|
68
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received REMOVE_TRACK event from THEOplayer audioTrack list: trackUid = \(audioTrack.uid)") }
|
|
69
69
|
// trigger tracklist event
|
|
70
70
|
forwardedMediaTrackListEvent([
|
|
71
71
|
"track" : THEOplayerRCTTrackMetadataAggregator.aggregatedAudioTrackInfo(audioTrack: audioTrack),
|
|
@@ -74,14 +74,14 @@ class THEOplayerRCTMediaTrackEventHandler {
|
|
|
74
74
|
])
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
|
-
if DEBUG_EVENTHANDLER {
|
|
77
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] RemoveTrack listener attached to THEOplayer audioTrack list") }
|
|
78
78
|
|
|
79
79
|
// AUDIO CHANGE
|
|
80
80
|
self.audioChangeTrackListener = player.audioTracks.addEventListener(type: AudioTrackListEventTypes.CHANGE) { [weak self] event in
|
|
81
81
|
guard let welf = self else { return }
|
|
82
82
|
if let forwardedMediaTrackListEvent = welf.onNativeMediaTrackListEvent,
|
|
83
83
|
let audioTrack = event.track as? AudioTrack {
|
|
84
|
-
if DEBUG_THEOPLAYER_EVENTS {
|
|
84
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received CHANGE event from THEOplayer audioTrack list: trackUid = \(audioTrack.uid)") }
|
|
85
85
|
// trigger tracklist event
|
|
86
86
|
forwardedMediaTrackListEvent([
|
|
87
87
|
"track" : THEOplayerRCTTrackMetadataAggregator.aggregatedAudioTrackInfo(audioTrack: audioTrack),
|
|
@@ -90,14 +90,14 @@ class THEOplayerRCTMediaTrackEventHandler {
|
|
|
90
90
|
])
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
|
-
if DEBUG_EVENTHANDLER {
|
|
93
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] ChangeTrack listener attached to THEOplayer audioTrack list") }
|
|
94
94
|
|
|
95
95
|
// VIDEO ADD_TRACK
|
|
96
96
|
self.videoAddTrackListener = player.videoTracks.addEventListener(type: VideoTrackListEventTypes.ADD_TRACK) { [weak self] event in
|
|
97
97
|
guard let welf = self else { return }
|
|
98
98
|
if let forwardedMediaTrackListEvent = welf.onNativeMediaTrackListEvent,
|
|
99
99
|
let videoTrack = event.track as? VideoTrack {
|
|
100
|
-
if DEBUG_THEOPLAYER_EVENTS {
|
|
100
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received ADD_TRACK event from THEOplayer videoTrack list: trackUid = \(videoTrack.uid)") }
|
|
101
101
|
// trigger tracklist event
|
|
102
102
|
forwardedMediaTrackListEvent([
|
|
103
103
|
"track" : THEOplayerRCTTrackMetadataAggregator.aggregatedVideoTrackInfo(videoTrack: videoTrack),
|
|
@@ -106,14 +106,14 @@ class THEOplayerRCTMediaTrackEventHandler {
|
|
|
106
106
|
])
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
|
-
if DEBUG_EVENTHANDLER {
|
|
109
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AddTrack listener attached to THEOplayer videoTrack list") }
|
|
110
110
|
|
|
111
111
|
// VIDEO REMOVE_TRACK
|
|
112
112
|
self.videoRemoveTrackListener = player.videoTracks.addEventListener(type: VideoTrackListEventTypes.REMOVE_TRACK) { [weak self] event in
|
|
113
113
|
guard let welf = self else { return }
|
|
114
114
|
if let forwardedMediaTrackListEvent = welf.onNativeMediaTrackListEvent,
|
|
115
115
|
let videoTrack = event.track as? VideoTrack {
|
|
116
|
-
if DEBUG_THEOPLAYER_EVENTS {
|
|
116
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received REMOVE_TRACK event from THEOplayer videoTrack list: trackUid = \(videoTrack.uid)") }
|
|
117
117
|
// trigger tracklist event
|
|
118
118
|
forwardedMediaTrackListEvent([
|
|
119
119
|
"track" : THEOplayerRCTTrackMetadataAggregator.aggregatedVideoTrackInfo(videoTrack: videoTrack),
|
|
@@ -122,14 +122,14 @@ class THEOplayerRCTMediaTrackEventHandler {
|
|
|
122
122
|
])
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
|
-
if DEBUG_EVENTHANDLER {
|
|
125
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] RemoveTrack listener attached to THEOplayer videoTrack list") }
|
|
126
126
|
|
|
127
127
|
// VIDEO CHANGE
|
|
128
128
|
self.videoChangeTrackListener = player.videoTracks.addEventListener(type: VideoTrackListEventTypes.CHANGE) { [weak self] event in
|
|
129
129
|
guard let welf = self else { return }
|
|
130
130
|
if let forwardedMediaTrackListEvent = welf.onNativeMediaTrackListEvent,
|
|
131
131
|
let videoTrack = event.track as? VideoTrack {
|
|
132
|
-
if DEBUG_THEOPLAYER_EVENTS {
|
|
132
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received CHANGE event from THEOplayer videoTrack list: trackUid = \(videoTrack.uid)") }
|
|
133
133
|
// trigger tracklist event
|
|
134
134
|
forwardedMediaTrackListEvent([
|
|
135
135
|
"track" : THEOplayerRCTTrackMetadataAggregator.aggregatedVideoTrackInfo(videoTrack: videoTrack),
|
|
@@ -138,7 +138,7 @@ class THEOplayerRCTMediaTrackEventHandler {
|
|
|
138
138
|
])
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
|
-
if DEBUG_EVENTHANDLER {
|
|
141
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] ChangeTrack listener attached to THEOplayer audioTrack list") }
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
private func dettachListeners() {
|
|
@@ -149,37 +149,37 @@ class THEOplayerRCTMediaTrackEventHandler {
|
|
|
149
149
|
// AUDIO ADD_TRACK
|
|
150
150
|
if let audioAddTrackListener = self.audioAddTrackListener {
|
|
151
151
|
player.audioTracks.removeEventListener(type: AudioTrackListEventTypes.ADD_TRACK, listener: audioAddTrackListener)
|
|
152
|
-
if DEBUG_EVENTHANDLER {
|
|
152
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AddTrack listener dettached from THEOplayer audioTrack list") }
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
// AUDIO REMOVE_TRACK
|
|
156
156
|
if let audioRemoveTrackListener = self.audioRemoveTrackListener {
|
|
157
157
|
player.audioTracks.removeEventListener(type: AudioTrackListEventTypes.REMOVE_TRACK, listener: audioRemoveTrackListener)
|
|
158
|
-
if DEBUG_EVENTHANDLER {
|
|
158
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] RemoveTrack listener dettached from THEOplayer audioTrack list") }
|
|
159
159
|
}
|
|
160
160
|
|
|
161
161
|
// AUDIO CHANGE
|
|
162
162
|
if let audioChangeTrackListener = self.audioChangeTrackListener {
|
|
163
163
|
player.audioTracks.removeEventListener(type: AudioTrackListEventTypes.CHANGE, listener: audioChangeTrackListener)
|
|
164
|
-
if DEBUG_EVENTHANDLER {
|
|
164
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] ChangeTrack listener dettached from THEOplayer audioTrack list") }
|
|
165
165
|
}
|
|
166
166
|
|
|
167
167
|
// VIDEO ADD_TRACK
|
|
168
168
|
if let videoAddTrackListener = self.videoAddTrackListener {
|
|
169
169
|
player.videoTracks.removeEventListener(type: VideoTrackListEventTypes.ADD_TRACK, listener: videoAddTrackListener)
|
|
170
|
-
if DEBUG_EVENTHANDLER {
|
|
170
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AddTrack listener dettached from THEOplayer videoTrack list") }
|
|
171
171
|
}
|
|
172
172
|
|
|
173
173
|
// VIDEO REMOVE_TRACK
|
|
174
174
|
if let videoRemoveTrackListener = self.videoRemoveTrackListener {
|
|
175
175
|
player.videoTracks.removeEventListener(type: VideoTrackListEventTypes.REMOVE_TRACK, listener: videoRemoveTrackListener)
|
|
176
|
-
if DEBUG_EVENTHANDLER {
|
|
176
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] RemoveTrack listener dettached from THEOplayer videoTrack list") }
|
|
177
177
|
}
|
|
178
178
|
|
|
179
179
|
// VIDEO CHANGE
|
|
180
180
|
if let videoChangeTrackListener = self.videoChangeTrackListener {
|
|
181
181
|
player.videoTracks.removeEventListener(type: VideoTrackListEventTypes.CHANGE, listener: videoChangeTrackListener)
|
|
182
|
-
if DEBUG_EVENTHANDLER {
|
|
182
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] ChangeTrack listener dettached from THEOplayer videoTrack list") }
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
185
|
}
|
|
@@ -32,7 +32,7 @@ class THEOplayerRCTNetworkUtils: NSObject, URLSessionDataDelegate {
|
|
|
32
32
|
request.httpBody = body
|
|
33
33
|
let task = self.defaultUrlSession.dataTask(with: request) { data, response, error in
|
|
34
34
|
if let error = error {
|
|
35
|
-
|
|
35
|
+
PrintUtils.printLog(logText: "request Error: \(error.localizedDescription)")
|
|
36
36
|
return
|
|
37
37
|
}
|
|
38
38
|
if let urlResponse = response as? HTTPURLResponse {
|
|
@@ -28,10 +28,10 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
|
|
|
28
28
|
if let theView = self.bridge.uiManager.view(forReactTag: node) as? THEOplayerRCTView,
|
|
29
29
|
let player = theView.player {
|
|
30
30
|
if paused && !player.paused {
|
|
31
|
-
if DEBUG_PLAYER_API {
|
|
31
|
+
if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Triggering pause on TheoPlayer") }
|
|
32
32
|
player.pause()
|
|
33
33
|
} else if !paused && player.paused {
|
|
34
|
-
if DEBUG_PLAYER_API {
|
|
34
|
+
if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Triggering play on TheoPlayer") }
|
|
35
35
|
player.play()
|
|
36
36
|
}
|
|
37
37
|
}
|
|
@@ -44,11 +44,11 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
|
|
|
44
44
|
if let theView = self.bridge.uiManager.view(forReactTag: node) as? THEOplayerRCTView,
|
|
45
45
|
let srcDescription = THEOplayerRCTSourceDescriptionBuilder.buildSourceDescription(src) {
|
|
46
46
|
if let player = theView.player {
|
|
47
|
-
if DEBUG_PLAYER_API {
|
|
47
|
+
if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Setting new source on TheoPlayer") }
|
|
48
48
|
player.source = srcDescription
|
|
49
49
|
}
|
|
50
50
|
} else {
|
|
51
|
-
if DEBUG_PLAYER_API {
|
|
51
|
+
if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Failed to update THEOplayer source.") }
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
}
|
|
@@ -65,7 +65,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
|
|
|
65
65
|
if let theView = self.bridge.uiManager.view(forReactTag: node) as? THEOplayerRCTView,
|
|
66
66
|
let player = theView.player {
|
|
67
67
|
let timeValue = time.doubleValue * 0.001
|
|
68
|
-
if DEBUG_PLAYER_API {
|
|
68
|
+
if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Seeking to \(timeValue) on TheoPlayer") }
|
|
69
69
|
player.setCurrentTime(timeValue)
|
|
70
70
|
}
|
|
71
71
|
}
|
|
@@ -77,7 +77,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
|
|
|
77
77
|
if let theView = self.bridge.uiManager.view(forReactTag: node) as? THEOplayerRCTView,
|
|
78
78
|
let player = theView.player {
|
|
79
79
|
if player.muted != muted {
|
|
80
|
-
if DEBUG_PLAYER_API {
|
|
80
|
+
if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Changing TheoPlayer to \(muted ? "muted" : "not muted")") }
|
|
81
81
|
player.muted = muted
|
|
82
82
|
}
|
|
83
83
|
}
|
|
@@ -86,7 +86,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
|
|
|
86
86
|
|
|
87
87
|
@objc(setVolume:volume:)
|
|
88
88
|
func setVolume(_ node: NSNumber, volume: NSNumber) -> Void {
|
|
89
|
-
if DEBUG_PLAYER_API {
|
|
89
|
+
if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Setting volume: TheoPlayer does not handle volume changes for iOS. This is handled by the device.") }
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
@objc(setPlaybackRate:playbackRate:)
|
|
@@ -96,7 +96,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
|
|
|
96
96
|
let player = theView.player {
|
|
97
97
|
let playbackRateValue = playbackRate.doubleValue
|
|
98
98
|
if player.playbackRate != playbackRateValue {
|
|
99
|
-
if DEBUG_PLAYER_API {
|
|
99
|
+
if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Setting playbackRate on TheoPlayer to \(playbackRateValue)") }
|
|
100
100
|
player.setPlaybackRate(playbackRateValue)
|
|
101
101
|
}
|
|
102
102
|
}
|
|
@@ -113,7 +113,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
|
|
|
113
113
|
if let theView = self.bridge.uiManager.view(forReactTag: node) as? THEOplayerRCTView,
|
|
114
114
|
let player = theView.player {
|
|
115
115
|
if player.presentationMode != newPresentationMode {
|
|
116
|
-
if DEBUG_PLAYER_API {
|
|
116
|
+
if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Changing TheoPlayer to \(presentationMode)") }
|
|
117
117
|
player.presentationMode = newPresentationMode
|
|
118
118
|
}
|
|
119
119
|
}
|
|
@@ -128,7 +128,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
|
|
|
128
128
|
if let theView = self.bridge.uiManager.view(forReactTag: node) as? THEOplayerRCTView,
|
|
129
129
|
let player = theView.player {
|
|
130
130
|
if player.fullscreen.aspectRatio != newAspectRatio {
|
|
131
|
-
if DEBUG_PLAYER_API {
|
|
131
|
+
if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Changing TheoPlayer's aspectRatio to \(ratio)") }
|
|
132
132
|
player.fullscreen.setAspectRatio(aspectRatio: newAspectRatio)
|
|
133
133
|
}
|
|
134
134
|
}
|
|
@@ -180,7 +180,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
|
|
|
180
180
|
guard textTracks.count > 0 else {
|
|
181
181
|
return
|
|
182
182
|
}
|
|
183
|
-
if DEBUG_PLAYER_API {
|
|
183
|
+
if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Showing textTrack \(uidValue) on TheoPlayer") }
|
|
184
184
|
for i in 0...textTracks.count-1 {
|
|
185
185
|
var textTrack: TextTrack = textTracks.get(i)
|
|
186
186
|
if textTrack.uid == uidValue {
|
|
@@ -203,7 +203,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
|
|
|
203
203
|
guard audioTracks.count > 0 else {
|
|
204
204
|
return
|
|
205
205
|
}
|
|
206
|
-
if DEBUG_PLAYER_API {
|
|
206
|
+
if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Enabling audioTrack \(uidValue) on TheoPlayer") }
|
|
207
207
|
for i in 0...audioTracks.count-1 {
|
|
208
208
|
var audioTrack: MediaTrack = audioTracks.get(i)
|
|
209
209
|
audioTrack.enabled = (audioTrack.uid == uidValue)
|
|
@@ -222,7 +222,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
|
|
|
222
222
|
guard videoTracks.count > 0 else {
|
|
223
223
|
return
|
|
224
224
|
}
|
|
225
|
-
if DEBUG_PLAYER_API {
|
|
225
|
+
if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Enabling videoTrack \(uidValue) on TheoPlayer") }
|
|
226
226
|
for i in 0...videoTracks.count-1 {
|
|
227
227
|
var videoTrack: MediaTrack = videoTracks.get(i)
|
|
228
228
|
videoTrack.enabled = (videoTrack.uid == uidValue)
|
|
@@ -244,7 +244,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
|
|
|
244
244
|
let player = theView.player {
|
|
245
245
|
let preloadType = THEOplayerRCTTypeUtils.preloadTypeFromString(type)
|
|
246
246
|
if player.preload != preloadType {
|
|
247
|
-
if DEBUG_PLAYER_API {
|
|
247
|
+
if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Changing TheoPlayer preload type to \(type)") }
|
|
248
248
|
player.setPreload(preloadType)
|
|
249
249
|
}
|
|
250
250
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Printing.swift
|
|
3
|
+
// THEOliveSDK
|
|
4
|
+
//
|
|
5
|
+
// Created by William van Haevre on 21/06/2021.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
|
|
10
|
+
class PrintUtils {
|
|
11
|
+
static func printLog(logText: String) {
|
|
12
|
+
let formatter = DateFormatter()
|
|
13
|
+
formatter.dateFormat = "HH:mm:ss.SSS"
|
|
14
|
+
print(formatter.string(from: Date()), logText)
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -75,7 +75,7 @@ class THEOplayerRCTSourceDescriptionBuilder {
|
|
|
75
75
|
typedSources.append(typedSource)
|
|
76
76
|
} else {
|
|
77
77
|
if DEBUG_SOURCE_DESCRIPTION_BUIDER {
|
|
78
|
-
|
|
78
|
+
PrintUtils.printLog(logText: "[NATIVE] Could not create THEOplayer TypedSource from sourceData array")
|
|
79
79
|
}
|
|
80
80
|
return nil
|
|
81
81
|
}
|
|
@@ -87,7 +87,7 @@ class THEOplayerRCTSourceDescriptionBuilder {
|
|
|
87
87
|
typedSources.append(typedSource)
|
|
88
88
|
} else {
|
|
89
89
|
if DEBUG_SOURCE_DESCRIPTION_BUIDER {
|
|
90
|
-
|
|
90
|
+
PrintUtils.printLog(logText: "[NATIVE] Could not create THEOplayer TypedSource from sourceData")
|
|
91
91
|
}
|
|
92
92
|
return nil
|
|
93
93
|
}
|
|
@@ -105,7 +105,7 @@ class THEOplayerRCTSourceDescriptionBuilder {
|
|
|
105
105
|
textTrackDescriptions?.append(textTrackDescription)
|
|
106
106
|
} else {
|
|
107
107
|
if DEBUG_SOURCE_DESCRIPTION_BUIDER {
|
|
108
|
-
|
|
108
|
+
PrintUtils.printLog(logText: "[NATIVE] Could not create THEOplayer TextTrackDescription from textTrackData array")
|
|
109
109
|
}
|
|
110
110
|
return nil
|
|
111
111
|
}
|
|
@@ -152,7 +152,7 @@ class THEOplayerRCTSourceDescriptionBuilder {
|
|
|
152
152
|
}
|
|
153
153
|
|
|
154
154
|
if DEBUG_SOURCE_DESCRIPTION_BUIDER {
|
|
155
|
-
|
|
155
|
+
PrintUtils.printLog(logText: "[NATIVE] THEOplayer TypedSource requires 'src' property in 'sources' description")
|
|
156
156
|
}
|
|
157
157
|
return nil
|
|
158
158
|
}
|
|
@@ -329,11 +329,11 @@ class THEOplayerRCTSourceDescriptionBuilder {
|
|
|
329
329
|
default: return try JSONDecoder().decode(MultiplatformDRMConfiguration.self, from: data)
|
|
330
330
|
}
|
|
331
331
|
} else {
|
|
332
|
-
|
|
332
|
+
PrintUtils.printLog(logText: "[NATIVE] integration type not specified... trying default drm integration")
|
|
333
333
|
return try JSONDecoder().decode(MultiplatformDRMConfiguration.self, from: data)
|
|
334
334
|
}
|
|
335
335
|
} catch {
|
|
336
|
-
|
|
336
|
+
PrintUtils.printLog(logText: "[NATIVE] unsupported contentProtection data format")
|
|
337
337
|
}
|
|
338
338
|
return nil
|
|
339
339
|
}
|
|
@@ -48,7 +48,7 @@ class THEOplayerRCTTextTrackEventHandler {
|
|
|
48
48
|
guard let welf = self else { return }
|
|
49
49
|
if let forwardedTextTrackListEvent = welf.onNativeTextTrackListEvent,
|
|
50
50
|
let textTrack = event.track as? TextTrack {
|
|
51
|
-
if DEBUG_THEOPLAYER_EVENTS {
|
|
51
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received ADD_TRACK event from THEOplayer textTrack list: trackUid = \(textTrack.uid)") }
|
|
52
52
|
// trigger tracklist event
|
|
53
53
|
forwardedTextTrackListEvent([
|
|
54
54
|
"track" : THEOplayerRCTTrackMetadataAggregator.aggregatedTextTrackInfo(textTrack: textTrack),
|
|
@@ -56,23 +56,23 @@ class THEOplayerRCTTextTrackEventHandler {
|
|
|
56
56
|
])
|
|
57
57
|
// start listening for cue events on this track and keep listener for later removal
|
|
58
58
|
welf.addCueListeners[textTrack.uid] = textTrack.addEventListener(type: TextTrackEventTypes.ADD_CUE, listener: welf.addCueListener(_:))
|
|
59
|
-
if DEBUG_EVENTHANDLER {
|
|
59
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AddCue listener attached to THEOplayer textTrack with uid \(textTrack.uid)") }
|
|
60
60
|
welf.removeCueListeners[textTrack.uid] = textTrack.addEventListener(type: TextTrackEventTypes.REMOVE_CUE, listener: welf.removeCueListener(_:))
|
|
61
|
-
if DEBUG_EVENTHANDLER {
|
|
61
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] RemoveCue listener attached to THEOplayer textTrack with uid \(textTrack.uid)") }
|
|
62
62
|
welf.enterCueListeners[textTrack.uid] = textTrack.addEventListener(type: TextTrackEventTypes.ENTER_CUE, listener: welf.enterCueListener(_:))
|
|
63
|
-
if DEBUG_EVENTHANDLER {
|
|
63
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] EnterCue listener attached to THEOplayer textTrack with uid \(textTrack.uid)") }
|
|
64
64
|
welf.exitCueListeners[textTrack.uid] = textTrack.addEventListener(type: TextTrackEventTypes.EXIT_CUE, listener: welf.exitCueListener(_:))
|
|
65
|
-
if DEBUG_EVENTHANDLER {
|
|
65
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] ExitCue listener attached to THEOplayer textTrack with uid \(textTrack.uid)") }
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
if DEBUG_EVENTHANDLER {
|
|
68
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AddTrack listener attached to THEOplayer textTrack list") }
|
|
69
69
|
|
|
70
70
|
// REMOVE_TRACK
|
|
71
71
|
self.removeTrackListener = player.textTracks.addEventListener(type: TextTrackListEventTypes.REMOVE_TRACK) { [weak self] event in
|
|
72
72
|
guard let welf = self else { return }
|
|
73
73
|
if let forwardedTextTrackListEvent = welf.onNativeTextTrackListEvent,
|
|
74
74
|
let textTrack = event.track as? TextTrack {
|
|
75
|
-
if DEBUG_THEOPLAYER_EVENTS {
|
|
75
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received REMOVE_TRACK event from THEOplayer textTrack list: trackUid = \(textTrack.uid)") }
|
|
76
76
|
// trigger tracklist event
|
|
77
77
|
forwardedTextTrackListEvent([
|
|
78
78
|
"track" : THEOplayerRCTTrackMetadataAggregator.aggregatedTextTrackInfo(textTrack: textTrack),
|
|
@@ -84,24 +84,24 @@ class THEOplayerRCTTextTrackEventHandler {
|
|
|
84
84
|
let enterCueListener = welf.enterCueListeners[textTrack.uid],
|
|
85
85
|
let exitCueListener = welf.exitCueListeners[textTrack.uid] {
|
|
86
86
|
textTrack.removeEventListener(type: TextTrackEventTypes.ADD_CUE, listener: addCueListener)
|
|
87
|
-
if DEBUG_EVENTHANDLER {
|
|
87
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AddCue listener removed from THEOplayer textTrack with uid \(textTrack.uid)") }
|
|
88
88
|
textTrack.removeEventListener(type: TextTrackEventTypes.REMOVE_CUE, listener: removeCueListener)
|
|
89
|
-
if DEBUG_EVENTHANDLER {
|
|
89
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] RemoveCue listener removed from THEOplayer textTrack with uid \(textTrack.uid)") }
|
|
90
90
|
textTrack.removeEventListener(type: TextTrackEventTypes.ENTER_CUE, listener: enterCueListener)
|
|
91
|
-
if DEBUG_EVENTHANDLER {
|
|
91
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] EnterCue listener removed from THEOplayer textTrack with uid \(textTrack.uid)") }
|
|
92
92
|
textTrack.removeEventListener(type: TextTrackEventTypes.EXIT_CUE, listener: exitCueListener)
|
|
93
|
-
if DEBUG_EVENTHANDLER {
|
|
93
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] ExitCue listener removed from THEOplayer textTrack with uid \(textTrack.uid)") }
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
|
-
if DEBUG_EVENTHANDLER {
|
|
97
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] RemoveTrack listener attached to THEOplayer textTrack list") }
|
|
98
98
|
|
|
99
99
|
// CHANGE
|
|
100
100
|
self.changeTrackListener = player.textTracks.addEventListener(type: TextTrackListEventTypes.CHANGE) { [weak self] event in
|
|
101
101
|
guard let welf = self else { return }
|
|
102
102
|
if let forwardedTextTrackListEvent = welf.onNativeTextTrackListEvent,
|
|
103
103
|
let textTrack = event.track as? TextTrack {
|
|
104
|
-
if DEBUG_THEOPLAYER_EVENTS {
|
|
104
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received CHANGE event from THEOplayer textTrack list: trackUid = \(textTrack.uid)") }
|
|
105
105
|
// trigger tracklist event
|
|
106
106
|
forwardedTextTrackListEvent([
|
|
107
107
|
"track" : THEOplayerRCTTrackMetadataAggregator.aggregatedTextTrackInfo(textTrack: textTrack),
|
|
@@ -109,7 +109,7 @@ class THEOplayerRCTTextTrackEventHandler {
|
|
|
109
109
|
])
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
|
-
if DEBUG_EVENTHANDLER {
|
|
112
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] ChangeTrack listener attached to THEOplayer textTrack list") }
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
private func dettachListeners() {
|
|
@@ -120,19 +120,19 @@ class THEOplayerRCTTextTrackEventHandler {
|
|
|
120
120
|
// ADD_TRACK
|
|
121
121
|
if let addTrackListener = self.addTrackListener {
|
|
122
122
|
player.textTracks.removeEventListener(type: TextTrackListEventTypes.ADD_TRACK, listener: addTrackListener)
|
|
123
|
-
if DEBUG_EVENTHANDLER {
|
|
123
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AddTrack listener dettached from THEOplayer textTrack list") }
|
|
124
124
|
}
|
|
125
125
|
|
|
126
126
|
// REMOVE_TRACK
|
|
127
127
|
if let removeTrackListener = self.removeTrackListener {
|
|
128
128
|
player.textTracks.removeEventListener(type: TextTrackListEventTypes.REMOVE_TRACK, listener: removeTrackListener)
|
|
129
|
-
if DEBUG_EVENTHANDLER {
|
|
129
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] RemoveTrack listener dettached from THEOplayer textTrack list") }
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
// CHANGE
|
|
133
133
|
if let changeTrackListener = self.changeTrackListener {
|
|
134
134
|
player.textTracks.removeEventListener(type: TextTrackListEventTypes.CHANGE, listener: changeTrackListener)
|
|
135
|
-
if DEBUG_EVENTHANDLER {
|
|
135
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] ChangeTrack listener dettached from THEOplayer textTrack list") }
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
138
|
|
|
@@ -140,7 +140,7 @@ class THEOplayerRCTTextTrackEventHandler {
|
|
|
140
140
|
private func addCueListener(_ event: AddCueEvent) {
|
|
141
141
|
if let forwardedTextTrackEvent = self.onNativeTextTrackEvent,
|
|
142
142
|
let textTrack = event.cue.track {
|
|
143
|
-
if DEBUG_THEOPLAYER_EVENTS {
|
|
143
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received ADD_CUE event from textTrack: trackUid = \(textTrack.uid), cueUid = \(event.cue.uid)") }
|
|
144
144
|
forwardedTextTrackEvent([
|
|
145
145
|
"trackUid" : textTrack.uid,
|
|
146
146
|
"type": TrackCueEventType.ADD_CUE.rawValue,
|
|
@@ -152,7 +152,7 @@ class THEOplayerRCTTextTrackEventHandler {
|
|
|
152
152
|
private func removeCueListener(_ event: RemoveCueEvent) {
|
|
153
153
|
if let forwardedTextTrackEvent = self.onNativeTextTrackEvent,
|
|
154
154
|
let textTrack = event.cue.track {
|
|
155
|
-
if DEBUG_THEOPLAYER_EVENTS {
|
|
155
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received REMOVE_CUE event from textTrack: trackUid = \(textTrack.uid), cueUid = \(event.cue.uid)") }
|
|
156
156
|
forwardedTextTrackEvent([
|
|
157
157
|
"trackUid" : textTrack.uid,
|
|
158
158
|
"type": TrackCueEventType.REMOVE_CUE.rawValue,
|
|
@@ -164,7 +164,7 @@ class THEOplayerRCTTextTrackEventHandler {
|
|
|
164
164
|
private func enterCueListener(_ event: EnterCueEvent) {
|
|
165
165
|
if let forwardedTextTrackEvent = self.onNativeTextTrackEvent,
|
|
166
166
|
let textTrack = event.cue.track {
|
|
167
|
-
if DEBUG_THEOPLAYER_EVENTS {
|
|
167
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received ENTER_CUE event from textTrack: trackUid = \(textTrack.uid), cueUid = \(event.cue.uid)") }
|
|
168
168
|
forwardedTextTrackEvent([
|
|
169
169
|
"trackUid" : textTrack.uid,
|
|
170
170
|
"type": TrackCueEventType.ENTER_CUE.rawValue,
|
|
@@ -176,7 +176,7 @@ class THEOplayerRCTTextTrackEventHandler {
|
|
|
176
176
|
private func exitCueListener(_ event: ExitCueEvent) {
|
|
177
177
|
if let forwardedTextTrackEvent = self.onNativeTextTrackEvent,
|
|
178
178
|
let textTrack = event.cue.track {
|
|
179
|
-
if DEBUG_THEOPLAYER_EVENTS {
|
|
179
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received EXIT_CUE event from textTrack: trackUid = \(textTrack.uid), cueUid = \(event.cue.uid)") }
|
|
180
180
|
forwardedTextTrackEvent([
|
|
181
181
|
"trackUid" : textTrack.uid,
|
|
182
182
|
"type": TrackCueEventType.EXIT_CUE.rawValue,
|