@@ -5,7 +5,6 @@ import cocoapods.AmazonChimeSDK.DefaultVideoRenderView
55import cocoapods.AmazonChimeSDK.VideoTileObserverProtocol
66import cocoapods.AmazonChimeSDK.VideoTileState
77import kotlinx.cinterop.ExperimentalForeignApi
8- import platform.UIKit.UIView
98import platform.darwin.NSObject
109import kotlin.collections.set
1110
@@ -25,36 +24,22 @@ class VideoTileObserverImpl(
2524 ).forceRegisterProtocol(this )
2625 }
2726
28- var localTileId: Long? = null
29- private set
30-
3127 internal val localRenderView: DefaultVideoRenderView = DefaultVideoRenderView ()
28+ private val remoteRenderView: MutableMap <Long , DefaultVideoRenderView > = mutableMapOf ()
3229
33- private val attendeeTileMap: MutableMap <String , Long > = mutableMapOf ()
34- private val remoteTiles: MutableMap <Long , DefaultVideoRenderView > = mutableMapOf ()
30+ fun getRemoteView (tileId : Int ): DefaultVideoRenderView ? = remoteRenderView[tileId.toLong()]
3531
3632 override fun videoTileDidAddWithTileState (tileState : VideoTileState ) {
3733 val tileId = tileState.tileId()
3834
3935 if (tileState.isLocalTile()) {
40- localTileId = tileId
4136 meetingSession.audioVideo()
4237 .bindVideoViewWithVideoView(videoView = localRenderView, tileId = tileId)
4338 onLocalTileAdded(tileId.toInt())
4439 } else {
45- val attendeeId = tileState.attendeeId()
46- val oldTileId = attendeeTileMap[attendeeId]
47- if (oldTileId != null && oldTileId != tileId) {
48- meetingSession.audioVideo().unbindVideoViewWithTileId(tileId = oldTileId)
49- remoteTiles.remove(oldTileId)
50- attendeeTileMap.remove(attendeeId)
51- onRemoteTileRemoved()
52- }
53- val renderView = remoteTiles.getOrPut(tileId) {
54- DefaultVideoRenderView ().also { it.setMirror(false ) }
55- }
56- attendeeTileMap[attendeeId] = tileId
57- renderView.setFrame(renderView.superview?.bounds ? : renderView.bounds)
40+ remoteRenderView[tileId] = DefaultVideoRenderView ()
41+ meetingSession.audioVideo()
42+ .bindVideoViewWithVideoView(videoView = remoteRenderView[tileId]!! , tileId = tileId)
5843 onRemoteTileAdded(tileId.toInt())
5944 }
6045 }
@@ -64,49 +49,17 @@ class VideoTileObserverImpl(
6449
6550 meetingSession.audioVideo().unbindVideoViewWithTileId(tileId = tileId)
6651
67- if (tileId == localTileId) {
68- localTileId = null
52+ if (tileState.isLocalTile()) {
6953 onLocalTileRemoved()
70- } else if (remoteTiles.containsKey(tileId)) {
71- remoteTiles.remove(tileId)
72- if (attendeeTileMap[tileState.attendeeId()] == tileId) {
73- attendeeTileMap.remove(tileState.attendeeId())
74- }
54+ } else if (remoteRenderView.containsKey(tileId)) {
55+ remoteRenderView - = tileId
7556 onRemoteTileRemoved()
7657 }
7758 }
7859
7960 override fun videoTileDidPauseWithTileState (tileState : VideoTileState ) {}
8061
81- override fun videoTileDidResumeWithTileState (tileState : VideoTileState ) {
82- val tileId = tileState.tileId()
83- if (tileState.isLocalTile()) {
84- localTileId = tileId
85- meetingSession.audioVideo().bindVideoViewWithVideoView(videoView = localRenderView, tileId = tileId)
86- onLocalTileAdded(tileId.toInt())
87- } else {
88- val renderView = remoteTiles.getOrPut(tileId) {
89- DefaultVideoRenderView ().also { it.setMirror(false ) }
90- }
91- attendeeTileMap[tileState.attendeeId()] = tileId
92- renderView.setFrame(renderView.superview?.bounds ? : renderView.bounds)
93- onRemoteTileAdded(tileId.toInt())
94- }
95- }
62+ override fun videoTileDidResumeWithTileState (tileState : VideoTileState ) {}
9663
9764 override fun videoTileSizeDidChangeWithTileState (tileState : VideoTileState ) {}
98-
99- fun getRemoteView (tileId : Int ): UIView ? = remoteTiles[tileId.toLong()]
100-
101- // fun rebindLocalView() {
102- // val tileId = localTileId ?: return
103- // localRenderView.setFrame(localVideoContainer.bounds)
104- // meetingSession.audioVideo().bindVideoViewWithVideoView(videoView = localRenderView, tileId = tileId)
105- // }
106-
107- fun rebindRemoteView (tileId : Int ) {
108- val renderView = remoteTiles[tileId.toLong()] ? : return
109- meetingSession.audioVideo().bindVideoViewWithVideoView(videoView = renderView, tileId = tileId.toLong())
110- }
111-
11265}
0 commit comments