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