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