-
Notifications
You must be signed in to change notification settings - Fork 42
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
RTCDtlsTransport.getRemoteParameters / DTCIceTransport.getRemoteParameters but not on sender / receiver? #494
Comments
In the case of DTLS and ICE, the remote parameters are passed to start(), so the browser can store them and allow them to be retrieved later. In the case of send() and receive() however, only the local parameters are passed as arguments. So it is possible to add getParameters(), but not getRemoteParameters(). |
I agree, one is local vs the other being remote from the origin. So there is a slight difference. I was more questioning the rational for either agreeing to store information on behalf of the developer or not storing at all. Certainly object references need to be stored and retrieved later (because object life time issues are at stake), but we are a bit inconsistent on dictionary based parameters. The reason for exclusion of the local parameters was two reasons:
So I'm not going to comment on 2, but I think the rational behind 1 is inconsistent right now. We do store and allow retrieval for some dictionary information but not for others. So we should either agree that parameters should be stored and fetched to be consistent (and then independently answer part 2 depending on the answer of part 1). |
As I already commented in other issues, retrieving "auto-filled" RTP parameters is useless because at the time we can retrieve them we are already sending media. So option 2 above has no sense IMHO unless we change the API to something like: rtpSender.setParameters(params);
rtpSender.send();
var fullParams = rtpSender.getParameters(); |
@ibc Correct, but option 2 is more about the receiver than the sender; |
Why? Why is more useful to get auto-filled params in the receiver than in the sender? |
@ibc I don't think either use case is particularly strong IMHO; But the sender you always have the option to specify SSRCs if you care; on the receiver, if you don't know the information in advance you have no way to discover what was found on the wire after the fact and getParameters on the receiver would be the only way to obtain that information. |
The API assumes that the human knows how exactly the browser behaves given specific parameters to the |
@ibc if signaling contains all the sender parameters then there's no reason for the receiver to have getParameters because you know what the sender will do. However, if the receiver is setup based upon routing rules (e.g. mux/mid) then the actually SSRCs used are not discoverable via the API and thus receiver reports / contributing sources will not be known by the developer. The sender always has the option to force particular settings in advanced locally, but that's not true of a non-signalled receiver. |
Fine. But may I know why is it so hard to provide auto-filled parameters in the sender? |
@ibc technically not hard. There was push back against it because of its implications on the receiver to have "matching" functionality between them. For a receiver the information is filled over time so it's a changing value (and thus would also imply an event is needed too). So the complexity grew. Thus it was decided we wouldn't do it and if we did at most it would return the same values that were passed in originally (and thus would not give auto-filled values). Plus since the programmer can specify the values prior to calling send the use case to get the auto-filled values out was considered very low value and thus unworthy of expanding the API surface. That's the history behind the decision. |
Fine. But don't forget our bet ;) |
We "store" remote parameters passed into start() for the ICE + DTLS transport for [convenience?], but we don't do it for other things like the parameters passed into send() / receive() for
RTCRtpSender
orRTCRtpReceiver
.We dismissed retrieving the previously passed parameters from the sender/receiver.
Seems these decisions are fairly inconsistent.
The text was updated successfully, but these errors were encountered: