@100mslive/react-native-hms 0.8.3 → 0.9.1
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/README.md +16 -8
- package/android/.gradle/6.9/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/6.9/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +1 -1
- package/android/.gradle/checksums/checksums.lock +0 -0
- package/android/.gradle/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/checksums/sha1-checksums.bin +0 -0
- package/android/.idea/gradle.xml +13 -0
- package/android/.idea/misc.xml +9 -0
- package/android/.idea/modules/android.iml +18 -0
- package/android/.idea/modules.xml +8 -0
- package/android/.idea/sonarlint/issuestore/f/0/f07866736216be0ee2aba49e392191aeae700a35 +0 -0
- package/android/.idea/sonarlint/issuestore/index.pb +3 -0
- package/android/.idea/vcs.xml +6 -0
- package/android/build.gradle +4 -2
- package/android/local.properties +8 -0
- package/android/src/main/java/com/reactnativehmssdk/HmsDecoder.kt +58 -5
- package/android/src/main/java/com/reactnativehmssdk/HmsHelper.kt +76 -61
- package/android/src/main/java/com/reactnativehmssdk/HmsModule.kt +99 -8
- package/android/src/main/java/com/reactnativehmssdk/HmsSDK.kt +299 -128
- package/android/src/main/java/com/reactnativehmssdk/HmsScreenshareActivity.kt +66 -0
- package/android/src/main/java/com/reactnativehmssdk/HmsView.kt +28 -3
- package/android/src/main/java/com/reactnativehmssdk/HmssdkViewManager.kt +10 -1
- package/android/src/main/res/layout/hms_view.xml +19 -0
- package/ios/HmsDecoder.swift +217 -123
- package/ios/HmsHelper.swift +56 -38
- package/ios/HmsManager.m +11 -3
- package/ios/HmsManager.swift +125 -68
- package/ios/HmsSDK.swift +407 -189
- package/ios/HmsView.swift +50 -68
- package/ios/VideoCollectionViewCell.swift +4 -4
- package/lib/commonjs/classes/HMSBrowserRecordingState.js +6 -0
- package/lib/commonjs/classes/HMSBrowserRecordingState.js.map +1 -1
- package/lib/commonjs/classes/HMSChangeTrackStateRequest.js +3 -0
- package/lib/commonjs/classes/HMSChangeTrackStateRequest.js.map +1 -1
- package/lib/commonjs/classes/HMSEncoder.js +166 -4
- package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
- package/lib/commonjs/classes/HMSHLSConfig.js +20 -0
- package/lib/commonjs/classes/HMSHLSConfig.js.map +1 -0
- package/lib/commonjs/classes/HMSHLSMeetingURLVariant.js +23 -0
- package/lib/commonjs/classes/HMSHLSMeetingURLVariant.js.map +1 -0
- package/lib/commonjs/classes/HMSHLSStreamingState.js +23 -0
- package/lib/commonjs/classes/HMSHLSStreamingState.js.map +1 -0
- package/lib/commonjs/classes/HMSHLSVariant.js +29 -0
- package/lib/commonjs/classes/HMSHLSVariant.js.map +1 -0
- package/lib/commonjs/classes/HMSLocalAudioStats.js +26 -0
- package/lib/commonjs/classes/HMSLocalAudioStats.js.map +1 -0
- package/lib/commonjs/classes/HMSLocalVideoStats.js +32 -0
- package/lib/commonjs/classes/HMSLocalVideoStats.js.map +1 -0
- package/lib/commonjs/classes/HMSLogger.js +27 -0
- package/lib/commonjs/classes/HMSLogger.js.map +1 -1
- package/lib/commonjs/classes/HMSPeerUpdate.js +2 -0
- package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
- package/lib/commonjs/classes/HMSPermissions.js +2 -2
- package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
- package/lib/commonjs/classes/HMSRTCStats.js +38 -0
- package/lib/commonjs/classes/HMSRTCStats.js.map +1 -0
- package/lib/commonjs/classes/HMSRTCStatsReport.js +26 -0
- package/lib/commonjs/classes/HMSRTCStatsReport.js.map +1 -0
- package/lib/commonjs/classes/HMSRemoteAudioStats.js +32 -0
- package/lib/commonjs/classes/HMSRemoteAudioStats.js.map +1 -0
- package/lib/commonjs/classes/HMSRemoteVideoStats.js +38 -0
- package/lib/commonjs/classes/HMSRemoteVideoStats.js.map +1 -0
- package/lib/commonjs/classes/HMSRoom.js +6 -0
- package/lib/commonjs/classes/HMSRoom.js.map +1 -1
- package/lib/commonjs/classes/HMSRoomUpdate.js +7 -0
- package/lib/commonjs/classes/HMSRoomUpdate.js.map +1 -1
- package/lib/commonjs/classes/HMSRtmpStreamingState.js +6 -0
- package/lib/commonjs/classes/HMSRtmpStreamingState.js.map +1 -1
- package/lib/commonjs/classes/HMSSDK.js +476 -115
- package/lib/commonjs/classes/HMSSDK.js.map +1 -1
- package/lib/commonjs/classes/HMSServerRecordingState.js +3 -0
- package/lib/commonjs/classes/HMSServerRecordingState.js.map +1 -1
- package/lib/commonjs/classes/HMSUpdateListenerActions.js +5 -0
- package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
- package/lib/commonjs/classes/HmsView.js +26 -4
- package/lib/commonjs/classes/HmsView.js.map +1 -1
- package/lib/commonjs/index.js +140 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/classes/HMSBrowserRecordingState.js +6 -0
- package/lib/module/classes/HMSBrowserRecordingState.js.map +1 -1
- package/lib/module/classes/HMSChangeTrackStateRequest.js +3 -0
- package/lib/module/classes/HMSChangeTrackStateRequest.js.map +1 -1
- package/lib/module/classes/HMSEncoder.js +159 -4
- package/lib/module/classes/HMSEncoder.js.map +1 -1
- package/lib/module/classes/HMSHLSConfig.js +11 -0
- package/lib/module/classes/HMSHLSConfig.js.map +1 -0
- package/lib/module/classes/HMSHLSMeetingURLVariant.js +14 -0
- package/lib/module/classes/HMSHLSMeetingURLVariant.js.map +1 -0
- package/lib/module/classes/HMSHLSStreamingState.js +14 -0
- package/lib/module/classes/HMSHLSStreamingState.js.map +1 -0
- package/lib/module/classes/HMSHLSVariant.js +20 -0
- package/lib/module/classes/HMSHLSVariant.js.map +1 -0
- package/lib/module/classes/HMSLocalAudioStats.js +17 -0
- package/lib/module/classes/HMSLocalAudioStats.js.map +1 -0
- package/lib/module/classes/HMSLocalVideoStats.js +23 -0
- package/lib/module/classes/HMSLocalVideoStats.js.map +1 -0
- package/lib/module/classes/HMSLogger.js +27 -0
- package/lib/module/classes/HMSLogger.js.map +1 -1
- package/lib/module/classes/HMSPeerUpdate.js +2 -0
- package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
- package/lib/module/classes/HMSPermissions.js +2 -2
- package/lib/module/classes/HMSPermissions.js.map +1 -1
- package/lib/module/classes/HMSRTCStats.js +29 -0
- package/lib/module/classes/HMSRTCStats.js.map +1 -0
- package/lib/module/classes/HMSRTCStatsReport.js +17 -0
- package/lib/module/classes/HMSRTCStatsReport.js.map +1 -0
- package/lib/module/classes/HMSRemoteAudioStats.js +23 -0
- package/lib/module/classes/HMSRemoteAudioStats.js.map +1 -0
- package/lib/module/classes/HMSRemoteVideoStats.js +29 -0
- package/lib/module/classes/HMSRemoteVideoStats.js.map +1 -0
- package/lib/module/classes/HMSRoom.js +6 -0
- package/lib/module/classes/HMSRoom.js.map +1 -1
- package/lib/module/classes/HMSRoomUpdate.js +7 -0
- package/lib/module/classes/HMSRoomUpdate.js.map +1 -1
- package/lib/module/classes/HMSRtmpStreamingState.js +6 -0
- package/lib/module/classes/HMSRtmpStreamingState.js.map +1 -1
- package/lib/module/classes/HMSSDK.js +464 -116
- package/lib/module/classes/HMSSDK.js.map +1 -1
- package/lib/module/classes/HMSServerRecordingState.js +3 -0
- package/lib/module/classes/HMSServerRecordingState.js.map +1 -1
- package/lib/module/classes/HMSUpdateListenerActions.js +5 -0
- package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
- package/lib/module/classes/HmsView.js +23 -4
- package/lib/module/classes/HmsView.js.map +1 -1
- package/lib/module/index.js +10 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/classes/HMSBrowserRecordingState.d.ts +4 -0
- package/lib/typescript/classes/HMSChangeTrackStateRequest.d.ts +2 -0
- package/lib/typescript/classes/HMSEncoder.d.ts +21 -0
- package/lib/typescript/classes/HMSHLSConfig.d.ts +7 -0
- package/lib/typescript/classes/HMSHLSMeetingURLVariant.d.ts +8 -0
- package/lib/typescript/classes/HMSHLSStreamingState.d.ts +9 -0
- package/lib/typescript/classes/HMSHLSVariant.d.ts +12 -0
- package/lib/typescript/classes/HMSLocalAudioStats.d.ts +10 -0
- package/lib/typescript/classes/HMSLocalVideoStats.d.ts +15 -0
- package/lib/typescript/classes/HMSLogger.d.ts +2 -0
- package/lib/typescript/classes/HMSPeerUpdate.d.ts +3 -1
- package/lib/typescript/classes/HMSPermissions.d.ts +2 -2
- package/lib/typescript/classes/HMSRTCStats.d.ts +18 -0
- package/lib/typescript/classes/HMSRTCStatsReport.d.ts +11 -0
- package/lib/typescript/classes/HMSRemoteAudioStats.d.ts +14 -0
- package/lib/typescript/classes/HMSRemoteVideoStats.d.ts +19 -0
- package/lib/typescript/classes/HMSRoom.d.ts +5 -0
- package/lib/typescript/classes/HMSRoomUpdate.d.ts +8 -1
- package/lib/typescript/classes/HMSRtmpStreamingState.d.ts +4 -0
- package/lib/typescript/classes/HMSSDK.d.ts +33 -9
- package/lib/typescript/classes/HMSServerRecordingState.d.ts +2 -0
- package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +6 -1
- package/lib/typescript/index.d.ts +10 -0
- package/package.json +1 -1
- package/react-native-hms.podspec +1 -1
- package/src/classes/HMSBrowserRecordingState.ts +10 -1
- package/src/classes/HMSChangeTrackStateRequest.ts +7 -1
- package/src/classes/HMSEncoder.ts +163 -3
- package/src/classes/HMSHLSConfig.ts +9 -0
- package/src/classes/HMSHLSMeetingURLVariant.ts +9 -0
- package/src/classes/HMSHLSStreamingState.ts +11 -0
- package/src/classes/HMSHLSVariant.ts +18 -0
- package/src/classes/HMSLocalAudioStats.ts +15 -0
- package/src/classes/HMSLocalVideoStats.ts +23 -0
- package/src/classes/HMSLogger.ts +14 -0
- package/src/classes/HMSPeerUpdate.ts +2 -0
- package/src/classes/HMSPermissions.ts +3 -3
- package/src/classes/HMSRTCStats.ts +27 -0
- package/src/classes/HMSRTCStatsReport.ts +17 -0
- package/src/classes/HMSRemoteAudioStats.ts +21 -0
- package/src/classes/HMSRemoteVideoStats.ts +29 -0
- package/src/classes/HMSRoom.ts +7 -0
- package/src/classes/HMSRoomUpdate.ts +7 -0
- package/src/classes/HMSRtmpStreamingState.ts +10 -1
- package/src/classes/HMSSDK.tsx +325 -26
- package/src/classes/HMSServerRecordingState.ts +7 -1
- package/src/classes/HMSUpdateListenerActions.ts +5 -0
- package/src/classes/HmsView.tsx +32 -4
- package/src/index.ts +10 -0
- package/android/.gradle/6.9/executionHistory/executionHistory.bin +0 -0
- package/android/.gradle/6.9/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/6.9/fileHashes/resourceHashesCache.bin +0 -0
- package/android/.gradle/6.9/javaCompile/classAnalysis.bin +0 -0
- package/android/.gradle/6.9/javaCompile/jarAnalysis.bin +0 -0
- package/android/.gradle/6.9/javaCompile/javaCompile.lock +0 -0
- package/android/.gradle/6.9/javaCompile/taskHistory.bin +0 -0
- package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
- package/android/.project +0 -34
package/ios/HmsDecoder.swift
CHANGED
|
@@ -3,26 +3,28 @@ import Foundation
|
|
|
3
3
|
|
|
4
4
|
class HmsDecoder: NSObject {
|
|
5
5
|
static func getHmsRoom (_ hmsRoom: HMSRoom?) -> [String: Any] {
|
|
6
|
-
|
|
6
|
+
|
|
7
7
|
guard let room = hmsRoom else { return [:] }
|
|
8
|
-
|
|
8
|
+
|
|
9
9
|
let id = room.roomID ?? ""
|
|
10
10
|
let name = room.name ?? ""
|
|
11
11
|
let metaData = room.metaData ?? ""
|
|
12
|
+
let count = room.peerCount ?? 0
|
|
12
13
|
let browserRecordingState = HmsDecoder.getHMSBrowserRecordingState(hmsRoom?.browserRecordingState)
|
|
13
14
|
let rtmpStreamingState = HmsDecoder.getHMSRtmpStreamingState(hmsRoom?.rtmpStreamingState)
|
|
14
15
|
let serverRecordingState = HmsDecoder.getHMSServerRecordingState(hmsRoom?.serverRecordingState)
|
|
16
|
+
let hlsStreamingState = HmsDecoder.getHlsStreamingState(hmsRoom?.hlsStreamingState)
|
|
15
17
|
var peers = [[String: Any]]()
|
|
16
|
-
|
|
18
|
+
|
|
17
19
|
for peer in room.peers {
|
|
18
20
|
peers.append(getHmsPeer(peer))
|
|
19
21
|
}
|
|
20
|
-
|
|
21
|
-
return ["id": id, "name": name, "metaData": metaData, "peers": peers, "browserRecordingState": browserRecordingState, "rtmpHMSRtmpStreamingState": rtmpStreamingState, "serverRecordingState": serverRecordingState]
|
|
22
|
+
|
|
23
|
+
return ["id": id, "name": name, "metaData": metaData, "peers": peers, "browserRecordingState": browserRecordingState, "rtmpHMSRtmpStreamingState": rtmpStreamingState, "serverRecordingState": serverRecordingState, "hlsStreamingState": hlsStreamingState, "peerCount": count]
|
|
22
24
|
}
|
|
23
|
-
|
|
25
|
+
|
|
24
26
|
static func getHmsPeer (_ peer: HMSPeer) -> [String: Any] {
|
|
25
|
-
|
|
27
|
+
|
|
26
28
|
let peerID = peer.peerID
|
|
27
29
|
let name = peer.name
|
|
28
30
|
let isLocal = peer.isLocal
|
|
@@ -32,9 +34,9 @@ class HmsDecoder: NSObject {
|
|
|
32
34
|
let audioTrack = getHmsAudioTrack(peer.audioTrack)
|
|
33
35
|
let videoTrack = getHmsVideoTrack(peer.videoTrack)
|
|
34
36
|
let role = getHmsRole(peer.role)
|
|
35
|
-
|
|
37
|
+
|
|
36
38
|
let auxiliaryTracks = getAllTracks(peer.auxiliaryTracks ?? [] )
|
|
37
|
-
|
|
39
|
+
|
|
38
40
|
return ["peerID": peerID,
|
|
39
41
|
"name": name,
|
|
40
42
|
"isLocal": isLocal,
|
|
@@ -46,60 +48,60 @@ class HmsDecoder: NSObject {
|
|
|
46
48
|
"auxiliaryTracks": auxiliaryTracks,
|
|
47
49
|
"role": role]
|
|
48
50
|
}
|
|
49
|
-
|
|
51
|
+
|
|
50
52
|
static func getAllTracks (_ tracks: [HMSTrack]) -> [[String: Any]] {
|
|
51
53
|
var auxiliaryTracks = [[String: Any]]()
|
|
52
|
-
|
|
54
|
+
|
|
53
55
|
for track in tracks {
|
|
54
56
|
auxiliaryTracks.append(getHmsTrack(track))
|
|
55
57
|
}
|
|
56
58
|
return auxiliaryTracks
|
|
57
59
|
}
|
|
58
|
-
|
|
60
|
+
|
|
59
61
|
static func getHmsTrack (_ track: HMSTrack?) -> [String: Any] {
|
|
60
|
-
|
|
62
|
+
|
|
61
63
|
guard let hmsTrack = track else { return [:] }
|
|
62
|
-
|
|
64
|
+
|
|
63
65
|
let trackId = hmsTrack.trackId
|
|
64
66
|
let source = hmsTrack.source
|
|
65
67
|
let trackDescription = hmsTrack.trackDescription
|
|
66
68
|
let isMute = hmsTrack.isMute()
|
|
67
69
|
let type = HmsHelper.getHmsTrackType(hmsTrack.kind) ?? ""
|
|
68
|
-
|
|
70
|
+
|
|
69
71
|
return ["trackId": trackId, "source": source, "trackDescription": trackDescription, "isMute": isMute, "type": type, "kind": type]
|
|
70
72
|
}
|
|
71
|
-
|
|
73
|
+
|
|
72
74
|
static func getHmsAudioTrack (_ hmsAudioTrack: HMSAudioTrack?) -> [String: Any] {
|
|
73
|
-
|
|
75
|
+
|
|
74
76
|
guard let hmsTrack = hmsAudioTrack else { return [:] }
|
|
75
|
-
|
|
77
|
+
|
|
76
78
|
let trackId: String = hmsTrack.trackId
|
|
77
79
|
let source: String = hmsTrack.source
|
|
78
80
|
let trackDescription: String = hmsTrack.trackDescription
|
|
79
81
|
let isMute: Bool = hmsTrack.isMute()
|
|
80
82
|
let kind: String = HmsHelper.getHmsTrackType(hmsTrack.kind) ?? ""
|
|
81
|
-
|
|
83
|
+
|
|
82
84
|
return ["trackId": trackId, "source": source, "trackDescription": trackDescription, "isMute": isMute, "type": kind, "kind": kind]
|
|
83
85
|
}
|
|
84
|
-
|
|
86
|
+
|
|
85
87
|
static func getHmsVideoTrack (_ hmsVideoTrack: HMSVideoTrack?) -> [String: Any] {
|
|
86
|
-
|
|
88
|
+
|
|
87
89
|
guard let hmsTrack = hmsVideoTrack else { return [:] }
|
|
88
|
-
|
|
90
|
+
|
|
89
91
|
let trackId = hmsTrack.trackId
|
|
90
92
|
let source = hmsTrack.source
|
|
91
93
|
let trackDescription = hmsTrack.trackDescription
|
|
92
94
|
let isMute = hmsTrack.isMute()
|
|
93
95
|
let isDegraded = hmsTrack.isDegraded()
|
|
94
96
|
let kind: String = HmsHelper.getHmsTrackType(hmsTrack.kind) ?? ""
|
|
95
|
-
|
|
97
|
+
|
|
96
98
|
return ["trackId": trackId, "source": source, "trackDescription": trackDescription, "isMute": isMute, "isDegraded": isDegraded, "type": kind, "kind": kind]
|
|
97
99
|
}
|
|
98
|
-
|
|
100
|
+
|
|
99
101
|
static func getHmsLocalPeer(_ hmsLocalPeer: HMSLocalPeer?) -> [String: Any] {
|
|
100
|
-
|
|
102
|
+
|
|
101
103
|
guard let peer = hmsLocalPeer else { return [:] }
|
|
102
|
-
|
|
104
|
+
|
|
103
105
|
let peerID = peer.peerID
|
|
104
106
|
let name = peer.name
|
|
105
107
|
let isLocal = peer.isLocal
|
|
@@ -109,67 +111,75 @@ class HmsDecoder: NSObject {
|
|
|
109
111
|
let audioTrack = getHmsAudioTrack(peer.audioTrack)
|
|
110
112
|
let videoTrack = getHmsVideoTrack(peer.videoTrack)
|
|
111
113
|
let role = getHmsRole(peer.role)
|
|
112
|
-
|
|
114
|
+
|
|
113
115
|
var auxiliaryTracks = [[String: Any]]()
|
|
114
116
|
for track in peer.auxiliaryTracks ?? [] {
|
|
115
117
|
auxiliaryTracks.append(getHmsTrack(track))
|
|
116
118
|
}
|
|
117
|
-
|
|
119
|
+
|
|
118
120
|
let localAudioTrack = peer.localAudioTrack()
|
|
119
121
|
let localVideoTrack = peer.localVideoTrack()
|
|
120
|
-
|
|
122
|
+
|
|
121
123
|
var localAudioTrackData = [String: Any]()
|
|
122
124
|
if let localAudio = localAudioTrack {
|
|
123
|
-
|
|
124
|
-
localAudioTrackData = ["trackId": localAudio.trackId, "source": localAudio.source, "trackDescription": localAudio.trackDescription, "settings": getHmsAudioTrackSettings(localAudio.settings), "isMute": localAudioTrack?.isMute() ?? false, "type": type, "kind": type]
|
|
125
|
+
localAudioTrackData = getHmsLocalAudioTrack(localAudio)
|
|
125
126
|
}
|
|
126
|
-
|
|
127
|
+
|
|
127
128
|
var localVideoTrackData = [String: Any]()
|
|
128
129
|
if let localVideo = localVideoTrack {
|
|
129
|
-
|
|
130
|
-
localVideoTrackData = ["trackId": localVideo.trackId, "source": localVideo.source, "trackDescription": localVideo.trackDescription, "settings": getHmsVideoTrackSettings(localVideo.settings), "isMute":localAudioTrack?.isMute() ?? false, "type": type, "kind": type]
|
|
130
|
+
localVideoTrackData = getHmsLocalVideoTrack(localVideo)
|
|
131
131
|
}
|
|
132
|
-
|
|
132
|
+
|
|
133
133
|
return ["peerID": peerID, "name": name, "isLocal": isLocal, "customerUserID": customerUserID, "customerDescription": customerDescription, "metadata": metadata, "audioTrack": audioTrack, "videoTrack": videoTrack, "auxiliaryTracks": auxiliaryTracks, "localAudioTrackData": localAudioTrackData, "localVideoTrackData": localVideoTrackData, "role": role]
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
+
static func getHmsLocalAudioTrack(_ localAudio: HMSLocalAudioTrack) -> [String: Any] {
|
|
137
|
+
let type = HmsHelper.getHmsTrackType(localAudio.kind) ?? ""
|
|
138
|
+
return ["trackId": localAudio.trackId, "source": localAudio.source, "trackDescription": localAudio.trackDescription, "settings": getHmsAudioTrackSettings(localAudio.settings), "isMute": localAudio.isMute(), "type": type, "kind": type]
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
static func getHmsLocalVideoTrack(_ localVideo: HMSLocalVideoTrack) -> [String: Any] {
|
|
142
|
+
let type = HmsHelper.getHmsTrackType(localVideo.kind) ?? ""
|
|
143
|
+
return ["trackId": localVideo.trackId, "source": localVideo.source, "trackDescription": localVideo.trackDescription, "settings": getHmsVideoTrackSettings(localVideo.settings), "isMute": localVideo.isMute(), "type": type, "kind": type]
|
|
144
|
+
}
|
|
145
|
+
|
|
136
146
|
static func getHmsAudioTrackSettings(_ hmsAudioTrackSettings: HMSAudioTrackSettings?) -> [String: Any] {
|
|
137
|
-
|
|
147
|
+
|
|
138
148
|
guard let settings = hmsAudioTrackSettings else { return [:] }
|
|
139
|
-
|
|
149
|
+
|
|
140
150
|
let maxBitrate = settings.maxBitrate
|
|
141
151
|
let trackDescription = settings.trackDescription ?? ""
|
|
142
|
-
|
|
152
|
+
|
|
143
153
|
return ["maxBitrate": maxBitrate, "trackDescription": trackDescription]
|
|
144
154
|
}
|
|
145
|
-
|
|
155
|
+
|
|
146
156
|
static func getHmsVideoTrackSettings(_ hmsVideoTrackSettings: HMSVideoTrackSettings?) -> [String: Any] {
|
|
147
|
-
|
|
157
|
+
|
|
148
158
|
guard let settings = hmsVideoTrackSettings else { return [:] }
|
|
149
|
-
|
|
159
|
+
|
|
150
160
|
let codec = getHmsVideoTrackCodec(settings.codec)
|
|
151
161
|
let resolution = getHmsVideoResolution(settings.resolution)
|
|
152
162
|
let maxBitrate = settings.maxBitrate
|
|
153
163
|
let maxFrameRate = settings.maxFrameRate
|
|
154
164
|
let cameraFacing = getHmsVideoTrackCameraFacing(settings.cameraFacing)
|
|
155
165
|
let trackDescription = settings.trackDescription ?? ""
|
|
156
|
-
|
|
166
|
+
|
|
157
167
|
var simulcastSettingsData = [[String: Any]]()
|
|
158
168
|
if let simulcastSettings = settings.simulcastSettings {
|
|
159
169
|
for simulcast in simulcastSettings {
|
|
160
170
|
let data = ["maxBitrate": simulcast.maxBitrate,
|
|
161
171
|
"maxFrameRate": simulcast.maxFrameRate,
|
|
162
172
|
"scaleResolutionDownBy": simulcast.scaleResolutionDownBy,
|
|
163
|
-
"rid": simulcast.rid] as [String
|
|
173
|
+
"rid": simulcast.rid] as [String: Any]
|
|
164
174
|
simulcastSettingsData.append(data)
|
|
165
175
|
}
|
|
166
176
|
}
|
|
167
|
-
|
|
177
|
+
|
|
168
178
|
return ["codec": codec, "resolution": resolution, "maxBitrate": maxBitrate, "maxFrameRate": maxFrameRate, "cameraFacing": cameraFacing, "trackDescription": trackDescription, "simulcastSettings": simulcastSettingsData]
|
|
169
179
|
}
|
|
170
|
-
|
|
171
|
-
static func getHmsVideoTrackCodec(_ codec
|
|
172
|
-
switch
|
|
180
|
+
|
|
181
|
+
static func getHmsVideoTrackCodec(_ codec: HMSCodec) -> String {
|
|
182
|
+
switch codec {
|
|
173
183
|
case HMSCodec.VP8:
|
|
174
184
|
return "VP8"
|
|
175
185
|
case HMSCodec.H264:
|
|
@@ -178,9 +188,9 @@ class HmsDecoder: NSObject {
|
|
|
178
188
|
return "H264"
|
|
179
189
|
}
|
|
180
190
|
}
|
|
181
|
-
|
|
182
|
-
static func getHmsVideoTrackCameraFacing(_ cameraFacing
|
|
183
|
-
switch
|
|
191
|
+
|
|
192
|
+
static func getHmsVideoTrackCameraFacing(_ cameraFacing: HMSCameraFacing) -> String {
|
|
193
|
+
switch cameraFacing {
|
|
184
194
|
case HMSCameraFacing.front:
|
|
185
195
|
return "FRONT"
|
|
186
196
|
case HMSCameraFacing.back:
|
|
@@ -189,27 +199,27 @@ class HmsDecoder: NSObject {
|
|
|
189
199
|
return "FRONT"
|
|
190
200
|
}
|
|
191
201
|
}
|
|
192
|
-
|
|
202
|
+
|
|
193
203
|
static func getHmsVideoResolution(_ hmsVideoResolution: HMSVideoResolution?) -> [String: Any] {
|
|
194
204
|
guard let resolution = hmsVideoResolution else { return [:] }
|
|
195
|
-
|
|
205
|
+
|
|
196
206
|
return ["width": resolution.width, "height": resolution.height]
|
|
197
207
|
}
|
|
198
|
-
|
|
208
|
+
|
|
199
209
|
static func getHmsRemotePeers (_ remotePeers: [HMSRemotePeer]?) -> [[String: Any]] {
|
|
200
210
|
guard let remotePeers = remotePeers else { return [[:]] }
|
|
201
|
-
|
|
211
|
+
|
|
202
212
|
var peers = [[String: Any]]()
|
|
203
|
-
|
|
213
|
+
|
|
204
214
|
for peer in remotePeers {
|
|
205
215
|
peers.append(getHmsRemotePeer(peer))
|
|
206
216
|
}
|
|
207
|
-
|
|
217
|
+
|
|
208
218
|
return peers
|
|
209
219
|
}
|
|
210
|
-
|
|
220
|
+
|
|
211
221
|
static func getHmsRemotePeer(_ hmsRemotePeer: HMSRemotePeer) -> [String: Any] {
|
|
212
|
-
|
|
222
|
+
|
|
213
223
|
let peerID = hmsRemotePeer.peerID
|
|
214
224
|
let name = hmsRemotePeer.name
|
|
215
225
|
let isLocal = hmsRemotePeer.isLocal
|
|
@@ -219,51 +229,59 @@ class HmsDecoder: NSObject {
|
|
|
219
229
|
let audioTrack = getHmsAudioTrack(hmsRemotePeer.audioTrack)
|
|
220
230
|
let videoTrack = getHmsVideoTrack(hmsRemotePeer.videoTrack)
|
|
221
231
|
let role = getHmsRole(hmsRemotePeer.role)
|
|
222
|
-
|
|
232
|
+
|
|
223
233
|
var auxiliaryTracks = [[String: Any]]()
|
|
224
|
-
|
|
234
|
+
|
|
225
235
|
for track in hmsRemotePeer.auxiliaryTracks ?? [] {
|
|
226
236
|
auxiliaryTracks.append(getHmsTrack(track))
|
|
227
237
|
}
|
|
228
|
-
|
|
238
|
+
|
|
229
239
|
let remoteAudioTrack = hmsRemotePeer.remoteAudioTrack()
|
|
230
240
|
let remoteVideoTrack = hmsRemotePeer.remoteVideoTrack()
|
|
231
|
-
|
|
241
|
+
|
|
232
242
|
var remoteAudioTrackData = [String: Any]()
|
|
233
243
|
if let remoteAudio = remoteAudioTrack {
|
|
234
|
-
|
|
235
|
-
remoteAudioTrackData = ["trackId": remoteAudio.trackId, "source": remoteAudio.source, "trackDescription": remoteAudio.trackDescription, "playbackAllowed": remoteAudio.isPlaybackAllowed(), "isMute": remoteAudio.isMute(), "type": type, "kind": type]
|
|
244
|
+
remoteAudioTrackData = getHMSRemoteAudioTrack(remoteAudio)
|
|
236
245
|
}
|
|
237
|
-
|
|
246
|
+
|
|
238
247
|
var remoteVideoTrackData = [String: Any]()
|
|
239
248
|
if let remoteVideo = remoteVideoTrack {
|
|
240
|
-
|
|
241
|
-
remoteVideoTrackData = ["trackId": remoteVideo.trackId, "source": remoteVideo.source, "trackDescription": remoteVideo.trackDescription, "layer": remoteVideo.layer.rawValue, "playbackAllowed": remoteVideo.isPlaybackAllowed(), "isMute": remoteVideo.isMute(), "isDegraded": remoteVideo.isDegraded(), "type": type, "kind": type]
|
|
249
|
+
remoteVideoTrackData = getHMSRemoteVideoTrack(remoteVideo)
|
|
242
250
|
}
|
|
243
|
-
|
|
251
|
+
|
|
244
252
|
return ["peerID": peerID, "name": name, "isLocal": isLocal, "customerUserID": customerUserID, "customerDescription": customerDescription, "metadata": metadata, "audioTrack": audioTrack, "videoTrack": videoTrack, "auxiliaryTracks": auxiliaryTracks, "remoteAudioTrackData": remoteAudioTrackData, "remoteVideoTrackData": remoteVideoTrackData, "role": role]
|
|
245
253
|
}
|
|
246
254
|
|
|
255
|
+
static func getHMSRemoteAudioTrack(_ remoteAudio: HMSRemoteAudioTrack) -> [String: Any] {
|
|
256
|
+
let type = HmsHelper.getHmsTrackType(remoteAudio.kind) ?? ""
|
|
257
|
+
return ["trackId": remoteAudio.trackId, "source": remoteAudio.source, "trackDescription": remoteAudio.trackDescription, "playbackAllowed": remoteAudio.isPlaybackAllowed(), "isMute": remoteAudio.isMute(), "type": type, "kind": type]
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
static func getHMSRemoteVideoTrack(_ remoteVideo: HMSRemoteVideoTrack) -> [String: Any] {
|
|
261
|
+
let type = HmsHelper.getHmsTrackType(remoteVideo.kind) ?? ""
|
|
262
|
+
return ["trackId": remoteVideo.trackId, "source": remoteVideo.source, "trackDescription": remoteVideo.trackDescription, "layer": remoteVideo.layer.rawValue, "playbackAllowed": remoteVideo.isPlaybackAllowed(), "isMute": remoteVideo.isMute(), "isDegraded": remoteVideo.isDegraded(), "type": type, "kind": type]
|
|
263
|
+
}
|
|
264
|
+
|
|
247
265
|
static func getPreviewTracks(_ tracks: [HMSTrack]) -> [String: Any] {
|
|
248
|
-
|
|
266
|
+
|
|
249
267
|
var hmsTracks = [String: Any]()
|
|
250
|
-
|
|
268
|
+
|
|
251
269
|
for track in tracks {
|
|
252
270
|
if let localVideo = track as? HMSLocalVideoTrack {
|
|
253
271
|
let type = HmsHelper.getHmsTrackType(localVideo.kind) ?? ""
|
|
254
|
-
let localVideoTrackData: [String
|
|
272
|
+
let localVideoTrackData: [String: Any] = ["trackId": localVideo.trackId, "source": localVideo.source, "trackDescription": localVideo.trackDescription, "settings": getHmsVideoTrackSettings(localVideo.settings), "isMute": localVideo.isMute(), "kind": type, "type": type]
|
|
255
273
|
hmsTracks["videoTrack"] = localVideoTrackData
|
|
256
274
|
}
|
|
257
|
-
|
|
275
|
+
|
|
258
276
|
if let localAudio = track as? HMSLocalAudioTrack {
|
|
259
277
|
let type = HmsHelper.getHmsTrackType(localAudio.kind) ?? ""
|
|
260
|
-
let localAudioTrackData: [String
|
|
278
|
+
let localAudioTrackData: [String: Any] = ["trackId": localAudio.trackId, "source": localAudio.source, "trackDescription": localAudio.trackDescription, "settings": getHmsAudioTrackSettings(localAudio.settings), "isMute": localAudio.isMute(), "kind": type, "type": type]
|
|
261
279
|
hmsTracks["audioTrack"] = localAudioTrackData
|
|
262
280
|
}
|
|
263
281
|
}
|
|
264
282
|
return hmsTracks
|
|
265
283
|
}
|
|
266
|
-
|
|
284
|
+
|
|
267
285
|
static func getAllRoles(_ roles: [HMSRole]?) -> [[String: Any]] {
|
|
268
286
|
var decodedRoles = [[String: Any]]()
|
|
269
287
|
if let extractedRoles = roles {
|
|
@@ -273,24 +291,25 @@ class HmsDecoder: NSObject {
|
|
|
273
291
|
}
|
|
274
292
|
return decodedRoles
|
|
275
293
|
}
|
|
276
|
-
|
|
294
|
+
|
|
277
295
|
static func getHmsRole(_ hmsRole: HMSRole?) -> [String: Any] {
|
|
278
|
-
|
|
296
|
+
|
|
279
297
|
guard let role = hmsRole else { return [:] }
|
|
280
|
-
|
|
298
|
+
|
|
281
299
|
let name = role.name
|
|
282
300
|
let permissions = getHmsPermissions(role.permissions)
|
|
283
301
|
let publishSettings = getHmsPublishSettings(role.publishSettings)
|
|
302
|
+
let subscribeSettings = getHmsSubscribeSettings(role.subscribeSettings)
|
|
284
303
|
let priority = role.priority
|
|
285
304
|
let generalPermissions = role.generalPermissions ?? [:]
|
|
286
305
|
let internalPlugins = role.internalPlugins ?? [:]
|
|
287
306
|
let externalPlugins = role.externalPlugins ?? [:]
|
|
288
|
-
|
|
289
|
-
return ["name": name, "permissions": permissions, "publishSettings": publishSettings, "priority": priority, "generalPermissions": generalPermissions, "internalPlugins": internalPlugins, "externalPlugins": externalPlugins]
|
|
307
|
+
|
|
308
|
+
return ["name": name, "permissions": permissions, "publishSettings": publishSettings, "subscribeSettings": subscribeSettings, "priority": priority, "generalPermissions": generalPermissions, "internalPlugins": internalPlugins, "externalPlugins": externalPlugins]
|
|
290
309
|
}
|
|
291
|
-
|
|
310
|
+
|
|
292
311
|
static func getHmsPermissions (_ permissions: HMSPermissions) -> [String: Any] {
|
|
293
|
-
|
|
312
|
+
|
|
294
313
|
let endRoom = permissions.endRoom ?? false
|
|
295
314
|
let removeOthers = permissions.removeOthers ?? false
|
|
296
315
|
let stopPresentation = permissions.stopPresentation ?? false
|
|
@@ -298,7 +317,7 @@ class HmsDecoder: NSObject {
|
|
|
298
317
|
let mute = permissions.mute ?? false
|
|
299
318
|
let unmute = permissions.unmute ?? false
|
|
300
319
|
let changeRole = permissions.changeRole ?? false
|
|
301
|
-
|
|
320
|
+
|
|
302
321
|
return ["endRoom": endRoom,
|
|
303
322
|
"removeOthers": removeOthers,
|
|
304
323
|
"stopPresentation": stopPresentation,
|
|
@@ -307,21 +326,21 @@ class HmsDecoder: NSObject {
|
|
|
307
326
|
"unmute": unmute,
|
|
308
327
|
"changeRole": changeRole]
|
|
309
328
|
}
|
|
310
|
-
|
|
329
|
+
|
|
311
330
|
static func getHmsPublishSettings (_ publishSettings: HMSPublishSettings) -> [String: Any] {
|
|
312
|
-
|
|
331
|
+
|
|
313
332
|
let audio = getHmsAudioSettings(publishSettings.audio)
|
|
314
333
|
let video = getHmsVideoSettings(publishSettings.video)
|
|
315
334
|
let screen = getHmsVideoSettings(publishSettings.screen)
|
|
316
335
|
let videoSimulcastLayers = getHmsSimulcastLayers(publishSettings.videoSimulcastLayers)
|
|
317
336
|
let screenSimulcastLayers = getHmsSimulcastLayers(publishSettings.screenSimulcastLayers)
|
|
318
337
|
var allowed = publishSettings.allowed ?? []
|
|
319
|
-
if(
|
|
338
|
+
if (publishSettings.allowed) != nil {
|
|
320
339
|
allowed = getWriteableArray(publishSettings.allowed)
|
|
321
|
-
}else {
|
|
340
|
+
} else {
|
|
322
341
|
allowed = []
|
|
323
342
|
}
|
|
324
|
-
|
|
343
|
+
|
|
325
344
|
return ["audio": audio,
|
|
326
345
|
"video": video,
|
|
327
346
|
"screen": screen,
|
|
@@ -330,6 +349,30 @@ class HmsDecoder: NSObject {
|
|
|
330
349
|
"allowed": allowed]
|
|
331
350
|
}
|
|
332
351
|
|
|
352
|
+
static func getHmsSubscribeSettings (_ subscribeSettings: HMSSubscribeSettings?) -> [String: Any] {
|
|
353
|
+
guard let settings = subscribeSettings
|
|
354
|
+
else { return [:] }
|
|
355
|
+
|
|
356
|
+
let maxSubsBitRate = settings.maxSubsBitRate
|
|
357
|
+
let subscribeDegradationParam = getHmsSubscribeDegradationSettings(settings.subscribeDegradation)
|
|
358
|
+
let subscribeTo = settings.subscribeToRoles
|
|
359
|
+
|
|
360
|
+
return ["maxSubsBitRate": maxSubsBitRate, "subscribeDegradationParam": subscribeDegradationParam, "subscribeTo": subscribeTo ?? []]
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
static func getHmsSubscribeDegradationSettings (_ hmsSubscribeDegradationParams: HMSSubscribeDegradationPolicy?) -> [String: Any] {
|
|
364
|
+
guard let params = hmsSubscribeDegradationParams
|
|
365
|
+
else {
|
|
366
|
+
return [:]
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
let degradeGracePeriodSeconds = String(params.degradeGracePeriodSeconds ?? 0)
|
|
370
|
+
let packetLossThreshold = String(params.packetLossThreshold ?? 0)
|
|
371
|
+
let recoverGracePeriodSeconds = String(params.recoverGracePeriodSeconds ?? 0)
|
|
372
|
+
|
|
373
|
+
return ["degradeGracePeriodSeconds": degradeGracePeriodSeconds, "packetLossThreshold": packetLossThreshold, "recoverGracePeriodSeconds": recoverGracePeriodSeconds]
|
|
374
|
+
}
|
|
375
|
+
|
|
333
376
|
static func getWriteableArray(_ array: [String]?) -> [String] {
|
|
334
377
|
var decodedArray = [String]()
|
|
335
378
|
if let extractedArray = array {
|
|
@@ -339,36 +382,36 @@ class HmsDecoder: NSObject {
|
|
|
339
382
|
}
|
|
340
383
|
return decodedArray
|
|
341
384
|
}
|
|
342
|
-
|
|
385
|
+
|
|
343
386
|
static func getHmsAudioSettings(_ audioSettings: HMSAudioSettings) -> [String: Any] {
|
|
344
387
|
let bitRate = audioSettings.bitRate
|
|
345
388
|
let codec = audioSettings.codec
|
|
346
|
-
|
|
389
|
+
|
|
347
390
|
return ["bitRate": bitRate, "codec": codec]
|
|
348
391
|
}
|
|
349
|
-
|
|
392
|
+
|
|
350
393
|
static func getHmsVideoSettings(_ videoSettings: HMSVideoSettings) -> [String: Any] {
|
|
351
|
-
|
|
394
|
+
|
|
352
395
|
let bitRate = videoSettings.bitRate
|
|
353
396
|
let codec = videoSettings.codec
|
|
354
397
|
let frameRate = videoSettings.frameRate
|
|
355
398
|
let width = videoSettings.width
|
|
356
399
|
let height = videoSettings.height
|
|
357
|
-
|
|
400
|
+
|
|
358
401
|
return ["bitRate": bitRate ?? 0, "codec": codec, "frameRate": frameRate, "width": width, "height": height]
|
|
359
402
|
}
|
|
360
|
-
|
|
403
|
+
|
|
361
404
|
static func getHmsSimulcastLayers(_ videoSimulcastLayers: HMSSimulcastSettingsPolicy?) -> [String: Any] {
|
|
362
|
-
|
|
405
|
+
|
|
363
406
|
guard let videoLayers = videoSimulcastLayers else { return [:] }
|
|
364
|
-
|
|
407
|
+
|
|
365
408
|
let width = videoLayers.width ?? 0
|
|
366
409
|
let height = videoLayers.height ?? 0
|
|
367
410
|
let layers = getHmsSimulcastLayerSettingsPolicy(videoLayers.layers)
|
|
368
|
-
|
|
411
|
+
|
|
369
412
|
return ["width": width, "height": height, "layers": layers]
|
|
370
413
|
}
|
|
371
|
-
|
|
414
|
+
|
|
372
415
|
static func getHmsSimulcastLayerSettingsPolicy(_ layers: [HMSSimulcastLayerSettingsPolicy]?) -> [[String: Any]] {
|
|
373
416
|
var layersSettingsPolicy = [[String: Any]]()
|
|
374
417
|
if let settingsPolicies = layers {
|
|
@@ -377,54 +420,54 @@ class HmsDecoder: NSObject {
|
|
|
377
420
|
let scaleResolutionDownBy = settingsPolicy.scaleResolutionDownBy ?? 0
|
|
378
421
|
let maxBitrate = settingsPolicy.maxBitrate ?? -1
|
|
379
422
|
let maxFramerate = settingsPolicy.maxFramerate ?? -1
|
|
380
|
-
|
|
423
|
+
|
|
381
424
|
let settingsPolicyObject = ["rid": rid,
|
|
382
425
|
"scaleResolutionDownBy": scaleResolutionDownBy,
|
|
383
426
|
"maxBitrate": maxBitrate,
|
|
384
|
-
"maxFramerate": maxFramerate] as [String
|
|
385
|
-
|
|
427
|
+
"maxFramerate": maxFramerate] as [String: Any]
|
|
428
|
+
|
|
386
429
|
layersSettingsPolicy.append(settingsPolicyObject)
|
|
387
430
|
}
|
|
388
431
|
}
|
|
389
|
-
|
|
432
|
+
|
|
390
433
|
return layersSettingsPolicy
|
|
391
434
|
}
|
|
392
|
-
|
|
435
|
+
|
|
393
436
|
static func getHmsRoleChangeRequest(_ roleChangeRequest: HMSRoleChangeRequest, _ id: String?) -> [String: Any] {
|
|
394
|
-
|
|
437
|
+
|
|
395
438
|
if let sdkId = id {
|
|
396
439
|
var requestedBy: [String: Any]?
|
|
397
440
|
if let peer = roleChangeRequest.requestedBy {
|
|
398
441
|
requestedBy = getHmsPeer(peer)
|
|
399
442
|
}
|
|
400
|
-
|
|
443
|
+
|
|
401
444
|
let suggestedRole = getHmsRole(roleChangeRequest.suggestedRole)
|
|
402
|
-
|
|
403
|
-
var request = ["suggestedRole": suggestedRole, "id": sdkId] as [String
|
|
445
|
+
|
|
446
|
+
var request = ["suggestedRole": suggestedRole, "id": sdkId] as [String: Any]
|
|
404
447
|
if let requestedBy = requestedBy {
|
|
405
448
|
request["requestedBy"] = requestedBy
|
|
406
449
|
}
|
|
407
450
|
return request
|
|
408
451
|
}
|
|
409
|
-
|
|
452
|
+
|
|
410
453
|
return [:]
|
|
411
454
|
}
|
|
412
|
-
|
|
455
|
+
|
|
413
456
|
static func getHmsChangeTrackStateRequest(_ changeTrackStateRequest: HMSChangeTrackStateRequest, _ id: String) -> [String: Any] {
|
|
414
457
|
var requestedBy: [String: Any]?
|
|
415
458
|
if let peer = changeTrackStateRequest.requestedBy {
|
|
416
459
|
requestedBy = getHmsPeer(peer)
|
|
417
460
|
}
|
|
418
461
|
let trackType = changeTrackStateRequest.track.kind == .video ? "video" : "audio"
|
|
419
|
-
|
|
420
|
-
var request = ["trackType": trackType, "id": id] as [String: Any]
|
|
462
|
+
|
|
463
|
+
var request = ["trackType": trackType, "id": id, "mute": changeTrackStateRequest.mute] as [String: Any]
|
|
421
464
|
if let requestedBy = requestedBy {
|
|
422
465
|
request["requestedBy"] = requestedBy
|
|
423
466
|
}
|
|
424
|
-
|
|
467
|
+
|
|
425
468
|
return request
|
|
426
469
|
}
|
|
427
|
-
|
|
470
|
+
|
|
428
471
|
static func getError(_ errorObj: HMSError?) -> [String: Any] {
|
|
429
472
|
if let error = errorObj {
|
|
430
473
|
let code = error.code
|
|
@@ -435,43 +478,94 @@ class HmsDecoder: NSObject {
|
|
|
435
478
|
let name = error.id
|
|
436
479
|
let id = error.id
|
|
437
480
|
let action = error.action
|
|
438
|
-
|
|
439
|
-
return ["code": code, "description": description, "localizedDescription":localizedDescription, "debugDescription":debugDescription, "message":message, "name":name, "action":action, "id": id]
|
|
481
|
+
|
|
482
|
+
return ["code": code, "description": description, "localizedDescription": localizedDescription, "debugDescription": debugDescription, "message": message, "name": name, "action": action, "id": id]
|
|
440
483
|
} else {
|
|
441
484
|
return [:]
|
|
442
485
|
}
|
|
443
486
|
}
|
|
444
|
-
|
|
487
|
+
|
|
445
488
|
static func getHMSBrowserRecordingState(_ data: HMSBrowserRecordingState?) -> [String: Any] {
|
|
446
489
|
if let recordingState = data {
|
|
447
490
|
let running = recordingState.running
|
|
491
|
+
let startedAt = recordingState.startedAt?.timeIntervalSince1970 ?? 0
|
|
448
492
|
let error = HmsDecoder.getError(recordingState.error)
|
|
449
|
-
|
|
450
|
-
return ["running": running, "error": error]
|
|
493
|
+
|
|
494
|
+
return ["running": running, "error": error, "startedAt": startedAt * 1000]
|
|
451
495
|
} else {
|
|
452
496
|
return [:]
|
|
453
497
|
}
|
|
454
498
|
}
|
|
455
|
-
|
|
499
|
+
|
|
456
500
|
static func getHMSRtmpStreamingState(_ data: HMSRTMPStreamingState?) -> [String: Any] {
|
|
457
501
|
if let streamingState = data {
|
|
458
502
|
let running = streamingState.running
|
|
503
|
+
let startedAt = streamingState.startedAt?.timeIntervalSince1970 ?? 0
|
|
459
504
|
let error = HmsDecoder.getError(streamingState.error)
|
|
460
|
-
|
|
461
|
-
return ["running": running, "error": error]
|
|
505
|
+
|
|
506
|
+
return ["running": running, "error": error, "startedAt": startedAt * 1000]
|
|
462
507
|
} else {
|
|
463
508
|
return [:]
|
|
464
509
|
}
|
|
465
510
|
}
|
|
466
|
-
|
|
511
|
+
|
|
467
512
|
static func getHMSServerRecordingState(_ data: HMSServerRecordingState?) -> [String: Any] {
|
|
468
513
|
if let recordingState = data {
|
|
469
514
|
let running = recordingState.running
|
|
515
|
+
let startedAt = recordingState.startedAt?.timeIntervalSince1970 ?? 0
|
|
470
516
|
let error = HmsDecoder.getError(recordingState.error)
|
|
471
|
-
|
|
472
|
-
return ["running": running, "error": error]
|
|
517
|
+
|
|
518
|
+
return ["running": running, "error": error, "startedAt": startedAt * 1000]
|
|
473
519
|
} else {
|
|
474
520
|
return [:]
|
|
475
521
|
}
|
|
476
522
|
}
|
|
523
|
+
|
|
524
|
+
static func getHlsStreamingState(_ data: HMSHLSStreamingState?) -> [String: Any] {
|
|
525
|
+
if let streamingState = data {
|
|
526
|
+
let running = streamingState.running
|
|
527
|
+
let variants = HmsDecoder.getHMSHlsVariant(streamingState.variants)
|
|
528
|
+
|
|
529
|
+
return ["running": running, "variants": variants]
|
|
530
|
+
} else {
|
|
531
|
+
return [:]
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
static func getHMSHlsVariant(_ data: [HMSHLSVariant]?) -> [[String: Any]] {
|
|
536
|
+
var variants = [[String: Any]]()
|
|
537
|
+
|
|
538
|
+
if let hlsVariant = data {
|
|
539
|
+
for variant in hlsVariant {
|
|
540
|
+
let meetingUrl = variant.meetingURL.absoluteString
|
|
541
|
+
let metadata = variant.metadata
|
|
542
|
+
let startedAt = variant.startedAt?.timeIntervalSince1970 ?? 0
|
|
543
|
+
let hlsStreamingUrl = variant.url.absoluteString
|
|
544
|
+
|
|
545
|
+
let decodedVariant = ["meetingUrl": meetingUrl, "metadata": metadata, "hlsStreamUrl": hlsStreamingUrl, "startedAt": startedAt * 1000] as [String: Any]
|
|
546
|
+
variants.append(decodedVariant)
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
return variants
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
static func getHMSRTCStats(_ data: HMSRTCStats) -> [String: Any] {
|
|
553
|
+
return ["bitrateReceived": data.bitrateReceived, "bitrateSent": data.bitrateSent, "bytesReceived": data.bytesReceived, "bytesSent": data.bytesSent, "packetsLost": data.packetsLost, "packetsReceived": data.packetsReceived, "roundTripTime": data.roundTripTime]
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
static func getLocalAudioStats(_ data: HMSLocalAudioStats) -> [String: Any] {
|
|
557
|
+
return ["roundTripTime": data.roundTripTime, "bytesSent": data.bytesSent, "bitrate": data.bitrate]
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
static func getLocalVideoStats(_ data: HMSLocalVideoStats) -> [String: Any] {
|
|
561
|
+
return ["roundTripTime": data.roundTripTime, "bytesSent": data.bytesSent, "bitrate": data.bitrate, "resolution": HmsDecoder.getHmsVideoResolution(data.resolution), "frameRate": data.frameRate]
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
static func getRemoteAudioStats(_ data: HMSRemoteAudioStats) -> [String: Any] {
|
|
565
|
+
return ["bitrate": data.bitrate, "packetsReceived": data.packetsReceived, "packetsLost": data.packetsLost, "bytesReceived": data.bytesReceived, "jitter": data.jitter]
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
static func getRemoteVideoStats(_ data: HMSRemoteVideoStats) -> [String: Any] {
|
|
569
|
+
return ["bitrate": data.bitrate, "packetsReceived": data.packetsReceived, "packetsLost": data.packetsLost, "bytesReceived": data.bytesReceived, "jitter": data.jitter, "resolution": HmsDecoder.getHmsVideoResolution(data.resolution), "frameRate": data.frameRate]
|
|
570
|
+
}
|
|
477
571
|
}
|