@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.
Files changed (130) hide show
  1. package/README.md +10 -2
  2. package/android/.idea/gradle.xml +13 -0
  3. package/android/.idea/misc.xml +9 -0
  4. package/android/.idea/modules/android.iml +18 -0
  5. package/android/.idea/modules.xml +8 -0
  6. package/android/.idea/sonarlint/issuestore/f/0/f07866736216be0ee2aba49e392191aeae700a35 +0 -0
  7. package/android/.idea/sonarlint/issuestore/index.pb +3 -0
  8. package/android/.idea/vcs.xml +6 -0
  9. package/android/build.gradle +2 -2
  10. package/android/local.properties +8 -0
  11. package/android/src/main/java/com/reactnativehmssdk/HmsDecoder.kt +31 -4
  12. package/android/src/main/java/com/reactnativehmssdk/HmsHelper.kt +16 -64
  13. package/android/src/main/java/com/reactnativehmssdk/HmsModule.kt +17 -3
  14. package/android/src/main/java/com/reactnativehmssdk/HmsSDK.kt +97 -32
  15. package/android/src/main/java/com/reactnativehmssdk/HmsView.kt +1 -1
  16. package/ios/HmsDecoder.swift +173 -135
  17. package/ios/HmsHelper.swift +38 -41
  18. package/ios/HmsManager.m +7 -1
  19. package/ios/HmsManager.swift +111 -68
  20. package/ios/HmsSDK.swift +335 -199
  21. package/ios/HmsView.swift +45 -31
  22. package/ios/VideoCollectionViewCell.swift +4 -4
  23. package/lib/commonjs/classes/HMSBrowserRecordingState.js +6 -0
  24. package/lib/commonjs/classes/HMSBrowserRecordingState.js.map +1 -1
  25. package/lib/commonjs/classes/HMSEncoder.js +164 -4
  26. package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
  27. package/lib/commonjs/classes/HMSHLSVariant.js.map +1 -1
  28. package/lib/commonjs/classes/HMSLocalAudioStats.js +26 -0
  29. package/lib/commonjs/classes/HMSLocalAudioStats.js.map +1 -0
  30. package/lib/commonjs/classes/HMSLocalVideoStats.js +32 -0
  31. package/lib/commonjs/classes/HMSLocalVideoStats.js.map +1 -0
  32. package/lib/commonjs/classes/HMSPeerUpdate.js +2 -0
  33. package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
  34. package/lib/commonjs/classes/HMSPermissions.js +2 -2
  35. package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
  36. package/lib/commonjs/classes/HMSRTCStats.js +38 -0
  37. package/lib/commonjs/classes/HMSRTCStats.js.map +1 -0
  38. package/lib/commonjs/classes/HMSRTCStatsReport.js +26 -0
  39. package/lib/commonjs/classes/HMSRTCStatsReport.js.map +1 -0
  40. package/lib/commonjs/classes/HMSRemoteAudioStats.js +32 -0
  41. package/lib/commonjs/classes/HMSRemoteAudioStats.js.map +1 -0
  42. package/lib/commonjs/classes/HMSRemoteVideoStats.js +38 -0
  43. package/lib/commonjs/classes/HMSRemoteVideoStats.js.map +1 -0
  44. package/lib/commonjs/classes/HMSRoom.js +3 -0
  45. package/lib/commonjs/classes/HMSRoom.js.map +1 -1
  46. package/lib/commonjs/classes/HMSRoomUpdate.js +1 -0
  47. package/lib/commonjs/classes/HMSRoomUpdate.js.map +1 -1
  48. package/lib/commonjs/classes/HMSRtmpStreamingState.js +6 -0
  49. package/lib/commonjs/classes/HMSRtmpStreamingState.js.map +1 -1
  50. package/lib/commonjs/classes/HMSSDK.js +365 -111
  51. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  52. package/lib/commonjs/classes/HMSServerRecordingState.js +3 -0
  53. package/lib/commonjs/classes/HMSServerRecordingState.js.map +1 -1
  54. package/lib/commonjs/classes/HMSUpdateListenerActions.js +5 -0
  55. package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
  56. package/lib/commonjs/index.js +84 -0
  57. package/lib/commonjs/index.js.map +1 -1
  58. package/lib/module/classes/HMSBrowserRecordingState.js +6 -0
  59. package/lib/module/classes/HMSBrowserRecordingState.js.map +1 -1
  60. package/lib/module/classes/HMSEncoder.js +157 -4
  61. package/lib/module/classes/HMSEncoder.js.map +1 -1
  62. package/lib/module/classes/HMSHLSVariant.js.map +1 -1
  63. package/lib/module/classes/HMSLocalAudioStats.js +17 -0
  64. package/lib/module/classes/HMSLocalAudioStats.js.map +1 -0
  65. package/lib/module/classes/HMSLocalVideoStats.js +23 -0
  66. package/lib/module/classes/HMSLocalVideoStats.js.map +1 -0
  67. package/lib/module/classes/HMSPeerUpdate.js +2 -0
  68. package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
  69. package/lib/module/classes/HMSPermissions.js +2 -2
  70. package/lib/module/classes/HMSPermissions.js.map +1 -1
  71. package/lib/module/classes/HMSRTCStats.js +29 -0
  72. package/lib/module/classes/HMSRTCStats.js.map +1 -0
  73. package/lib/module/classes/HMSRTCStatsReport.js +17 -0
  74. package/lib/module/classes/HMSRTCStatsReport.js.map +1 -0
  75. package/lib/module/classes/HMSRemoteAudioStats.js +23 -0
  76. package/lib/module/classes/HMSRemoteAudioStats.js.map +1 -0
  77. package/lib/module/classes/HMSRemoteVideoStats.js +29 -0
  78. package/lib/module/classes/HMSRemoteVideoStats.js.map +1 -0
  79. package/lib/module/classes/HMSRoom.js +3 -0
  80. package/lib/module/classes/HMSRoom.js.map +1 -1
  81. package/lib/module/classes/HMSRoomUpdate.js +1 -0
  82. package/lib/module/classes/HMSRoomUpdate.js.map +1 -1
  83. package/lib/module/classes/HMSRtmpStreamingState.js +6 -0
  84. package/lib/module/classes/HMSRtmpStreamingState.js.map +1 -1
  85. package/lib/module/classes/HMSSDK.js +352 -111
  86. package/lib/module/classes/HMSSDK.js.map +1 -1
  87. package/lib/module/classes/HMSServerRecordingState.js +3 -0
  88. package/lib/module/classes/HMSServerRecordingState.js.map +1 -1
  89. package/lib/module/classes/HMSUpdateListenerActions.js +5 -0
  90. package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
  91. package/lib/module/index.js +6 -0
  92. package/lib/module/index.js.map +1 -1
  93. package/lib/typescript/classes/HMSBrowserRecordingState.d.ts +4 -0
  94. package/lib/typescript/classes/HMSEncoder.d.ts +21 -0
  95. package/lib/typescript/classes/HMSHLSVariant.d.ts +8 -8
  96. package/lib/typescript/classes/HMSLocalAudioStats.d.ts +10 -0
  97. package/lib/typescript/classes/HMSLocalVideoStats.d.ts +15 -0
  98. package/lib/typescript/classes/HMSPeerUpdate.d.ts +3 -1
  99. package/lib/typescript/classes/HMSPermissions.d.ts +2 -2
  100. package/lib/typescript/classes/HMSRTCStats.d.ts +18 -0
  101. package/lib/typescript/classes/HMSRTCStatsReport.d.ts +11 -0
  102. package/lib/typescript/classes/HMSRemoteAudioStats.d.ts +14 -0
  103. package/lib/typescript/classes/HMSRemoteVideoStats.d.ts +19 -0
  104. package/lib/typescript/classes/HMSRoom.d.ts +2 -0
  105. package/lib/typescript/classes/HMSRoomUpdate.d.ts +2 -1
  106. package/lib/typescript/classes/HMSRtmpStreamingState.d.ts +4 -0
  107. package/lib/typescript/classes/HMSSDK.d.ts +16 -1
  108. package/lib/typescript/classes/HMSServerRecordingState.d.ts +2 -0
  109. package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +6 -1
  110. package/lib/typescript/index.d.ts +6 -0
  111. package/package.json +1 -1
  112. package/react-native-hms.podspec +1 -1
  113. package/src/classes/HMSBrowserRecordingState.ts +10 -1
  114. package/src/classes/HMSEncoder.ts +162 -4
  115. package/src/classes/HMSHLSVariant.ts +8 -8
  116. package/src/classes/HMSLocalAudioStats.ts +15 -0
  117. package/src/classes/HMSLocalVideoStats.ts +23 -0
  118. package/src/classes/HMSPeerUpdate.ts +2 -0
  119. package/src/classes/HMSPermissions.ts +3 -3
  120. package/src/classes/HMSRTCStats.ts +27 -0
  121. package/src/classes/HMSRTCStatsReport.ts +17 -0
  122. package/src/classes/HMSRemoteAudioStats.ts +21 -0
  123. package/src/classes/HMSRemoteVideoStats.ts +29 -0
  124. package/src/classes/HMSRoom.ts +3 -0
  125. package/src/classes/HMSRoomUpdate.ts +1 -0
  126. package/src/classes/HMSRtmpStreamingState.ts +10 -1
  127. package/src/classes/HMSSDK.tsx +233 -10
  128. package/src/classes/HMSServerRecordingState.ts +7 -1
  129. package/src/classes/HMSUpdateListenerActions.ts +5 -0
  130. package/src/index.ts +6 -0
@@ -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
- let type = HmsHelper.getHmsTrackType(localAudio.kind) ?? ""
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
- let type = HmsHelper.getHmsTrackType(localVideo.kind) ?? ""
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 : Any]
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 : HMSCodec) -> String {
173
- switch(codec) {
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 : HMSCameraFacing) -> String {
184
- switch(cameraFacing) {
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
- let type = HmsHelper.getHmsTrackType(remoteAudio.kind) ?? ""
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
- let type = HmsHelper.getHmsTrackType(remoteVideo.kind) ?? ""
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 : Any] = ["trackId": localVideo.trackId, "source": localVideo.source, "trackDescription": localVideo.trackDescription, "settings": getHmsVideoTrackSettings(localVideo.settings), "isMute": localVideo.isMute(), "kind": type, "type": type]
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 : Any] = ["trackId": localAudio.trackId, "source": localAudio.source, "trackDescription": localAudio.trackDescription, "settings": getHmsAudioTrackSettings(localAudio.settings), "isMute": localAudio.isMute(), "kind": type, "type": type]
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((publishSettings.allowed) != nil) {
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 : Any]
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 : Any]
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
  }