Mapping RTX in SDP to ORTC RtpParameters

Hi, this is what a browser wants to send (some ines omitted):

m=video 55154 UDP/TLS/RTP/SAVPF 100 101 96
a=rtpmap:100 VP8/90000
a=rtpmap:101 VP9/90000
a=rtpmap:96 rtx/90000
a=fmtp:96 apt=100
a=ssrc-group:FID 1762798695 3360043549
a=ssrc:1762798695 cname:S1TpdiJRYh4zmAJw
a=ssrc:3360043549 cname:S1TpdiJRYh4zmAJw

I want to generate the RTCRtpParameters for the corresponding
RTCRtpSender in ORTC.

As you can see, there are three codecs (VP8:100, VP9:101, rtx:96), all
of them with clockRate 90000.

According to "a=fmtp:96 apt=100", rtx is just used for VP8:100 codec.
And according to the a=ssrc and a=ssrc-group lines, there are two SSRC
(1762798695 and 3360043549) for sending VP8, VP9 and rtx.

Now the questions:

1) If the browser also wishes to send rtx for VP9:101, should it add
another rtx codec as follows (and of course a new SSRC)?:

  a=rtpmap:97 rtx/90000
  a=fmtp:97 apt=101
  a=ssrc-group:FID 1762798695 3360043549 4444444444
  a=ssrc:4444444444 cname:S1TpdiJRYh4zmAJw

2) If 1) is correct, how to map it in ORTC? According to the spec:

  9.12.1 Dictionary RTCRtpRtxParameters Members

    The payload type to use for retransmission. If unset,
    RTCRtpCodecParameters.payloadType for the "rtx" codec is used.

    The SSRC to use for retransmission, as specified in [RFC4588].

But how to specify the relationship between rtx:96 and VP8:100, and
rtx:97 and VP9:101? Should it be done by setting 100 and 101 in the
`codecPayloadType` of each RtpEncondingParameters object?

3) How to know which SSRC will be used for VP8:100+VP9:101, rtx:96,
and rtx:97 streams? The line ssrc-group just states that those tree
SSRC values have a relationship, but RFC4588 does not define how each
SSRC in a group is associated to the sending codecs.

Iñaki Baz Castillo

Received on Thursday, 3 March 2016 23:15:01 UTC