-
Notifications
You must be signed in to change notification settings - Fork 48
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Video binding failing in some cases due to a bug in DefaultVideoTileController
#499
Comments
Thanks for reporting this. We will investigate and update in the support ticket. |
Yes The key fact is that sometimes This is why I suggested adding a call to
Do you mean the way we call the Chime API? It most likely differs in many ways. |
Hi @Jim-Bar , when |
Hi @hokyungh, no we don't call
Thanks for taking the time to look into this. |
Thank you. This looks like we need to redesign DefaultVideoTileController to make it easier to use. Let me add feature request label and discuss with the team. |
Okay, thanks for the feedback. |
Hi, just letting you know that we reproduce this issue on iOS too (0.22.2). A possible fix seems similar to the one for Android (adding Side note: is it normal that we cannot use a custom implementation of |
Thank you @Jim-Bar for the detailed explanation. As stated in the use case 14 and api overview, it is suggested that |
Hi, as I said previously due to the framework with use in our app this is no simple task. I managed to do it though, I think it solves most of our cases but I'm not 100% sure yet. Nonetheless I would recommend to add the lines I described previously in the SDK because I really think this can show up as soon as one fails to properly call |
Hi, this is still a problem for us. Did you make progress on what you want to do with this issue? If you are willing to accept PRs I could make one that fixes this for both Android and iOS. |
Hi,
We think there is a mistake in
DefaultVideoTileController
which causes video bindings to fail under certain circumstances. This occurs when two participants in a video meeting swap their videos.Description
Initial situation:
VideoRenderView
A showstileId
1VideoRenderView
B showstileId
2Final situation (expected):
VideoRenderView
A showstileId
2VideoRenderView
B showstileId
1Final situation (actual):
VideoRenderView
A shows frozentileId
1VideoRenderView
B showstileId
1To Reproduce
Here are the steps to reproduce:
VideoRenderView
of the second participant to the firsttileId
VideoRenderView
of the first participant to the secondtileId
The video of the second participant shows the old video and is frozen (binding didn't occur).
We did not try to reproduce it on the demo app because it means a bit of work for triggering the swap of videos. However I can upload a video recording of the bug occurring in our application if needed.
Explanation and probable solution
The problem is caused by step 2. When the video is disabled,
DefaultVideoTileController::onRemoveVideoTile()
is invoked but does not remove theVideoRenderView
(let's call it X) fromrenderViewToBoundVideoTileMap
. Most likely a call toremoveRenderViewFromBoundVideoTileMap(tileId)
is missing line 201.Then when later re-enabling the video, a new
VideoRenderView
is created (let's call it Y). Then, when swapping the videos, the following occurs:DefaultVideoTileController::bindVideoView()
is invokedVideoRenderView
is associated with a video tile is entered ("Override the binding from (…)")removeRenderViewFromBoundVideoTileMap()
to remove theVideoRenderView
which is going to be replacedrenderViewToBoundVideoTileMap.entries.firstOrNull
finds theVideoRenderView
X (which no more exists and should have been removed inonRemoveVideoTile()
) and removes it from the map instead of finding and removing Y (both have the savetileId
)DefaultVideoTileController::bindVideoView()
is invoked a second time to swap the second videoremoveRenderViewFromBoundVideoTileMap()
which in turn callsvideoTile.unbind()
, unbinding the first video we swapped previouslyWe confirmed that by adding the missing call line 201 described above the bug goes away. This seems to be the right way of solving the issue, however we are not that familiar with the internals of Chime so maybe there is a better way.
Test environment Info
Additional info
This was not tested on iOS.
The text was updated successfully, but these errors were encountered: