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