- 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