[webrtc-svc] Returning the default scalabilityMode problematic after fallback (#75)

Orphis has just created a new issue for https://github.com/w3c/webrtc-svc:

== Returning the default scalabilityMode problematic after fallback ==
Currently, if we assume that applications' code is unaware of the SVC API, the following could happen with a user agent not supporting the SVC API:

- User configures their encoder to use VP9. Since SVC is not configurable, the user agent choses L1T3 automatically for its implementation of VP9.
- User calls getParameters(), no scalabilityMode is returned, changes the bitrate and then calls setParameters().
- User renegotiates and fallbacks to use VP8. Since SVC is not configurable, the user agent choses L1T2 automatically, which is different from the VP9 default.

With a user agent supporting the SVC API:

- User configures their encoder to use VP9. Since SVC is not configured, L1T3 is chosen automatically.
- User calls getParameters(), reads L1T3 and only updates the bitrate and calls setParameters().
- User renegotiates and fallbacks to use VP8. Since SVC was configured to L1T3 and VP8 supports it, then it sticks.


The problem is that it is not possible for the user agent to know whether the user would prefer the default mode automatically for each encoder, even after calling get/setParameters() or if the user intended to lock in a specific value.

As this is a backwards compatibility problem, I propose that we change getParameters() to only return a value that was previously set. If no value is set, then the user agent should use the default value for the encoder. Users wanting to know the current value used can refer to the [stats](https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-scalabilitymode).


Please view or discuss this issue at https://github.com/w3c/webrtc-svc/issues/75 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config

Received on Thursday, 12 January 2023 13:33:15 UTC