Skip to content
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

Disable 480p downscale resolution for Chromium browsers on Windows OS #2003

Merged
merged 1 commit into from
Feb 10, 2022

Conversation

ltrung
Copy link
Contributor

@ltrung ltrung commented Feb 10, 2022

Issue #2002:
In Chrome 98 and Windows, videos appear grayscale for 480p when there are 5-8 videos on the call (except the active speakers) and hardware acceleration is on. This issue can be mitigated by turn off hardware acceleration.
Description of changes:
Check if its Chrome 98 and Windows OS then downscale to 360p for 5-8 videos instead of 480p.

Testing:

Can these tested using a demo application? Please provide reproducible step-by-step instructions.
Yes.

  • Join a meeting with 5-8 videos in Chrome 98 Windows.
  • Turn on video
  • Verify that the video is at 360p and appear correctly for both local attendee and remote attendees.

Test with Chrome, Edge, and Opera on Windows.

Checklist:

  1. Have you successfully run npm run build:release locally?
    Yes

  2. Do you add, modify, or delete public API definitions? If yes, has that been reviewed and approved?
    Yes. Add a helper function in browser behavior to check whether 480p needs to be disabled.

  3. Do you change the wire protocol, e.g. the request method? If yes, has that been reviewed and approved?
    No

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

@ltrung ltrung requested a review from a team as a code owner February 10, 2022 20:32
CHANGELOG.md Outdated Show resolved Hide resolved
justindarc
justindarc previously approved these changes Feb 10, 2022
transceiverController.setVideoInput(new MediaStreamTrack());
const numParticipants = 5;
const expectedParams = new DefaultVideoCaptureAndEncodeParameter(
320,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How were these values calculated? I'm not to familiar with NScale, but 320x192 seems like an odd resolution.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh this is just a dummy test case. We do not actually use it at all. The key factor is actual the scale down resolution.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah that makes sense

@@ -279,6 +279,10 @@ export default class DefaultBrowserBehavior implements BrowserBehavior, Extended
return this.isAndroid();
}

disable480pResolutionScaleDown(): boolean {
return /( Chrome\/98\.)/i.test(navigator.userAgent) && this.browser.os.startsWith('Windows');
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this bug reproducible in Chromium? If yes, have we tested this user agent in Chromium on Windows, e.g., Electron?

Copy link
Contributor Author

@ltrung ltrung Feb 10, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We only tested in Edge and Chrome. Chime App uses Electron and I think they did a similar fix. But yeah it affects all Chromium browsers on Windows.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants