-
Notifications
You must be signed in to change notification settings - Fork 65
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
[MM-52657] AV1 support #795
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice! Non-blocking suggestions. :)
webapp/src/client.ts
Outdated
if (this.config.simulcast) { | ||
logWarn('both simulcast and av1 support are enabled'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What about prioritizing AV1 over simulcast?
And either way, maybe we should throw a configuration error if the system admin selects both? Otherwise they will select them and then wonder why they're not seeing any improvement...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@cpoile I honestly didn't want to overcomplicate it for some experimental features that we don't yet know if we want to retain. Our config can still be changed by different means (e.g., JSON file), so then we'd have to decide what to do in case the mutually exclusive settings are turned on (e.g. fail on start?).
The idea of logging the warning was that it would be trivial to determine if they fall into such a case. This is also documented in the config itself. I feel that may be enough for the time being.
@DHaussermann This is ready for review. What I am looking for QA wise is making sure we are not introducing regressions with screen sharing on any of our supported clients, with a special focus on mobile. So I'd like to test the following cases: Presenter side:
Receiving side:
For mobile, we should test both existing app and a build from the new PR branch -> mattermost/mattermost-mobile#8037 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested and passed
- Deployed the plugin locally and enabled AV1 codec
- Tested that browsers can send and receive video for screen share
- Tested Firefox, Chrome, Safari and MM Desktop app for send and recieve
- Tested production mobile build can receive video (android and iOS)
- Tested Mobile builds from linked PR can receive video (android and iOS)
- With all tests ensure latency was about on par by scrolling vertically on a static page from the client sending and ensuring lag was nothing unexpected on the client receiving.
LGTM!
@streamer45 a couple unrelated questions here:
|
|
Thanks. Re: 2. I don't actually see any instances where the share is not in the modal once it is enabled. |
Summary
PR adds experimental support for encoding screen-sharing tracks using the AV1 codec.
Changes should be backward compatible with regard to older clients since we must always send a fallback VP8 track.
We are also bumping the minimum
rtcd
version since some breaking changes to the join event payload were required.Related PRs
mattermost/rtcd#150
Ticket Link
https://mattermost.atlassian.net/browse/MM-52657