Description
During our testing phase, one of our testers encountered an issue where all videos rendered black except for one. Out of 20+ testers, he is the only one experiencing this issue.
After investigating potential hardware-related causes, we discovered that the SharedArrayBuffer is enabled on his device (confirmed using typeof SharedArrayBuffer === 'function' and crossOriginIsolated), but features like Gallery View, Noise Cancellation, and Blur Background are not working.
Browser Console Error
Warnings:
WebGL: INVALID_OPERATION: uniform1i: location is not from the associated program.
WebGL: INVALID_OPERATION: uniform4f: location is not from the associated program.
WebGL: too many errors, no more errors will be reported to the console for this context.
Please see below screenshot for console warnings.
Screenshots:
imgur.com/a/Vz22uFV
imgur.com/a/FPLplDM
Which Web Video SDK version?
VideoSDK 1.11.10 for Web
We will update the SDK to the latest version. However, is there a way to determine whether a device is low performance even if the SharedArrayBuffer is enabled?
Aside from the following code, which returns true: typeof SharedArrayBuffer === 'function' && window.crossOriginIsolated
is there a way to determine whether a device is low performance
We use navigator.hardwareConcurrency to detect the number of CPU cores. If the number of cores is less than 4, it’s considered a low-performance device.
I spoke with the tester experiencing the issue, and he reported that when he entered navigator.hardwareConcurrency in his browser’s console, the output was 4. Following this, we asked the other testers to check the number of CPU cores on their devices using the code you suggested.
To our surprise, a few other testers who haven’t encountered any issues have the same number of CPU cores as the tester with the problem and are also using the same model of MacBook Pro. The only difference appears to be their OS version.
Given this, it seems we can’t rely on navigator.hardwareConcurrency to determine whether a device is low-performing. Additionally, you mentioned in your last comment that the value needs to be less than 4, but the tester’s device has exactly 4 CPU cores. Is there any other method we can use to determine if a device doesn’t fully support the Zoom Video SDK, even when SharedArrayBuffer is enabled?
We implemented a solution based on the suggestions you provided. Specifically, we now immediately tag a device as incompatible and switch the view from gallery to 1:1 if any of the following code snippets return false:
What are the minimum system requirements to use and ensure compatibility with the Zoom Video SDK?
This is our browser support chart, but we will do our best to support older versions of browsers and platforms.
Why does Zoom Desktop work on my device, but the Video SDK does not?
Due to differences in technical implementation, the performance of the Web version is lower compared to the Native version, and the Web implementation also has higher system requirements.
Will the SDK become compatible with lower-performance devices in the future, or is this a permanent limitation?
Yes. We are working on the new video solution , which will be coming soon (around October).
Thank you for the detailed response and the link to the browser support chart.
I appreciate the explanation regarding the differences in system requirements between the Zoom Desktop and the Video SDK. It’s helpful to understand the technical distinctions.
It’s great to hear that you’re working on a new video solution that will improve compatibility with lower-performance devices. We look forward to the updates around October.
In the meantime, we’ll continue to work within the current limitations and monitor for any updates from your team.