aws / amazon-chime-sdk-js

A JavaScript client library for integrating multi-party communications powered by the Amazon Chime service.
Apache License 2.0
709 stars 477 forks source link

Add support for H.264 profiles besides Constrained Baseline Profile #2830

Closed hensmi-amazon closed 8 months ago

hensmi-amazon commented 8 months ago

Issue #: None

Description of changes: Additional profiles are desired as they are often more likely to use hardware encoder then H.264 CBP. This change also includes changes that allows 'falling-forwards' to more preferred send codecs if limited receivers leave the call.

This also has a fix for the protobuf generation script since node@10 is not available on brew anymore.

Testing:

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

  1. Select H.264 Baseline, Main, or High from Additional options before joining the meeting on Chrome or Safari.
  2. Enable video. Join from another Chrome device.
  3. Join a third attendee from Firefox that will not have support for these profiles. The sender should fall back.
  4. Leave the Firefox attendee. Note that there is a known issue with H.264 High profile on MacOS and there is a bug open with WebRTC, so this will lead to freezes currently. https://bugs.chromium.org/p/chromium/issues/detail?id=1520287 . The docstring indicates that this should not be used with fallbacks.

Checklist:

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

  2. Do you add, modify, or delete public API definitions? If yes, has that been reviewed and approved? yes but the APIs match existing patterns so review is not necessary.

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

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