-
Notifications
You must be signed in to change notification settings - Fork 115
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
The prose around "simulcast envelope" falsely implies that simulcast encodings can never be removed #2723
Comments
Re-reading Section 5.4.1, I agree that there is an issue. While the section seems to imply that the simulcast envelope is established by |
Given that RFC8853 requires a reofferer to honor the removal of rids from the answer, and given that RFC8853 also requires the answerer to honor the removal of rids from a reoffer, I think it would be a mistake to have a blanket prohibition on the renegotiation of rids, whatever we end up doing. I think we need to at least support the removal of rids in renegotiation, if only to remain compliant with RFC8853. Prohibiting the addition of rids seems acceptable to me; there's nothing in RFC8853 that requires an answerer to accept new rids in a reoffer, and of course it is already a RFC8853 violation for an answerer to add a rid that is not in an offer. That said, if there's a strong enough desire to allow the addition of rids in renegotiation, it would be acceptable also, but we'd need to think carefully about how that would fit with the automatic selection of scaleResolutionDownBy. My inclination is to avoid this mess unless there's some compelling use-case. What we do with rid reordering is a little more subtle. RFC8853 states that the rid order establishes a transmission preference, but does not say anything about what ordering implies about fidelity; in fact, there are examples where the first rid is the highest fidelity encoding. webrtc-pc is what specifies that the fidelity goes from low to high (and even then, this only applies when creating a set of encodings from |
I should also note that if we do allow rid reordering in a reoffer, we should not mess with [[SendEncodings]] in any way as a result. We should probably just create our answer using the same order, and let it have no other effect. |
I agree with not changing [[SendEncodings]], but then we have descriptions that are not synchronised with [[SendEncodings]]. |
Generally, my preference is to follow the SDP negotiation rules in the IETF specifications wherever possible. While throwing errors when we encounter something valid-but-weird is one way to simplify the web side of things, from an IETF perspective this is a bug in our implementation of RFC 8853. |
Feedback from June 19, 2022 WEBRTC WG Virtual Interim: "Ready for PR" |
This was added in #2081 and, as I read it, is only talking about envelopes established by remote offers to receive simulcast, and the limitations on browser client answers to those. In that case the statement seems true, because SLD disallows anything but unadulterated createAnswer, and AFAIK no API allows JS to reduce layers in answers. I've tried to clarify this in #2760. |
I hope we agree any JS that munges the answer before returning it to the SFU is on its own. |
Spec says "Once the envelope is determined, layers cannot be removed.", but the language for sRD(answer) says that if rids are rejected by an answer, they are removed.
There are a couple of ways to fix this:
Disallowing an answer to remove rids on a previously negotiated sender is probably not appropriate, since this would violate the simulcast spec, which requires the offerer to handle this case regardless of whether this is the initial negotiation or not. I think option 1 is the correct course of action here.
The text was updated successfully, but these errors were encountered: