- From: Sergio Garcia Murillo <sergio.garcia.murillo@gmail.com>
- Date: Tue, 12 Apr 2016 10:19:05 +0200
- To: Justin Uberti <juberti@google.com>, Peter Thatcher <pthatcher@google.com>
- Cc: "public-ortc@w3.org" <public-ortc@w3.org>
- Message-ID: <570CAF79.50103@gmail.com>
Hi Justin, Peter, According to RFC 7656, there are three "usages" of SVC * SRST: Single RTP stream on a Single media Transport * MRST: Multiple RTP streams on a Single media Transport * MRMT: Multiple RTP streams on Multiple media Transports Currently, only SRST and MRST are supported as all the encoding in the SVC must be in the same RTCRtpSender. The current spec also gives the solution on how to support MRMT with same API, just make the encodingIds global, so the SVC encodings could be owned by different RTCRtpSenders. Same terminology could be used on simulcast, and also only SRST and MRST would be supported by current ORTC spec, and MRMT would be impossible with current API. Regarding performance of doing simulcast with several encoders vs single encoder instance, I fail to see how it could re-use encoding process for several unrelated streams, but if you say so, I have to believe you. This could be overcome with a similar solution as the one proposed for SVC MRMT, use the same encodingId in all encodings belonging to the same simulcast across different RTPSenders. We would handle simulcast and SVC exactly in the same way: * SRST: Single RTPSender, one payload per encoding, one transport * MRST: Multiple RTPSenders, one transport * MRMT: Multiple RTPSenders, multiple transports I completely disagree with the "easiness of usage" of current API, I feel that we are just using a jsonized-m-line containing all the information and passing it to a RTCPeerconnection-like object that is almost an static function. In this regards, IMHO, this is against the reasons why ORTC was created on the first place, and I don't see the benefits from moving from WebRTC to ORTC. Anyway, as stated above my main concern is the easiness of use, and this was a non-distruptive proposal to try to improve it, while doing the minimal changes required. I will follow Robin advice (https://github.com/openpeer/ortc/issues/440#issuecomment-207794630) and work on a set of slides to see if at least we agree on which are the issues with current API design (maybe everyone else feels they are fine as they are, and we are wasting our time here). Best regards Sergio On 12/04/2016 6:31, Justin Uberti wrote: > Agree with Peter's argument here. > > It makes no sense to have multiple RtpSenders when doing SVC, and > simulcast is just a special case of SVC. > > On Fri, Apr 8, 2016 at 7:31 AM, Peter Thatcher <pthatcher@google.com > <mailto:pthatcher@google.com>> wrote: > > Here are the minutes from the main meeting: > > https://www.w3.org/2015/09/10-webrtc-minutes#item08 > > But that's probably hard to read. > > You could also check this more recent mailing list thread where I > suggested using multiple RtpSenders in certain (bizarre) simulcast > scenarios, and the disinterest in doing so. > > https://lists.w3.org/Archives/Public/public-webrtc/2016Feb/0020.html > > > My memory is a bit fuzzy, but I remember the main reasons being: > - It's much easier to reason about performance degradation if you > know there are 3 encodings in one RtpSender than 3 RtpSenders. > - It's much easier for implementations to get the performance > right with 3 encodings in one RtpSender than 3 RtpSenders. > - When doing simulcast, it's easier to use the API with one > RtpSender than many > - Keeping simulcast and SVC more similar is nicer than making them > look completely different. It's not reasonable to have 3 > RtpSenders when doing SVC. > > On Fri, Apr 8, 2016 at 1:25 AM, Sergio Garcia Murillo > <sergio.garcia.murillo@gmail.com > <mailto:sergio.garcia.murillo@gmail.com>> wrote: > > On 07/04/2016 23:05, Peter Thatcher wrote: >> >> >> On Thu, Apr 7, 2016 at 8:17 AM, Sergio Garcia Murillo >> <sergio.garcia.murillo@gmail.com >> <mailto:sergio.garcia.murillo@gmail.com>> wrote: >> >> Hi Peter, >> >> >> Also take note that 2, with current propossal can be >> implemented in two ways, one RTPSender per ssrc (same as >> my proposal) or all ssrcs in same RTPSender. In order to >> implement 3 with current proposal it is only possible to >> do it with several RTPSenders. >> >> >> WebRTC only supports #2, and I think ORTC should only >> support #2. You are correct that with the current WebRTC and >> ORTC APIs, one could accomplish the same thing with one >> RtpSender or many. But requiring many is an option that was >> rejected by the WebRTC WG. >> > > Do you know what were the objections for rejecting multiple > RTPSenders for simulcast (with ssrc-multiplexing over same > transport)? > It is something that needs to be supported anyway by the > browser and given that each layer is an independent encoder > there should be no performance penalty. > > I mean, currently we can do this (in pseudocode) > > RTPSender.send({ > encodings: [ > {ssrc:1,pt:100,codec:vp8,}, > {ssrc:2,pt:100,codec:vp8,resolutionScale: 2.0}, > ] > }) > > or > > RTPSender1.send({ > encodings: [ > {ssrc:1,pt:100,codec:vp8,}, > ] > }) > > RTPSender2.send({ > encodings: [ > {ssrc:2,pt:100,codec:vp8,resolutionScale: 2.0}, > ] > }) > > Both will produce the same result > > Best regards > Sergio > > > > > > > >
Received on Tuesday, 12 April 2016 08:19:33 UTC