-
-
Notifications
You must be signed in to change notification settings - Fork 237
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
Chrome111 handler #248
Chrome111 handler #248
Conversation
- No longer assume L1T2 because then, if the browser enables 3 temporal layers (Chrome 74 in Linux) mediasoup will drop the temporal layer 2 (full fps) and that's terrible.
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.
👍
… transceiver - Also ensure we use same number of temporal layers in every stream
Released in mediasoup-client 3.6.80 |
Did anybody figure out a fix? It seems it does work if I do not include any scalabilityMode but how to make it work with scalabilityMode? |
Please report the issue in libwebrtc project if you wish. Let's not use this PR as a forum. |
The new
Chrome111
handler usesscalabilityMode
when in Chrome/Chromium/Edge >= M111 (which supportsencpding.scalabilityMode
), meaning that finally we can decide desired number of spatial and temporal layers.Chrome111
andChrome74
here: https://www.diffchecker.com/tIkXlhzv/Some references:
scalabilityMode
in libwebrtc for VP8: https://webrtc.googlesource.com/src/+/a1a7c638ece600a0d9e2a1f7d77e1a9050737e90/modules/video_coding/codecs/vp8/vp8_scalability.hscalabilityMode
in libwebrtc for VP9 and H264: https://webrtc.googlesource.com/src/+/ecfe8da46b22883363a66d0909d7d2246cb13c48/modules/video_coding/svc/create_scalability_structure.ccIssues
NOTE: These issues are not necessarily intended for this PR.
ISSUE 1: If the user creates a VP8 producer with 3 encodings but do not include
scalabilityMode
into them, then Chrome will select 'L3T3' but we will signal "1 spatial and 1 temporal layer" to mediasoup, so consumers will just receive the temporal layer 0 of each simulcast stream.ISSUE 2: We must allow creation of a
SimulcastConsumer
in mediasoup side (instead ofSingleConsumer
) when the producerRtpParameters
have a singleencoding
withscalabilityMode
other than 'L1T1'.XxxxxConsumer
classes into one as discussed some time ago.ISSUE 3: User may pass different
scalabilityMode
for each encoding in simulcast (it works). Problem is that in mediasoup land we assume that number of temporal layers is the same for all the simulcast streams. In fact AFAIR we read it from the first encoding.ISSUE 4: There are no temporal layers when using H264 simulcast, but it doesn't even work using
Chrome74
handler in Chrome or Canary old or latest versions. ¯_(ツ)_/¯ISSUE 5: Screen sharing with VP9 (with or without SVC) does not work in Canary M111. No idea. It wouldn't be the first time something similar happens in Canary last version.