Description
While running our app and in a meeting, occasionally the normal video elements of joining participants will be permanently black. There is no avatar or user name. It seems to happen most often when multiple users are joining at once at the beginning of a meeting.
Which macOS Meeting SDK version?
v5.9.1
To Reproduce(If applicable)
Steps to reproduce the behavior:
- Create a Zoom meeting and invite several users
- Join the meeting with the custom app/SDK
- Wait for other users to join
- When other users join, sometimes their normal video element will be black.
- Restart the app and rejoin the meeting
- Users will (likely?) now have video
Screenshots
Device (please complete the following information):
Apple MacBook Pro (13-inch, M1)
macOS 12.0.1
Additional context
- Only applies to ZoomSDKNormalVideoElement. Active video element is fine.
- If displayUserNameOnVideo is set, the user name is usually(?) incorrect. It shows a different participant name.
- App is not using the resize method for normal video elements. When should this be used?
- App is not using the setResolution method for normal video elements. When should this be used?
- I was able to reproduce the issue with logging in the ZoomSDKVideoContainerDelegate delegate methods. None of these were called when the issue occurred, including onCustomVideoSubscribeFail.
- I was worried about some sort of retain issue (the normal video element getting deallocated) but it seems like the Zoom SDK holds a reference to the element until it is told to destroy it.
Normal Video Element creation code:
- (ZoomSDKNormalVideoElement *)createNormalVideoElementForUserID:(NSNumber *)userID
withBounds:(NSRect)bounds {
ZoomSDKVideoContainer *videoContainer = [[[ZoomSDK sharedSDK] getMeetingService] getVideoContainer];
ZoomSDKNormalVideoElement *normalVideoElement = [[ZoomSDKNormalVideoElement alloc] initWithFrame:bounds];
ZoomSDKError zError = [videoContainer createVideoElement:&normalVideoElement];
if (zError != ZoomSDKError_Success) {
AC_LOG_ERROR_ZOOM(@"Failed to create normal video element");
}
[normalVideoElement setUserid:userID.unsignedIntValue];
return normalVideoElement;
}
And the calling code: (not actual, this is summarized)
{
ZoomSDKNormalVideoElement *normalVideoElement = [self createNormalVideoElementForUserID:userID withBounds:containingViewController.view.bounds];
[normalVideoElement.videoView setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable];
[containingViewController.view addSubview:[normalVideoElement getVideoView]];
}