@100mslive/react-native-hms 0.7.4 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -39
- 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/.project +8 -2
- package/android/build.gradle +1 -2
- package/android/src/main/java/com/reactnativehmssdk/HmsDecoder.kt +268 -232
- package/android/src/main/java/com/reactnativehmssdk/HmsHelper.kt +122 -12
- package/android/src/main/java/com/reactnativehmssdk/HmsModule.kt +143 -519
- package/android/src/main/java/com/reactnativehmssdk/HmsSDK.kt +940 -0
- package/android/src/main/java/com/reactnativehmssdk/HmsView.kt +34 -22
- package/android/src/main/java/com/reactnativehmssdk/HmssdkPackage.kt +1 -2
- package/android/src/main/java/com/reactnativehmssdk/HmssdkViewManager.kt +9 -13
- package/ios/HmsDecoder.swift +168 -33
- package/ios/HmsHelper.swift +121 -1
- package/ios/HmsManager.m +20 -14
- package/ios/HmsManager.swift +125 -398
- package/ios/HmsSDK.swift +784 -0
- package/ios/HmsView.swift +16 -8
- package/lib/commonjs/classes/HMSAudioTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSAudioTrackSettings.js +3 -0
- package/lib/commonjs/classes/HMSAudioTrackSettings.js.map +1 -1
- package/lib/commonjs/classes/HMSBrowserRecordingState.js +23 -0
- package/lib/commonjs/classes/HMSBrowserRecordingState.js.map +1 -0
- package/lib/commonjs/classes/HMSCameraFacing.js +14 -0
- package/lib/commonjs/classes/HMSCameraFacing.js.map +1 -0
- package/lib/commonjs/classes/HMSConfig.js +3 -7
- package/lib/commonjs/classes/HMSConfig.js.map +1 -1
- package/lib/commonjs/classes/HMSEncoder.js +65 -35
- package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
- package/lib/commonjs/classes/HMSException.js +30 -0
- package/lib/commonjs/classes/HMSException.js.map +1 -0
- package/lib/commonjs/classes/HMSHelper.js +2 -2
- package/lib/commonjs/classes/HMSHelper.js.map +1 -1
- package/lib/commonjs/classes/HMSLocalAudioTrack.js +39 -1
- package/lib/commonjs/classes/HMSLocalAudioTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSLocalPeer.js.map +1 -1
- package/lib/commonjs/classes/HMSLocalVideoTrack.js +28 -2
- package/lib/commonjs/classes/HMSLocalVideoTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSLogger.js +28 -1
- package/lib/commonjs/classes/HMSLogger.js.map +1 -1
- package/lib/commonjs/classes/HMSPeer.js +3 -0
- package/lib/commonjs/classes/HMSPeer.js.map +1 -1
- package/lib/commonjs/classes/HMSPeerUpdate.js +1 -0
- package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
- package/lib/commonjs/classes/HMSPermissions.js +6 -0
- package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
- package/lib/commonjs/classes/HMSRTMPConfig.js +26 -0
- package/lib/commonjs/classes/HMSRTMPConfig.js.map +1 -0
- package/lib/commonjs/classes/HMSRemoteAudioTrack.js +21 -0
- package/lib/commonjs/classes/HMSRemoteAudioTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSRemotePeer.js.map +1 -1
- package/lib/commonjs/classes/HMSRemoteVideoTrack.js +21 -0
- package/lib/commonjs/classes/HMSRemoteVideoTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSRoom.js +9 -0
- package/lib/commonjs/classes/HMSRoom.js.map +1 -1
- package/lib/commonjs/classes/HMSRtmpStreamingState.js +23 -0
- package/lib/commonjs/classes/HMSRtmpStreamingState.js.map +1 -0
- package/lib/commonjs/classes/HMSSDK.js +399 -150
- package/lib/commonjs/classes/HMSSDK.js.map +1 -1
- package/lib/commonjs/classes/HMSServerRecordingState.js +23 -0
- package/lib/commonjs/classes/HMSServerRecordingState.js.map +1 -0
- package/lib/commonjs/classes/HMSTrack.js +8 -18
- package/lib/commonjs/classes/HMSTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackSettings.js +3 -0
- package/lib/commonjs/classes/HMSTrackSettings.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackType.js +14 -0
- package/lib/commonjs/classes/HMSTrackType.js.map +1 -0
- package/lib/commonjs/classes/HMSVideoCodec.js +4 -4
- package/lib/commonjs/classes/HMSVideoCodec.js.map +1 -1
- package/lib/commonjs/classes/HMSVideoResolution.js +23 -0
- package/lib/commonjs/classes/HMSVideoResolution.js.map +1 -0
- package/lib/commonjs/classes/HMSVideoSettings.js.map +1 -1
- package/lib/commonjs/classes/HMSVideoTrack.js +2 -0
- package/lib/commonjs/classes/HMSVideoTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSVideoTrackSettings.js +0 -3
- package/lib/commonjs/classes/HMSVideoTrackSettings.js.map +1 -1
- package/lib/commonjs/classes/HmsView.js +10 -7
- package/lib/commonjs/classes/HmsView.js.map +1 -1
- package/lib/commonjs/index.js +112 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/classes/HMSAudioTrack.js.map +1 -1
- package/lib/module/classes/HMSAudioTrackSettings.js +3 -0
- package/lib/module/classes/HMSAudioTrackSettings.js.map +1 -1
- package/lib/module/classes/HMSBrowserRecordingState.js +14 -0
- package/lib/module/classes/HMSBrowserRecordingState.js.map +1 -0
- package/lib/module/classes/HMSCameraFacing.js +7 -0
- package/lib/module/classes/HMSCameraFacing.js.map +1 -0
- package/lib/module/classes/HMSConfig.js +3 -7
- package/lib/module/classes/HMSConfig.js.map +1 -1
- package/lib/module/classes/HMSEncoder.js +64 -35
- package/lib/module/classes/HMSEncoder.js.map +1 -1
- package/lib/module/classes/HMSException.js +21 -0
- package/lib/module/classes/HMSException.js.map +1 -0
- package/lib/module/classes/HMSHelper.js +2 -2
- package/lib/module/classes/HMSHelper.js.map +1 -1
- package/lib/module/classes/HMSLocalAudioTrack.js +37 -2
- package/lib/module/classes/HMSLocalAudioTrack.js.map +1 -1
- package/lib/module/classes/HMSLocalPeer.js.map +1 -1
- package/lib/module/classes/HMSLocalVideoTrack.js +25 -2
- package/lib/module/classes/HMSLocalVideoTrack.js.map +1 -1
- package/lib/module/classes/HMSLogger.js +28 -1
- package/lib/module/classes/HMSLogger.js.map +1 -1
- package/lib/module/classes/HMSPeer.js +3 -0
- package/lib/module/classes/HMSPeer.js.map +1 -1
- package/lib/module/classes/HMSPeerUpdate.js +1 -0
- package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
- package/lib/module/classes/HMSPermissions.js +6 -0
- package/lib/module/classes/HMSPermissions.js.map +1 -1
- package/lib/module/classes/HMSRTMPConfig.js +17 -0
- package/lib/module/classes/HMSRTMPConfig.js.map +1 -0
- package/lib/module/classes/HMSRemoteAudioTrack.js +18 -0
- package/lib/module/classes/HMSRemoteAudioTrack.js.map +1 -1
- package/lib/module/classes/HMSRemotePeer.js.map +1 -1
- package/lib/module/classes/HMSRemoteVideoTrack.js +18 -0
- package/lib/module/classes/HMSRemoteVideoTrack.js.map +1 -1
- package/lib/module/classes/HMSRoom.js +9 -0
- package/lib/module/classes/HMSRoom.js.map +1 -1
- package/lib/module/classes/HMSRtmpStreamingState.js +14 -0
- package/lib/module/classes/HMSRtmpStreamingState.js.map +1 -0
- package/lib/module/classes/HMSSDK.js +388 -150
- package/lib/module/classes/HMSSDK.js.map +1 -1
- package/lib/module/classes/HMSServerRecordingState.js +14 -0
- package/lib/module/classes/HMSServerRecordingState.js.map +1 -0
- package/lib/module/classes/HMSTrack.js +8 -16
- package/lib/module/classes/HMSTrack.js.map +1 -1
- package/lib/module/classes/HMSTrackSettings.js +3 -0
- package/lib/module/classes/HMSTrackSettings.js.map +1 -1
- package/lib/module/classes/HMSTrackType.js +7 -0
- package/lib/module/classes/HMSTrackType.js.map +1 -0
- package/lib/module/classes/HMSVideoCodec.js +4 -4
- package/lib/module/classes/HMSVideoCodec.js.map +1 -1
- package/lib/module/classes/HMSVideoResolution.js +14 -0
- package/lib/module/classes/HMSVideoResolution.js.map +1 -0
- package/lib/module/classes/HMSVideoSettings.js.map +1 -1
- package/lib/module/classes/HMSVideoTrack.js +2 -0
- package/lib/module/classes/HMSVideoTrack.js.map +1 -1
- package/lib/module/classes/HMSVideoTrackSettings.js +0 -3
- package/lib/module/classes/HMSVideoTrackSettings.js.map +1 -1
- package/lib/module/classes/HmsView.js +10 -7
- package/lib/module/classes/HmsView.js.map +1 -1
- package/lib/module/index.js +8 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/classes/HMSAudioTrack.d.ts +3 -0
- package/lib/typescript/classes/HMSAudioTrackSettings.d.ts +3 -0
- package/lib/typescript/classes/HMSBrowserRecordingState.d.ts +9 -0
- package/lib/typescript/classes/HMSCameraFacing.d.ts +4 -0
- package/lib/typescript/classes/HMSConfig.d.ts +2 -4
- package/lib/typescript/classes/HMSEncoder.d.ts +14 -12
- package/lib/typescript/classes/HMSException.d.ts +22 -0
- package/lib/typescript/classes/HMSLocalAudioTrack.d.ts +5 -0
- package/lib/typescript/classes/HMSLocalPeer.d.ts +6 -0
- package/lib/typescript/classes/HMSLocalVideoTrack.d.ts +4 -0
- package/lib/typescript/classes/HMSLogger.d.ts +11 -4
- package/lib/typescript/classes/HMSPeer.d.ts +2 -0
- package/lib/typescript/classes/HMSPeerUpdate.d.ts +1 -0
- package/lib/typescript/classes/HMSPermissions.d.ts +4 -0
- package/lib/typescript/classes/HMSRTMPConfig.d.ts +10 -0
- package/lib/typescript/classes/HMSRemoteAudioTrack.d.ts +4 -0
- package/lib/typescript/classes/HMSRemotePeer.d.ts +3 -0
- package/lib/typescript/classes/HMSRemoteVideoTrack.d.ts +4 -0
- package/lib/typescript/classes/HMSRoom.d.ts +9 -0
- package/lib/typescript/classes/HMSRtmpStreamingState.d.ts +9 -0
- package/lib/typescript/classes/HMSSDK.d.ts +40 -11
- package/lib/typescript/classes/HMSServerRecordingState.d.ts +9 -0
- package/lib/typescript/classes/HMSTrack.d.ts +6 -1
- package/lib/typescript/classes/HMSTrackSettings.d.ts +2 -0
- package/lib/typescript/classes/HMSTrackType.d.ts +4 -0
- package/lib/typescript/classes/HMSVideoCodec.d.ts +4 -4
- package/lib/typescript/classes/HMSVideoResolution.d.ts +8 -0
- package/lib/typescript/classes/HMSVideoSettings.d.ts +3 -3
- package/lib/typescript/classes/HMSVideoTrack.d.ts +5 -1
- package/lib/typescript/classes/HMSVideoTrackSettings.d.ts +13 -10
- package/lib/typescript/classes/HmsView.d.ts +2 -1
- package/lib/typescript/index.d.ts +8 -0
- package/package.json +1 -1
- package/src/classes/HMSAudioTrack.ts +3 -0
- package/src/classes/HMSAudioTrackSettings.ts +9 -1
- package/src/classes/HMSBrowserRecordingState.ts +11 -0
- package/src/classes/HMSCameraFacing.ts +4 -0
- package/src/classes/HMSConfig.ts +3 -7
- package/src/classes/HMSEncoder.ts +64 -28
- package/src/classes/HMSException.ts +33 -0
- package/src/classes/HMSHelper.ts +2 -2
- package/src/classes/HMSLocalAudioTrack.ts +35 -2
- package/src/classes/HMSLocalPeer.ts +6 -0
- package/src/classes/HMSLocalVideoTrack.ts +22 -2
- package/src/classes/HMSLogger.ts +19 -6
- package/src/classes/HMSPeer.ts +3 -0
- package/src/classes/HMSPeerUpdate.ts +1 -0
- package/src/classes/HMSPermissions.ts +6 -0
- package/src/classes/HMSRTMPConfig.ts +15 -0
- package/src/classes/HMSRemoteAudioTrack.ts +29 -2
- package/src/classes/HMSRemotePeer.ts +3 -0
- package/src/classes/HMSRemoteVideoTrack.ts +29 -2
- package/src/classes/HMSRoom.ts +12 -0
- package/src/classes/HMSRtmpStreamingState.ts +11 -0
- package/src/classes/{HMSSDK.ts → HMSSDK.tsx} +332 -98
- package/src/classes/HMSServerRecordingState.ts +11 -0
- package/src/classes/HMSTrack.ts +9 -15
- package/src/classes/HMSTrackSettings.ts +3 -0
- package/src/classes/HMSTrackType.ts +4 -0
- package/src/classes/HMSVideoCodec.ts +4 -4
- package/src/classes/HMSVideoResolution.ts +9 -0
- package/src/classes/HMSVideoSettings.ts +3 -3
- package/src/classes/HMSVideoTrack.ts +6 -1
- package/src/classes/HMSVideoTrackSettings.ts +13 -10
- package/src/classes/HmsView.tsx +4 -0
- package/src/index.ts +8 -0
- package/ios/Hmssdk.m +0 -8
- package/ios/Hmssdk.swift +0 -8
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
package com.reactnativehmssdk
|
|
2
2
|
|
|
3
|
+
import android.annotation.SuppressLint
|
|
3
4
|
import android.widget.FrameLayout
|
|
4
5
|
import com.facebook.react.bridge.ReactContext
|
|
6
|
+
import live.hms.video.media.tracks.HMSTrackType
|
|
5
7
|
import live.hms.video.media.tracks.HMSVideoTrack
|
|
6
|
-
import live.hms.video.sdk.HMSSDK
|
|
7
8
|
import live.hms.video.utils.SharedEglContext
|
|
8
9
|
import org.webrtc.RendererCommon
|
|
9
10
|
import org.webrtc.SurfaceViewRenderer
|
|
10
11
|
|
|
12
|
+
@SuppressLint("ViewConstructor")
|
|
11
13
|
class HmsView(context: ReactContext) : FrameLayout(context) {
|
|
12
|
-
private var surfaceView: SurfaceViewRenderer
|
|
14
|
+
private var surfaceView: SurfaceViewRenderer = SurfaceViewRenderer(context)
|
|
13
15
|
private var videoTrack: HMSVideoTrack? = null
|
|
14
16
|
private var localTrack: String? = null
|
|
15
17
|
|
|
16
18
|
init {
|
|
17
|
-
surfaceView = SurfaceViewRenderer(context)
|
|
18
19
|
surfaceView.setEnableHardwareScaler(true)
|
|
19
20
|
surfaceView.setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FIT)
|
|
20
21
|
addView(surfaceView)
|
|
@@ -54,35 +55,46 @@ class HmsView(context: ReactContext) : FrameLayout(context) {
|
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
57
|
|
|
57
|
-
fun setData(
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
fun setData(
|
|
59
|
+
id: String?,
|
|
60
|
+
trackId: String?,
|
|
61
|
+
hmsCollection: MutableMap<String, HmsSDK>,
|
|
62
|
+
mirror: Boolean?
|
|
63
|
+
) {
|
|
64
|
+
var sdkId = "12345"
|
|
65
|
+
|
|
66
|
+
if (id != null) {
|
|
67
|
+
sdkId = id
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
val hms = hmsCollection[sdkId]?.hmsSDK
|
|
71
|
+
|
|
72
|
+
if (trackId != null && hms != null) {
|
|
60
73
|
if (mirror != null) {
|
|
61
74
|
surfaceView.setMirror(mirror)
|
|
62
75
|
}
|
|
63
|
-
|
|
76
|
+
localTrack = trackId
|
|
77
|
+
val localTrackId = hms.getLocalPeer()?.videoTrack?.trackId
|
|
64
78
|
if (localTrackId == localTrack) {
|
|
65
|
-
videoTrack = hms
|
|
79
|
+
videoTrack = hms.getLocalPeer()?.videoTrack
|
|
66
80
|
}
|
|
67
81
|
|
|
68
|
-
val remotePeers = hms
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
val videoTrackId = peer.videoTrack?.trackId
|
|
82
|
+
val remotePeers = hms.getRemotePeers()
|
|
83
|
+
for (peer in remotePeers) {
|
|
84
|
+
val videoTrackId = peer.videoTrack?.trackId
|
|
72
85
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
return
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
if (videoTrackId == localTrack) {
|
|
82
|
-
videoTrack = peer.videoTrack
|
|
86
|
+
val auxiliaryTracks = peer.auxiliaryTracks
|
|
87
|
+
for (track in auxiliaryTracks) {
|
|
88
|
+
val auxTrackId = track.trackId
|
|
89
|
+
if (trackId == auxTrackId && track.type == HMSTrackType.VIDEO && !track.isMute) {
|
|
90
|
+
videoTrack = track as HMSVideoTrack
|
|
83
91
|
return
|
|
84
92
|
}
|
|
85
93
|
}
|
|
94
|
+
if (videoTrackId == localTrack) {
|
|
95
|
+
videoTrack = peer.videoTrack
|
|
96
|
+
return
|
|
97
|
+
}
|
|
86
98
|
}
|
|
87
99
|
}
|
|
88
100
|
}
|
|
@@ -4,7 +4,6 @@ import com.facebook.react.ReactPackage
|
|
|
4
4
|
import com.facebook.react.bridge.NativeModule
|
|
5
5
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
6
6
|
import com.facebook.react.uimanager.ViewManager
|
|
7
|
-
import java.util.*
|
|
8
7
|
|
|
9
8
|
class HmssdkPackage : ReactPackage {
|
|
10
9
|
override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> {
|
|
@@ -12,6 +11,6 @@ class HmssdkPackage : ReactPackage {
|
|
|
12
11
|
}
|
|
13
12
|
|
|
14
13
|
override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
|
|
15
|
-
return
|
|
14
|
+
return listOf<ViewManager<*, *>>(HmssdkViewManager())
|
|
16
15
|
}
|
|
17
16
|
}
|
|
@@ -4,7 +4,6 @@ import com.facebook.react.bridge.ReadableMap
|
|
|
4
4
|
import com.facebook.react.uimanager.SimpleViewManager
|
|
5
5
|
import com.facebook.react.uimanager.ThemedReactContext
|
|
6
6
|
import com.facebook.react.uimanager.annotations.ReactProp
|
|
7
|
-
import live.hms.video.sdk.HMSSDK
|
|
8
7
|
|
|
9
8
|
class HmssdkViewManager : SimpleViewManager<HmsView>() {
|
|
10
9
|
|
|
@@ -14,24 +13,22 @@ class HmssdkViewManager : SimpleViewManager<HmsView>() {
|
|
|
14
13
|
return REACT_CLASS
|
|
15
14
|
}
|
|
16
15
|
|
|
17
|
-
override fun onDropViewInstance(view: HmsView) {
|
|
18
|
-
super.onDropViewInstance(view)
|
|
19
|
-
}
|
|
20
|
-
|
|
21
16
|
public override fun createViewInstance(reactContext: ThemedReactContext): HmsView {
|
|
22
17
|
this.reactContext = reactContext
|
|
23
|
-
|
|
24
|
-
return view
|
|
18
|
+
return HmsView(reactContext)
|
|
25
19
|
}
|
|
26
20
|
|
|
27
21
|
@ReactProp(name = "data")
|
|
28
22
|
fun setData(view: HmsView, data: ReadableMap) {
|
|
29
23
|
val trackId = data.getString("trackId")
|
|
30
|
-
val sink = data.getBoolean("sink")
|
|
24
|
+
// val sink = data.getBoolean("sink")
|
|
25
|
+
val id = data.getString("id")
|
|
31
26
|
val mirror = data.getBoolean("mirror")
|
|
32
27
|
|
|
33
|
-
val
|
|
34
|
-
|
|
28
|
+
val hmsCollection = getHms()
|
|
29
|
+
if (hmsCollection != null) {
|
|
30
|
+
view.setData(id, trackId, hmsCollection, mirror)
|
|
31
|
+
}
|
|
35
32
|
// do the processing here
|
|
36
33
|
}
|
|
37
34
|
|
|
@@ -40,9 +37,8 @@ class HmssdkViewManager : SimpleViewManager<HmsView>() {
|
|
|
40
37
|
view.updateScaleType(data)
|
|
41
38
|
}
|
|
42
39
|
|
|
43
|
-
private fun getHms():
|
|
44
|
-
|
|
45
|
-
return hms
|
|
40
|
+
private fun getHms(): MutableMap<String, HmsSDK>? {
|
|
41
|
+
return reactContext?.getNativeModule(HmsModule::class.java)?.getHmsInstance()
|
|
46
42
|
}
|
|
47
43
|
|
|
48
44
|
companion object {
|
package/ios/HmsDecoder.swift
CHANGED
|
@@ -6,16 +6,19 @@ class HmsDecoder: NSObject {
|
|
|
6
6
|
|
|
7
7
|
guard let room = hmsRoom else { return [:] }
|
|
8
8
|
|
|
9
|
-
let id = room.roomID
|
|
10
|
-
let name = room.name
|
|
9
|
+
let id = room.roomID ?? ""
|
|
10
|
+
let name = room.name ?? ""
|
|
11
11
|
let metaData = room.metaData ?? ""
|
|
12
|
+
let browserRecordingState = HmsDecoder.getHMSBrowserRecordingState(hmsRoom?.browserRecordingState)
|
|
13
|
+
let rtmpStreamingState = HmsDecoder.getHMSRtmpStreamingState(hmsRoom?.rtmpStreamingState)
|
|
14
|
+
let serverRecordingState = HmsDecoder.getHMSServerRecordingState(hmsRoom?.serverRecordingState)
|
|
12
15
|
var peers = [[String: Any]]()
|
|
13
16
|
|
|
14
17
|
for peer in room.peers {
|
|
15
18
|
peers.append(getHmsPeer(peer))
|
|
16
19
|
}
|
|
17
20
|
|
|
18
|
-
return ["id": id, "name": name, "metaData": metaData, "peers": peers]
|
|
21
|
+
return ["id": id, "name": name, "metaData": metaData, "peers": peers, "browserRecordingState": browserRecordingState, "rtmpHMSRtmpStreamingState": rtmpStreamingState, "serverRecordingState": serverRecordingState]
|
|
19
22
|
}
|
|
20
23
|
|
|
21
24
|
static func getHmsPeer (_ peer: HMSPeer) -> [String: Any] {
|
|
@@ -24,28 +27,35 @@ class HmsDecoder: NSObject {
|
|
|
24
27
|
let name = peer.name
|
|
25
28
|
let isLocal = peer.isLocal
|
|
26
29
|
let customerUserID = peer.customerUserID ?? ""
|
|
27
|
-
let customerDescription = peer.
|
|
30
|
+
let customerDescription = peer.metadata ?? ""
|
|
31
|
+
let metadata = peer.metadata ?? ""
|
|
28
32
|
let audioTrack = getHmsAudioTrack(peer.audioTrack)
|
|
29
33
|
let videoTrack = getHmsVideoTrack(peer.videoTrack)
|
|
30
34
|
let role = getHmsRole(peer.role)
|
|
31
35
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
for track in peer.auxiliaryTracks ?? [] {
|
|
35
|
-
auxiliaryTracks.append(getHmsTrack(track))
|
|
36
|
-
}
|
|
36
|
+
let auxiliaryTracks = getAllTracks(peer.auxiliaryTracks ?? [] )
|
|
37
37
|
|
|
38
38
|
return ["peerID": peerID,
|
|
39
39
|
"name": name,
|
|
40
40
|
"isLocal": isLocal,
|
|
41
41
|
"customerUserID": customerUserID,
|
|
42
42
|
"customerDescription": customerDescription,
|
|
43
|
+
"metadata": metadata,
|
|
43
44
|
"audioTrack": audioTrack,
|
|
44
45
|
"videoTrack": videoTrack,
|
|
45
46
|
"auxiliaryTracks": auxiliaryTracks,
|
|
46
47
|
"role": role]
|
|
47
48
|
}
|
|
48
49
|
|
|
50
|
+
static func getAllTracks (_ tracks: [HMSTrack]) -> [[String: Any]] {
|
|
51
|
+
var auxiliaryTracks = [[String: Any]]()
|
|
52
|
+
|
|
53
|
+
for track in tracks {
|
|
54
|
+
auxiliaryTracks.append(getHmsTrack(track))
|
|
55
|
+
}
|
|
56
|
+
return auxiliaryTracks
|
|
57
|
+
}
|
|
58
|
+
|
|
49
59
|
static func getHmsTrack (_ track: HMSTrack?) -> [String: Any] {
|
|
50
60
|
|
|
51
61
|
guard let hmsTrack = track else { return [:] }
|
|
@@ -54,8 +64,9 @@ class HmsDecoder: NSObject {
|
|
|
54
64
|
let source = hmsTrack.source
|
|
55
65
|
let trackDescription = hmsTrack.trackDescription
|
|
56
66
|
let isMute = hmsTrack.isMute()
|
|
67
|
+
let type = HmsHelper.getHmsTrackType(hmsTrack.kind) ?? ""
|
|
57
68
|
|
|
58
|
-
return ["trackId": trackId, "source": source, "trackDescription": trackDescription, "isMute": isMute]
|
|
69
|
+
return ["trackId": trackId, "source": source, "trackDescription": trackDescription, "isMute": isMute, "type": type, "kind": type]
|
|
59
70
|
}
|
|
60
71
|
|
|
61
72
|
static func getHmsAudioTrack (_ hmsAudioTrack: HMSAudioTrack?) -> [String: Any] {
|
|
@@ -66,8 +77,9 @@ class HmsDecoder: NSObject {
|
|
|
66
77
|
let source: String = hmsTrack.source
|
|
67
78
|
let trackDescription: String = hmsTrack.trackDescription
|
|
68
79
|
let isMute: Bool = hmsTrack.isMute()
|
|
80
|
+
let kind: String = HmsHelper.getHmsTrackType(hmsTrack.kind) ?? ""
|
|
69
81
|
|
|
70
|
-
return ["trackId": trackId, "source": source, "trackDescription": trackDescription, "isMute": isMute]
|
|
82
|
+
return ["trackId": trackId, "source": source, "trackDescription": trackDescription, "isMute": isMute, "type": kind, "kind": kind]
|
|
71
83
|
}
|
|
72
84
|
|
|
73
85
|
static func getHmsVideoTrack (_ hmsVideoTrack: HMSVideoTrack?) -> [String: Any] {
|
|
@@ -78,8 +90,10 @@ class HmsDecoder: NSObject {
|
|
|
78
90
|
let source = hmsTrack.source
|
|
79
91
|
let trackDescription = hmsTrack.trackDescription
|
|
80
92
|
let isMute = hmsTrack.isMute()
|
|
93
|
+
let isDegraded = hmsTrack.isDegraded()
|
|
94
|
+
let kind: String = HmsHelper.getHmsTrackType(hmsTrack.kind) ?? ""
|
|
81
95
|
|
|
82
|
-
return ["trackId": trackId, "source": source, "trackDescription": trackDescription, "isMute": isMute]
|
|
96
|
+
return ["trackId": trackId, "source": source, "trackDescription": trackDescription, "isMute": isMute, "isDegraded": isDegraded, "type": kind, "kind": kind]
|
|
83
97
|
}
|
|
84
98
|
|
|
85
99
|
static func getHmsLocalPeer(_ hmsLocalPeer: HMSLocalPeer?) -> [String: Any] {
|
|
@@ -90,7 +104,8 @@ class HmsDecoder: NSObject {
|
|
|
90
104
|
let name = peer.name
|
|
91
105
|
let isLocal = peer.isLocal
|
|
92
106
|
let customerUserID = peer.customerUserID ?? ""
|
|
93
|
-
let customerDescription = peer.
|
|
107
|
+
let customerDescription = peer.metadata ?? ""
|
|
108
|
+
let metadata = peer.metadata ?? ""
|
|
94
109
|
let audioTrack = getHmsAudioTrack(peer.audioTrack)
|
|
95
110
|
let videoTrack = getHmsVideoTrack(peer.videoTrack)
|
|
96
111
|
let role = getHmsRole(peer.role)
|
|
@@ -105,15 +120,17 @@ class HmsDecoder: NSObject {
|
|
|
105
120
|
|
|
106
121
|
var localAudioTrackData = [String: Any]()
|
|
107
122
|
if let localAudio = localAudioTrack {
|
|
108
|
-
|
|
123
|
+
let type = HmsHelper.getHmsTrackType(localAudio.kind) ?? ""
|
|
124
|
+
localAudioTrackData = ["trackId": localAudio.trackId, "source": localAudio.source, "trackDescription": localAudio.trackDescription, "settings": getHmsAudioTrackSettings(localAudio.settings), "isMute": localAudioTrack?.isMute() ?? false, "type": type, "kind": type]
|
|
109
125
|
}
|
|
110
126
|
|
|
111
127
|
var localVideoTrackData = [String: Any]()
|
|
112
128
|
if let localVideo = localVideoTrack {
|
|
113
|
-
|
|
129
|
+
let type = HmsHelper.getHmsTrackType(localVideo.kind) ?? ""
|
|
130
|
+
localVideoTrackData = ["trackId": localVideo.trackId, "source": localVideo.source, "trackDescription": localVideo.trackDescription, "settings": getHmsVideoTrackSettings(localVideo.settings), "isMute":localAudioTrack?.isMute() ?? false, "type": type, "kind": type]
|
|
114
131
|
}
|
|
115
132
|
|
|
116
|
-
return ["peerID": peerID, "name": name, "isLocal": isLocal, "customerUserID": customerUserID, "customerDescription": customerDescription, "audioTrack": audioTrack, "videoTrack": videoTrack, "auxiliaryTracks": auxiliaryTracks, "localAudioTrackData": localAudioTrackData, "localVideoTrackData": localVideoTrackData, "role": role]
|
|
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]
|
|
117
134
|
}
|
|
118
135
|
|
|
119
136
|
static func getHmsAudioTrackSettings(_ hmsAudioTrackSettings: HMSAudioTrackSettings?) -> [String: Any] {
|
|
@@ -130,11 +147,11 @@ class HmsDecoder: NSObject {
|
|
|
130
147
|
|
|
131
148
|
guard let settings = hmsVideoTrackSettings else { return [:] }
|
|
132
149
|
|
|
133
|
-
let codec = settings.codec
|
|
134
|
-
let resolution = settings.resolution
|
|
150
|
+
let codec = getHmsVideoTrackCodec(settings.codec)
|
|
151
|
+
let resolution = getHmsVideoResolution(settings.resolution)
|
|
135
152
|
let maxBitrate = settings.maxBitrate
|
|
136
153
|
let maxFrameRate = settings.maxFrameRate
|
|
137
|
-
let cameraFacing = settings.cameraFacing
|
|
154
|
+
let cameraFacing = getHmsVideoTrackCameraFacing(settings.cameraFacing)
|
|
138
155
|
let trackDescription = settings.trackDescription ?? ""
|
|
139
156
|
|
|
140
157
|
var simulcastSettingsData = [[String: Any]]()
|
|
@@ -151,6 +168,34 @@ class HmsDecoder: NSObject {
|
|
|
151
168
|
return ["codec": codec, "resolution": resolution, "maxBitrate": maxBitrate, "maxFrameRate": maxFrameRate, "cameraFacing": cameraFacing, "trackDescription": trackDescription, "simulcastSettings": simulcastSettingsData]
|
|
152
169
|
}
|
|
153
170
|
|
|
171
|
+
static func getHmsVideoTrackCodec(_ codec : HMSCodec) -> String {
|
|
172
|
+
switch(codec) {
|
|
173
|
+
case HMSCodec.VP8:
|
|
174
|
+
return "VP8"
|
|
175
|
+
case HMSCodec.H264:
|
|
176
|
+
return "H264"
|
|
177
|
+
default:
|
|
178
|
+
return "H264"
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
static func getHmsVideoTrackCameraFacing(_ cameraFacing : HMSCameraFacing) -> String {
|
|
183
|
+
switch(cameraFacing) {
|
|
184
|
+
case HMSCameraFacing.front:
|
|
185
|
+
return "FRONT"
|
|
186
|
+
case HMSCameraFacing.back:
|
|
187
|
+
return "BACK"
|
|
188
|
+
default:
|
|
189
|
+
return "FRONT"
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
static func getHmsVideoResolution(_ hmsVideoResolution: HMSVideoResolution?) -> [String: Any] {
|
|
194
|
+
guard let resolution = hmsVideoResolution else { return [:] }
|
|
195
|
+
|
|
196
|
+
return ["width": resolution.width, "height": resolution.height]
|
|
197
|
+
}
|
|
198
|
+
|
|
154
199
|
static func getHmsRemotePeers (_ remotePeers: [HMSRemotePeer]?) -> [[String: Any]] {
|
|
155
200
|
guard let remotePeers = remotePeers else { return [[:]] }
|
|
156
201
|
|
|
@@ -169,7 +214,8 @@ class HmsDecoder: NSObject {
|
|
|
169
214
|
let name = hmsRemotePeer.name
|
|
170
215
|
let isLocal = hmsRemotePeer.isLocal
|
|
171
216
|
let customerUserID = hmsRemotePeer.customerUserID ?? ""
|
|
172
|
-
let customerDescription = hmsRemotePeer.
|
|
217
|
+
let customerDescription = hmsRemotePeer.metadata ?? ""
|
|
218
|
+
let metadata = hmsRemotePeer.metadata ?? ""
|
|
173
219
|
let audioTrack = getHmsAudioTrack(hmsRemotePeer.audioTrack)
|
|
174
220
|
let videoTrack = getHmsVideoTrack(hmsRemotePeer.videoTrack)
|
|
175
221
|
let role = getHmsRole(hmsRemotePeer.role)
|
|
@@ -185,15 +231,17 @@ class HmsDecoder: NSObject {
|
|
|
185
231
|
|
|
186
232
|
var remoteAudioTrackData = [String: Any]()
|
|
187
233
|
if let remoteAudio = remoteAudioTrack {
|
|
188
|
-
|
|
234
|
+
let type = HmsHelper.getHmsTrackType(remoteAudio.kind) ?? ""
|
|
235
|
+
remoteAudioTrackData = ["trackId": remoteAudio.trackId, "source": remoteAudio.source, "trackDescription": remoteAudio.trackDescription, "playbackAllowed": remoteAudio.isPlaybackAllowed(), "isMute": remoteAudio.isMute(), "type": type, "kind": type]
|
|
189
236
|
}
|
|
190
237
|
|
|
191
238
|
var remoteVideoTrackData = [String: Any]()
|
|
192
239
|
if let remoteVideo = remoteVideoTrack {
|
|
193
|
-
|
|
240
|
+
let type = HmsHelper.getHmsTrackType(remoteVideo.kind) ?? ""
|
|
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]
|
|
194
242
|
}
|
|
195
243
|
|
|
196
|
-
return ["peerID": peerID, "name": name, "isLocal": isLocal, "customerUserID": customerUserID, "customerDescription": customerDescription, "audioTrack": audioTrack, "videoTrack": videoTrack, "auxiliaryTracks": auxiliaryTracks, "remoteAudioTrackData": remoteAudioTrackData, "remoteVideoTrackData": remoteVideoTrackData, "role": role]
|
|
244
|
+
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]
|
|
197
245
|
}
|
|
198
246
|
|
|
199
247
|
static func getPreviewTracks(_ tracks: [HMSTrack]) -> [String: Any] {
|
|
@@ -202,12 +250,14 @@ class HmsDecoder: NSObject {
|
|
|
202
250
|
|
|
203
251
|
for track in tracks {
|
|
204
252
|
if let localVideo = track as? HMSLocalVideoTrack {
|
|
205
|
-
let
|
|
253
|
+
let type = HmsHelper.getHmsTrackType(localVideo.kind) ?? ""
|
|
254
|
+
let localVideoTrackData: [String : Any] = ["trackId": localVideo.trackId, "source": localVideo.source, "trackDescription": localVideo.trackDescription, "settings": getHmsVideoTrackSettings(localVideo.settings), "isMute": localVideo.isMute(), "kind": type, "type": type]
|
|
206
255
|
hmsTracks["videoTrack"] = localVideoTrackData
|
|
207
256
|
}
|
|
208
257
|
|
|
209
258
|
if let localAudio = track as? HMSLocalAudioTrack {
|
|
210
|
-
let
|
|
259
|
+
let type = HmsHelper.getHmsTrackType(localAudio.kind) ?? ""
|
|
260
|
+
let localAudioTrackData: [String : Any] = ["trackId": localAudio.trackId, "source": localAudio.source, "trackDescription": localAudio.trackDescription, "settings": getHmsAudioTrackSettings(localAudio.settings), "isMute": localAudio.isMute(), "kind": type, "type": type]
|
|
211
261
|
hmsTracks["audioTrack"] = localAudioTrackData
|
|
212
262
|
}
|
|
213
263
|
}
|
|
@@ -265,7 +315,12 @@ class HmsDecoder: NSObject {
|
|
|
265
315
|
let screen = getHmsVideoSettings(publishSettings.screen)
|
|
266
316
|
let videoSimulcastLayers = getHmsSimulcastLayers(publishSettings.videoSimulcastLayers)
|
|
267
317
|
let screenSimulcastLayers = getHmsSimulcastLayers(publishSettings.screenSimulcastLayers)
|
|
268
|
-
|
|
318
|
+
var allowed = publishSettings.allowed ?? []
|
|
319
|
+
if((publishSettings.allowed) != nil) {
|
|
320
|
+
allowed = getWriteableArray(publishSettings.allowed)
|
|
321
|
+
}else {
|
|
322
|
+
allowed = []
|
|
323
|
+
}
|
|
269
324
|
|
|
270
325
|
return ["audio": audio,
|
|
271
326
|
"video": video,
|
|
@@ -274,6 +329,16 @@ class HmsDecoder: NSObject {
|
|
|
274
329
|
"screenSimulcastLayers": screenSimulcastLayers,
|
|
275
330
|
"allowed": allowed]
|
|
276
331
|
}
|
|
332
|
+
|
|
333
|
+
static func getWriteableArray(_ array: [String]?) -> [String] {
|
|
334
|
+
var decodedArray = [String]()
|
|
335
|
+
if let extractedArray = array {
|
|
336
|
+
for value in extractedArray {
|
|
337
|
+
decodedArray.append(value)
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
return decodedArray
|
|
341
|
+
}
|
|
277
342
|
|
|
278
343
|
static func getHmsAudioSettings(_ audioSettings: HMSAudioSettings) -> [String: Any] {
|
|
279
344
|
let bitRate = audioSettings.bitRate
|
|
@@ -325,18 +390,88 @@ class HmsDecoder: NSObject {
|
|
|
325
390
|
return layersSettingsPolicy
|
|
326
391
|
}
|
|
327
392
|
|
|
328
|
-
static func getHmsRoleChangeRequest(_ roleChangeRequest: HMSRoleChangeRequest) -> [String: Any] {
|
|
393
|
+
static func getHmsRoleChangeRequest(_ roleChangeRequest: HMSRoleChangeRequest, _ id: String?) -> [String: Any] {
|
|
329
394
|
|
|
330
|
-
let
|
|
331
|
-
|
|
395
|
+
if let sdkId = id {
|
|
396
|
+
var requestedBy: [String: Any]?
|
|
397
|
+
if let peer = roleChangeRequest.requestedBy {
|
|
398
|
+
requestedBy = getHmsPeer(peer)
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
let suggestedRole = getHmsRole(roleChangeRequest.suggestedRole)
|
|
402
|
+
|
|
403
|
+
var request = ["suggestedRole": suggestedRole, "id": sdkId] as [String : Any]
|
|
404
|
+
if let requestedBy = requestedBy {
|
|
405
|
+
request["requestedBy"] = requestedBy
|
|
406
|
+
}
|
|
407
|
+
return request
|
|
408
|
+
}
|
|
332
409
|
|
|
333
|
-
return [
|
|
410
|
+
return [:]
|
|
334
411
|
}
|
|
335
412
|
|
|
336
|
-
static func getHmsChangeTrackStateRequest(_ changeTrackStateRequest: HMSChangeTrackStateRequest) -> [String: Any] {
|
|
337
|
-
|
|
413
|
+
static func getHmsChangeTrackStateRequest(_ changeTrackStateRequest: HMSChangeTrackStateRequest, _ id: String) -> [String: Any] {
|
|
414
|
+
var requestedBy: [String: Any]?
|
|
415
|
+
if let peer = changeTrackStateRequest.requestedBy {
|
|
416
|
+
requestedBy = getHmsPeer(peer)
|
|
417
|
+
}
|
|
338
418
|
let trackType = changeTrackStateRequest.track.kind == .video ? "video" : "audio"
|
|
339
419
|
|
|
340
|
-
|
|
420
|
+
var request = ["trackType": trackType, "id": id] as [String: Any]
|
|
421
|
+
if let requestedBy = requestedBy {
|
|
422
|
+
request["requestedBy"] = requestedBy
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
return request
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
static func getError(_ errorObj: HMSError?) -> [String: Any] {
|
|
429
|
+
if let error = errorObj {
|
|
430
|
+
let code = error.code
|
|
431
|
+
let description = error.description
|
|
432
|
+
let localizedDescription = error.localizedDescription
|
|
433
|
+
let debugDescription = error.debugDescription
|
|
434
|
+
let message = error.message
|
|
435
|
+
let name = error.id
|
|
436
|
+
let id = error.id
|
|
437
|
+
let action = error.action
|
|
438
|
+
|
|
439
|
+
return ["code": code, "description": description, "localizedDescription":localizedDescription, "debugDescription":debugDescription, "message":message, "name":name, "action":action, "id": id]
|
|
440
|
+
} else {
|
|
441
|
+
return [:]
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
static func getHMSBrowserRecordingState(_ data: HMSBrowserRecordingState?) -> [String: Any] {
|
|
446
|
+
if let recordingState = data {
|
|
447
|
+
let running = recordingState.running
|
|
448
|
+
let error = HmsDecoder.getError(recordingState.error)
|
|
449
|
+
|
|
450
|
+
return ["running": running, "error": error]
|
|
451
|
+
} else {
|
|
452
|
+
return [:]
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
static func getHMSRtmpStreamingState(_ data: HMSRTMPStreamingState?) -> [String: Any] {
|
|
457
|
+
if let streamingState = data {
|
|
458
|
+
let running = streamingState.running
|
|
459
|
+
let error = HmsDecoder.getError(streamingState.error)
|
|
460
|
+
|
|
461
|
+
return ["running": running, "error": error]
|
|
462
|
+
} else {
|
|
463
|
+
return [:]
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
static func getHMSServerRecordingState(_ data: HMSServerRecordingState?) -> [String: Any] {
|
|
468
|
+
if let recordingState = data {
|
|
469
|
+
let running = recordingState.running
|
|
470
|
+
let error = HmsDecoder.getError(recordingState.error)
|
|
471
|
+
|
|
472
|
+
return ["running": running, "error": error]
|
|
473
|
+
} else {
|
|
474
|
+
return [:]
|
|
475
|
+
}
|
|
341
476
|
}
|
|
342
477
|
}
|
package/ios/HmsHelper.swift
CHANGED
|
@@ -3,7 +3,17 @@ import Foundation
|
|
|
3
3
|
|
|
4
4
|
class HmsHelper: NSObject {
|
|
5
5
|
|
|
6
|
-
static func getPeerFromPeerId(_ peerID: String?, remotePeers: [HMSRemotePeer]?) -> HMSPeer? {
|
|
6
|
+
static func getPeerFromPeerId(_ peerID: String?, remotePeers: [HMSRemotePeer]?, localPeer: HMSLocalPeer?) -> HMSPeer? {
|
|
7
|
+
|
|
8
|
+
guard let peerID = peerID, let peers = remotePeers else { return nil }
|
|
9
|
+
if(peerID == localPeer?.peerID) {
|
|
10
|
+
return localPeer
|
|
11
|
+
}
|
|
12
|
+
return peers.first { $0.peerID == peerID }
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
static func getRemotePeerFromPeerId(_ peerID: String?, remotePeers: [HMSRemotePeer]?) -> HMSPeer? {
|
|
7
17
|
|
|
8
18
|
guard let peerID = peerID, let peers = remotePeers else { return nil }
|
|
9
19
|
|
|
@@ -53,6 +63,22 @@ class HmsHelper: NSObject {
|
|
|
53
63
|
return nil
|
|
54
64
|
}
|
|
55
65
|
|
|
66
|
+
static func getRemoteAudioAuxiliaryTrackFromTrackId(_ trackID: String?, _ remotePeers: [HMSRemotePeer]?) -> HMSRemoteAudioTrack? {
|
|
67
|
+
for peer in remotePeers ?? [] {
|
|
68
|
+
if peer.audioTrack?.trackId == trackID {
|
|
69
|
+
return peer.audioTrack as? HMSRemoteAudioTrack
|
|
70
|
+
}
|
|
71
|
+
let auxTracks = peer.auxiliaryTracks
|
|
72
|
+
|
|
73
|
+
for track in auxTracks ?? [] {
|
|
74
|
+
if (track.kind == HMSTrackKind.audio && track.trackId == trackID) {
|
|
75
|
+
return track as? HMSRemoteAudioTrack
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return nil
|
|
80
|
+
}
|
|
81
|
+
|
|
56
82
|
static func getRemoteVideoTrackFromTrackId(_ trackID: String?, _ remotePeers: [HMSRemotePeer]?) -> HMSRemoteVideoTrack? {
|
|
57
83
|
for peer in remotePeers ?? [] {
|
|
58
84
|
if peer.videoTrack?.trackId == trackID {
|
|
@@ -62,6 +88,15 @@ class HmsHelper: NSObject {
|
|
|
62
88
|
return nil
|
|
63
89
|
}
|
|
64
90
|
|
|
91
|
+
static func getHmsTrackType(_ kind: HMSTrackKind?) -> String? {
|
|
92
|
+
if(kind == HMSTrackKind.video){
|
|
93
|
+
return "VIDEO"
|
|
94
|
+
}else if(kind == HMSTrackKind.audio){
|
|
95
|
+
return "AUDIO"
|
|
96
|
+
}
|
|
97
|
+
return nil
|
|
98
|
+
}
|
|
99
|
+
|
|
65
100
|
static func getTrackFromTrackId(_ trackID: String?, _ remotePeers: [HMSRemotePeer]?) -> HMSTrack? {
|
|
66
101
|
|
|
67
102
|
for peer in remotePeers ?? [] {
|
|
@@ -80,4 +115,89 @@ class HmsHelper: NSObject {
|
|
|
80
115
|
|
|
81
116
|
return nil
|
|
82
117
|
}
|
|
118
|
+
|
|
119
|
+
static func getHms(_ credentials: NSDictionary, _ hmsCollection: [String: HmsSDK]) -> HmsSDK? {
|
|
120
|
+
guard let id = credentials.value(forKey: "id") as? String,
|
|
121
|
+
let hms = hmsCollection[id]
|
|
122
|
+
else {
|
|
123
|
+
return nil
|
|
124
|
+
}
|
|
125
|
+
return hms
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
static func getLocalVideoSettings(_ settings: NSDictionary?) -> HMSVideoTrackSettings? {
|
|
129
|
+
guard let data = settings,
|
|
130
|
+
let codec = data.value(forKey: "codec") as? String,
|
|
131
|
+
let resolution = data.value(forKey: "resolution") as? [String : Double]?,
|
|
132
|
+
let maxBitrate = data.value(forKey: "maxBitrate") as? Int,
|
|
133
|
+
let maxFrameRate = data.value(forKey: "maxFrameRate") as? Int,
|
|
134
|
+
let cameraFacing = data.value(forKey: "cameraFacing") as? String,
|
|
135
|
+
let trackDescription = data.value(forKey: "trackDescription") as? String?,
|
|
136
|
+
let resolutionObj = HmsHelper.getVideoResolution(resolution ?? [:])
|
|
137
|
+
else {
|
|
138
|
+
return nil
|
|
139
|
+
}
|
|
140
|
+
let codecEncoded = HmsHelper.getVideoCodec(codec)
|
|
141
|
+
let cameraFacingEncoded = HmsHelper.getCameraFacing(cameraFacing)
|
|
142
|
+
let hmsTrackSettings = HMSVideoTrackSettings(codec: codecEncoded, resolution: resolutionObj, maxBitrate: maxBitrate, maxFrameRate: maxFrameRate, cameraFacing: cameraFacingEncoded, trackDescription: trackDescription)
|
|
143
|
+
return hmsTrackSettings
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
static func getLocalAudioSettings(_ settings: NSDictionary?) -> HMSAudioTrackSettings? {
|
|
147
|
+
guard let data = settings,
|
|
148
|
+
let maxBitrate = data.value(forKey: "maxBitrate") as? Int,
|
|
149
|
+
let trackDescription = data.value(forKey: "trackDescription") as? String?
|
|
150
|
+
else {
|
|
151
|
+
return nil
|
|
152
|
+
}
|
|
153
|
+
let hmsTrackSettings = HMSAudioTrackSettings(maxBitrate: maxBitrate, trackDescription: trackDescription)
|
|
154
|
+
return hmsTrackSettings
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
static func getVideoResolution(_ data: [String : Double]) -> HMSVideoResolution? {
|
|
158
|
+
guard let width = data["width"],
|
|
159
|
+
let height = data["height"]
|
|
160
|
+
else {
|
|
161
|
+
return nil
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
return HMSVideoResolution.init(width: width, height: height)
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
static func getVideoCodec(_ codecString: String?) -> HMSCodec {
|
|
168
|
+
switch codecString {
|
|
169
|
+
case "H264":
|
|
170
|
+
return HMSCodec.H264
|
|
171
|
+
case "VP8":
|
|
172
|
+
return HMSCodec.VP8
|
|
173
|
+
default:
|
|
174
|
+
return HMSCodec.H264
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
static func getCameraFacing(_ cameraFacing: String) -> HMSCameraFacing {
|
|
179
|
+
switch cameraFacing {
|
|
180
|
+
case "FRONT":
|
|
181
|
+
return HMSCameraFacing.front
|
|
182
|
+
case "BACK":
|
|
183
|
+
return HMSCameraFacing.back
|
|
184
|
+
default:
|
|
185
|
+
return HMSCameraFacing.front
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
static func getRtmpUrls(_ strings: [String]?) -> [URL]? {
|
|
190
|
+
if let extractedStrings = strings {
|
|
191
|
+
var arr: [URL] = []
|
|
192
|
+
for urlString in extractedStrings {
|
|
193
|
+
let urlInstance = URL(string: urlString)
|
|
194
|
+
if let urlExtracted = urlInstance {
|
|
195
|
+
arr.append(urlExtracted)
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return arr
|
|
199
|
+
} else {
|
|
200
|
+
return nil
|
|
201
|
+
}
|
|
202
|
+
}
|
|
83
203
|
}
|