SharedArrayBuffer is Enabled but Features like Gallery View, Noise Cancellation, and Blur Background are Not Working

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:

  1. imgur.com/a/Vz22uFV
  2. imgur.com/a/FPLplDM

Which Web Video SDK version?
VideoSDK 1.11.10 for Web

Device:

  • Device: MacBook Pro (A1708 (EMC 3164))
  • OS: Ventura v13.6.6
  • Browser: Chrome/Safari
  • Browser Version: 126.0.6478.183/16.6 (18615.3.12.11.2)

Additional context
You can review the latest session we conducted:
Participant with the issue: Dmitry M.
110 0054 6919
mjpHIt2IQtumJz4g+VL76A==

Hey @mark.eubans

Thanks for your feedback.

  • Device: MacBook Pro (A1708 (EMC 3164))

It could be due to insufficient device performance.

However, in the latest version (1.12.0), we have made some optimizations that allow devices with lower performance to support gallery view( 2 videos).

Thanks
Vic

Hello @vic.yang,

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

Thanks,
Mark

Hey @mark.eubans

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.

Thanks
Vic

Got it, @vic.yang. I will apply the changes you recommended and will update here if that fixes the issue.

Thank you,
Mark

Hi @vic.yang,

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?

Hey @mark.eubans

Thanks for sharing the detailed information with us.

To confirm the cause of this issue, could you please check the return values of these two methods?

stream.isSupportMultipleVideos() // is support gallery view
stream.isSupportVirtualBackground() // is support virtual background

Thanks
Vic

Hello @vic.yang,

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:

typeof SharedArrayBuffer === 'function' && window.crossOriginIsolated
navigator.hardwareConcurrency >= 4
stream.isSupportMultipleVideos()
stream.isSupportVirtualBackground()

This approach works for us, but the team still has some questions that I need your help with:

  1. What are the minimum system requirements to use and ensure compatibility with the Zoom Video SDK?
  2. Why does Zoom Desktop work on my device, but the Video SDK does not?
  3. Will the SDK become compatible with lower-performance devices in the future, or is this a permanent limitation?

Thanks,
Mark

Hey @mark.eubans

Thanks for your feedback.

  1. 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.

  1. 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.

  1. 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).

Thanks
Vic

1 Like

Hello @vic.yang,

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.

Thanks again for your support.

Best regards,
Mark