SDK silently releases and and reconnects to the camera

Using SDK version v4.6.21666.0429.

Before we start a meeting, we use ZoomSDK.getMeetingSettingsHelper().enable720p(true) to request 720p. Usually, this request is not honored and the outgoing video will be stuck at 360p. However, in rare circumstances, the outgoing video starts out 360p and slowly ramps up to 720p. When this happens, we’re noticing the SDK releases the camera and reconnects, probably to request a higher resolution from the hardware. The process is very quick and results in a small video flicker. However the application is never made aware that this has happened. InMeetingServiceListener callbacks such as onUserVideoStatusChanged(), onUserNetworkQualityChanged(), etc are never called.

The reason this is a problem for us is that we do some pre-processing of the camera feed. And when the SDK does this reconnect to the camera, we have no way to know that we need to reconfigure our pre-processing for the new resolution.

Is there a callback we should be listening for when this happens? Would it be possible to add a new callback to InMeetingServiceListener that informs the app when such a camera reset occurs? Perhaps something like onCameraResolutionChanged()?

Thanks!

Hi @vuzix_greg,

Thanks for the post. Regarding your questions:

  1. Setting ZoomSDK.getMeetingSettingsHelper().enable720p(true) is having the maximum resolution to be 720p. However, whether the SDK could go up to 720p or not could be affected by different criteria, such as network quality. What you are mentioning is expected.
  2. When changing the video resolution, it is possible to observe that case that the camera is being reconnected. This is normal behavior.
  3. Normally you do not need to do any extra pre-processing for the camera feed, our SDK has taken care of the camera feed.

Hope this helps. Thanks!

Thanks for the reply @Carson_Chen

We realize that the behavior we are seeing is normal. That is not our concern.

But let’s say that we really need to know when the SDK releases and reconnects to the camera during a meeting. What are our options?

We have a custom use case that is breaking when this camera reconnect happens and a callback would allow us to recover. For example, if onUserVideoStatusChanged() were to fire on camera reconnect, that would be very useful. That’s all we’re looking for is some kind of hint that this happened.

Thanks @vuzix_greg, let me forward your questions to the engineering team and get back to you.

Thanks!

Hi @vuzix_greg,

Thanks for the reply. After consulting with the engineering team, the behavior we are discussing is expected and we do not have any callbacks for camera reconnect.

Thanks!

Thank you for asking the engineering team, @Carson_Chen.

I was able to solve this by using an AvailabilityCallback, which is part of the Camera2 API. I watch for the camera to become available, followed immediately by it becoming unavailable again. That’s enough for me to detect a camera reconnect.

Glad to hear that you have found the solution that works for you. Happy Zooming!