- From: Peter Thatcher <pthatcher@google.com>
- Date: Tue, 21 Oct 2014 10:51:11 -0700
- To: Sergio Garcia Murillo <sergio.garcia.murillo@gmail.com>
- Cc: "public-ortc@w3.org" <public-ortc@w3.org>
- Message-ID: <CAJrXDUFx+5oeM=mOxDMMbLRzh1=qjECi_Ka93v0k72EtsSid7w@mail.gmail.com>
On Tue, Oct 21, 2014 at 1:15 AM, Sergio Garcia Murillo < sergio.garcia.murillo@gmail.com> wrote: > Hi Peter, > > Re. Session-Multiplexing support on ORTC. I am perfeclty fine, and I think > that makes sense, but on RTP-USAGE draft it says : > > Receivers are REQUIRED to implement support for RTP retransmission > packets [RFC4588 <https://tools.ietf.org/html/rfc4588>]. > > > So either we ask webrtc to narrow that requirement to support > ssrc-mutliplexing only, or we should explicitly state in the ORTC draft > that we doesn't support session multiplexing. > > Does that phrase mean there must be a way to send RTX, or there must be all possible ways to send RTX? It seems a bit ambiguous to me. By the way, I'm pretty sure none of the current WebRTC implementations support session-multiplexing RTX right now (I'm sure Chrome doesn't support it). > Re. setting the ssrc in the RtxParameters, thanks for the clarification, I > missed it completely. For the sending side it solves the issue, but I am > not sure it will work in there receiver side when talking to an WebRTC > endpoint. > > In the SDP offer of an webrtc endpoint both ssrcs of the media and rtx > streams are informed within an ssrc-group attribute, but it is not possible > to tell in advance which of both ssrcs is the rtx one, as an example of > current chrome offer (removing unrelated sdp attributes). > > v=0 > o=- 7628761646234407083 2 IN IP4 127.0.0.1 > s=- > t=0 0 > a=group:BUNDLE audio video > a=msid-semantic: WMS DWpWct9bWKzTMNYZn5bKVgwZ8Mfy2EtfqBY5 > m=audio 62164 RTP/SAVPF 111 103 104 0 8 106 105 13 126 > a=rtpmap:111 opus/48000/2 > a=fmtp:111 minptime=10 > a=ssrc:3415393492 cname:erS7E/KHLYKTejNs > a=ssrc:3415393492 msid:DWpWct9bWKzTMNYZn5bKVgwZ8Mfy2EtfqBY5 > 2d6a25e5-0e71-4da4-9f92-457f265b42ad > a=ssrc:3415393492 mslabel:DWpWct9bWKzTMNYZn5bKVgwZ8Mfy2EtfqBY5 > a=ssrc:3415393492 label:2d6a25e5-0e71-4da4-9f92-457f265b42ad > m=video 62164 RTP/SAVPF 100 116 117 96 > a=mid:video > a=rtpmap:100 VP8/90000 > a=rtpmap:116 red/90000 > a=rtpmap:117 ulpfec/90000 > a=rtpmap:96 rtx/90000 > a=fmtp:96 apt=100 > a=ssrc-group:FID 345259865 2693756249 > a=ssrc:345259865 cname:erS7E/KHLYKTejNs > a=ssrc:345259865 msid:DWpWct9bWKzTMNYZn5bKVgwZ8Mfy2EtfqBY5 > c0134f05-e7c2-4afd-a979-4e224de5eb91 > a=ssrc:345259865 mslabel:DWpWct9bWKzTMNYZn5bKVgwZ8Mfy2EtfqBY5 > a=ssrc:345259865 label:c0134f05-e7c2-4afd-a979-4e224de5eb91 > a=ssrc:2693756249 cname:erS7E/KHLYKTejNs > a=ssrc:2693756249 msid:DWpWct9bWKzTMNYZn5bKVgwZ8Mfy2EtfqBY5 > c0134f05-e7c2-4afd-a979-4e224de5eb91 > a=ssrc:2693756249 mslabel:DWpWct9bWKzTMNYZn5bKVgwZ8Mfy2EtfqBY5 > a=ssrc:2693756249 label:c0134f05-e7c2-4afd-a979-4e224de5eb91 > > > So, at least that I am aware of, it is not possible to now in advance > which of 345259865 or 2693756249 corresponds to the rtx stream. In this > case, the ortc implementation may still behave correctly as only one of the > streams in the bundle has the rtx codec, but not sure how would it be able > to choose what stream an rtx packets belong, if for example the audio > stream has also a rtx codec, or there is more than one video stream with > rtx in the rtp session. > In Chrome, that SDP is interpreted to mean that the RTX ssrc is 2693756249, which makes it unambiguous and possible to know in advance. ORTC follows the same model: it's unambiguous and possible to know in advance. > > Best regardrs > Sergio > > > > On 20/10/2014 19:21, Peter Thatcher wrote: > > You can use ssrc-multiplexing by setting the SSRC of the RtxParameters > in RtpEncodingParameters. RtcpParameters is not the right place for this. > > Session-multiplexing is not supported by ORTC. > > > > On Mon, Oct 20, 2014 at 2:58 AM, Sergio Garcia Murillo < > sergio.garcia.murillo@gmail.com> wrote: > >> Hi all, >> >> I am currently implementing the RTX RFC on my MCU, so I am a bit obsessed >> with this topic.. :) >> >> I have been looking how ORTC implements it, and not really sure if >> current API would allow to implement it. >> >> According to rfc588, it is possible to do to kind of >> >> Session-multiplexing: scheme by which the original stream and the >> associated retransmission stream are sent into two different RTP >> sessions. >> >> SSRC-multiplexing: scheme by which the original stream and the >> retransmission stream are sent in the same RTP session with different >> SSRC values. >> >> >> >> I am not yet an expert on ORTC apis, so please correct me if I am wrong, >> but it seems that the only way to set/retrieve the ssrc of the stream is >> via the RTCRtpParameters. So I think that in order to support >> SSRC-multiplixing, it would be needed to change: >> >> dictionary RTCRtpParameters { DOMString muxId <http://ortc.org/wp-content/uploads/2014/10/ortc.html#widl-RTCRtpParameters-muxId> = ""; sequence<RTCRtpCodecParameters <http://ortc.org/wp-content/uploads/2014/10/ortc.html#idl-def-RTCRtpCodecParameters>> codecs <http://ortc.org/wp-content/uploads/2014/10/ortc.html#widl-RTCRtpParameters-codecs>; sequence<RTCRtpHeaderExtensionParameters <http://ortc.org/wp-content/uploads/2014/10/ortc.html#idl-def-RTCRtpHeaderExtensionParameters>> headerExtensions <http://ortc.org/wp-content/uploads/2014/10/ortc.html#widl-RTCRtpParameters-headerExtensions>; sequence<RTCRtpEncodingParameters <http://ortc.org/wp-content/uploads/2014/10/ortc.html#idl-def-RTCRtpEncodingParameters>> encodings <http://ortc.org/wp-content/uploads/2014/10/ortc.html#widl-RTCRtpParameters-encodings>; RTCRtcpParameters <http://ortc.org/wp-content/uploads/2014/10/ortc.html#idl-def-RTCRtcpParameters> rtcp <http://ortc.org/wp-content/uploads/2014/10/ortc.html#widl-RTCRtpParameters-rtcp>; >> }; >> >> by >> >> dictionary RTCRtpParameters { DOMString muxId <http://ortc.org/wp-content/uploads/2014/10/ortc.html#widl-RTCRtpParameters-muxId> = ""; sequence<RTCRtpCodecParameters <http://ortc.org/wp-content/uploads/2014/10/ortc.html#idl-def-RTCRtpCodecParameters>> codecs <http://ortc.org/wp-content/uploads/2014/10/ortc.html#widl-RTCRtpParameters-codecs>; sequence<RTCRtpHeaderExtensionParameters <http://ortc.org/wp-content/uploads/2014/10/ortc.html#idl-def-RTCRtpHeaderExtensionParameters>> headerExtensions <http://ortc.org/wp-content/uploads/2014/10/ortc.html#widl-RTCRtpParameters-headerExtensions>; sequence<RTCRtpEncodingParameters <http://ortc.org/wp-content/uploads/2014/10/ortc.html#idl-def-RTCRtpEncodingParameters>> encodings <http://ortc.org/wp-content/uploads/2014/10/ortc.html#widl-RTCRtpParameters-encodings>; <http://ortc.org/wp-content/uploads/2014/10/ortc.html#idl-def-RTCRtcpParameters>*sequence<RTCRtcpParameters <http://ortc.org/wp-content/uploads/2014/10/ortc.html#idl-def-RTCRtcpParameters>> rtcps <http://ortc.org/wp-content/uploads/2014/10/ortc.html#widl-RTCRtpParameters-rtcp>;* >> }; >> >> >> Regarding how to implement the Session-Multiplexing (if needed to), I >> think it would be more complex, as it would require to add some kind of >> RTCRtpSenderGroup and RTCRtpReceiverGroup objects that would make it >> possible to group several sender/receivers together. >> >> Best regards >> Sergio >> >> > >
Received on Tuesday, 21 October 2014 17:52:21 UTC