Taylor said:
a. Do we need setCodecPreferences() to be able to modify codec-specific parameters?
I'd say yes. Just the example of the opus "stereo" parameter is compelling enough to me. Chrome currently doesn't offer "stereo=1" by default, but it would be completely reasonable for applications to want it. This issue was brought to my attention just recently with Chrome Remote Desktop<https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcs.chromium.org%2Fchromium%2Fsrc%2Fremoting%2Fprotocol%2Fwebrtc_transport.cc%3Ftype%3Dcs%26q%3Dwebrtc_transport%26l%3D83&data=02%7C01%7CBernard.Aboba%40microsoft.com%7Cb7e8aaec6d7e4de22dcd08d45a7f5038%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636232950239875295&sdata=W8O4HK8Pm7iM29sxZ0QrnvA6p68hsPHKBkQ9%2FIi3Xxg%3D&reserved=0>.
If we go this route, I'd highly prefer changing sdpFmtpLine to a dictionary if we can be certain that all parameters are (and will be) key/value pairs. If we don't do this, then we're back to SDP munging (albeit, very contained SDP munging).
[BA] What attributes in the RTCRtpCodecParameters dictionary would become writeable via setCodecPreferences (e.g. payLoadType, mimeType, clockRate, channels, sdpFmtpLine)? Within an sdpFmtpLine dictionary, would only some entries be writeable?